1 2009-05-13 Nathan Sidwell <nathan@codesourcery.com>
3 * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
4 * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
6 * config/m68k/m68k.h (FL_UCLINUX): Define.
8 2009-05-13 Jan Hubicka <jh@suse.cz>
10 * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
12 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
14 * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
15 unless -fschedule-insns is specified.
17 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
20 * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
21 TARGET_EXPAND_CBRANCHDI4.
22 * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
23 * config/sh/sh.opt (mexpand-cbranchdi): Remove.
24 (cmpeqdi): Fix comment.
26 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
28 * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
29 (sh_legitimate_address_p): Likewise.
30 * config/sh/sh.c (sh_legitimate_index_p): New.
31 (sh_legitimate_address_p): Likewise.
32 * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
33 (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
34 (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
35 (MAYBE_BASE_REGISTER_RTX_P): New macro.
36 (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
37 (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
38 (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
39 (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
40 (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
42 2009-05-12 Jan Hubicka <jh@suse.cz>
44 * tree-inline.c (estimate_operator_cost): Add operands;
45 when division happens by constant, it is cheap.
46 (estimate_num_insns): Loads and stores are not having cost of 0;
47 EH magic stuff is cheap; when computing runtime cost of switch,
48 use log2 base of amount of its cases; builtin_expect has cost of 0;
49 compute cost for moving return value of call.
50 (init_inline_once): Initialize time_based flags.
51 * tree-inline.h (eni_weights_d): Add time_based flag.
53 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
55 * df-core.c: Update head documentation.
57 2009-05-12 Michael Meissner <meissner@linux.vnet.ibm.com>
60 * rs6000.c (rs6000_generate_compare): Use op1b instead of
61 shadowing exisiting variable op1.
63 2009-05-12 Uros Bizjak <ubizjak@gmail.com>
66 * config/i386/driver-i386.c (processor_signatures): New enum.
67 (SIG_GEODE): Move from vendor_signatures to processor_signatures.
68 (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
69 processor signature to detect geode processor.
71 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
75 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
77 * optabs.c (prepare_cmp_insn): Temporarily disable test that
78 causes spurious differences between trunk and cond-optab branch.
80 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
82 * dojump.c (compare_from_rtx): Delete.
83 * expmed.c (emit_store_flag): Only try cstore_optab. Canonicalize
84 any MODE_CC mode to the cstorecc4 pattern. Use prepare_operand, fail
85 if the comparison does not satisfy the predicate; test predicates for
86 operands 2 and 3 of a cstore pattern. Don't try cstore optab
87 further if one existing pattern fails.
88 * expr.h (compare_from_rtx): Delete.
89 (prepare_operand): Declare it.
90 * optabs.c: Change "lib call" to "libcall" throughout.
91 (bcc_gen_fctn, setcc_gen_code, trap_rtx,
92 HAVE_conditional_trap, emit_cmp_insn): Delete.
93 (can_compare_p): Delete cmp_optab case.
94 (prepare_float_lib_cmp): Return an rtx and a machine mode.
95 Accept other parameters by value.
96 (prepare_operand): Make non-static.
97 (prepare_cmp_insn): Return an rtx and a machine mode. Accept
98 other parameters by value. Try to widen operands here based on
99 an optab_methods argument and looking at cbranch_optab.
100 (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
101 loop. Use cbranch_optab directly.
102 (emit_cmp_and_jump_insns): Fix comment. Adjust call to
103 prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
105 (emit_conditional_move, emit_conditional_add): Inline what's needed
106 of compare_from_rtx, using new prepare_cmp_insn for the rest.
107 (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
108 with COMPARE. Move cmov_optab and cstore_optab above
109 with cbranch_optab, move cmp_optab down with ucmp_optab,
110 remove tst_otpab. Do not initialize trap_rtx.
111 (gen_cond_trap): Do it here. Use ctrap_optab. Test predicate
112 for trap code. Do not check HAVE_conditional_trap. Use
113 prepare_cmp_insn. Accept no predicate for operand 3.
114 * optabs.h (OTI_cmp): Mark as used only for libcalls.
115 (OTI_ctrap, ctrap_optab): New.
117 (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
118 * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
119 with lookup of ctrap_optab.
120 * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn,
121 setcc_gen_code): Delete.
124 * combine.c (combine_simplify_rtx, simplify_set): Do not
125 special case comparing against zero for cc0 machines.
126 * simplify-rtx.c (simplify_binary_operation_1): Never remove
127 COMPARE on cc0 machines.
128 (simplify_relational_operation): Return a new expression when
129 a COMPARE could be removed.
130 * final.c (final_scan_insn): Compare cc_status values
131 against LHS of a (compare FOO (const_int 0)) cc0 source.
132 Also check if cc_status.value is the full compare.
134 * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
135 (cstoreMM4): Document.
136 (conditional_trap): Document ctrapMM4 instead.
137 (sync_compare_and_swapMM): Refer to cbranchcc4.
138 (Dependent Patterns): Eliminate obsolete information referring to
139 the old jump optimization phase.
140 (Canonicalization): Include cbranchcc4 case, omit canonicalization
141 of compares with 0 on cc0 machines.
142 (Jump Patterns): Refer to MODE_CC jump patterns preferably,
143 avoiding references to cc0. Remove text about storing operands
145 * doc/tm.texi (Condition Codes): Include blurb on different
146 condition code representations, separate into subsections for
147 CC0, MODE_CC and conditional execution.
149 * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
150 alpha_emit_setcc): Accept operands and a machine mode.
151 * config/alpha/alpha.c (alpha_emit_conditional_branch):
152 Get code/op0/op1 from operands, use machine mode argument
153 instead of alpha_compare.fp_p. Emit the branch here.
154 (alpha_emit_setcc): Likewise, and return boolean.
155 (alpha_emit_conditional_move): Likewise. Assert that
156 cmp_op_mode == cmp_mode, and simplify accordingly.
157 * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
158 * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
159 (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
161 (stack probe test): Use cbranchdi4.
162 * config/alpha/predicates.md (alpha_cbranch_operator): New.
164 * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
165 * config/arc/arc.h (movsicc, movsfcc): Use it.
166 (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
167 (cbranchsi4, cstoresi4): New.
168 (cmpsi, bCC and sCC expanders): Remove.
170 * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
171 * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
172 * config/arm/predicates.md (arm_comparison_operator): Only include
173 floating-point operators if there is a hardware floating-point unit.
174 * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
175 deferring to cbranch_cc and cstore_cc respectively.
176 (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
177 cbranch_cc, cstore_cc): New.
178 (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
180 (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
182 * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
183 * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
185 (adjust_insn_length): Adjust calls.
186 (avr_reorg): Handle (compare (foo) (const_int 0)).
187 * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
188 (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
189 (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
190 (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
192 (cbranchqi4, cbranchhi4, cbranchsi4): New.
193 (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
195 * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
196 (cbranchsi4, cstorebi4, cstoresi4): New.
197 (movbisi): This insn is duplicate, split it to zero_extend.
198 * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
199 (bfin_gen_compare): Do not use them. Emit VOIDmode SET, not BImode.
200 (bfin_optimize_loop): Use cbranch expander.
201 * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
202 * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
203 (bfin_bimode_comparison_operator): ... this.
204 (bfin_direct_comparison_operator): New.
206 * config/cris/cris.c (cris_normal_notice_update_cc): Look
207 inside (compare FOO (const_int 0)).
208 (cris_rtx_costs): Handle ZERO_EXTRACT.
209 * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
210 (*tstdi_non_v32): Fold in *cmpdi_non_v32.
211 (*tstdi_v32): Delete.
212 (*cmpdi_non_v32): Add M alternative for operand 1.
213 (cmpsi, cmp<mode>): Make private.
214 (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
216 (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
218 * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
219 (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
220 (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
221 (cc_reg_operand): New.
223 * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
224 crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
225 * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
226 * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
227 crx_expand_scond): Delete.
229 * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
231 * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
232 * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
234 * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
235 cstoresi4, cstoresf4, cstoredf4): New.
236 (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
237 * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
238 Receive the entire operands array.
239 * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
240 * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
241 * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
242 Get test/op0/op1 from the operands array.
243 (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
245 * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
246 (h8300_expand_store): New.
247 * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
249 (h8300_expand_branch): Emit compare here. Adjust for new arguments.
250 (h8300_expand_store): New.
251 * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
252 or do not try to produce (set (cc0) REG).
253 (peepholes): Wrap arguments with COMPARE. Add a peephole to
254 change a compare into a move to a scratch register. Disable some
255 peepholes when comparing with zero.
256 (tstsi, tsthi, tstsi, cmpqi): Make private.
259 (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
262 * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
263 ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
264 (ix86_emit_i387_log1p): Use gen_cbranchxf4.
265 (ix86_emit_i387_log1p): Use cbranchxf2.
266 (ix86_expand_setcc): Return void.
267 * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
268 * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
269 cmp<MODEF>, cmpcc): Remove.
270 (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
271 cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
272 cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
273 (sCC and bCC expanders): Remove.
274 (stack_protect_test): Use cbranchcc4.
276 * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
278 (ia64_expand_compare): Accept three rtx by reference and return void.
279 * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
280 (ia64_expand_compare): Replace op0/op1 with *op0/*op1. Get code
281 from *expr. Update *expr with the BImode comparison to do.
282 * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
283 cmptf, bCC, sCC, conditional_trap): Delete.
284 (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
285 cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
286 cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
287 ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
288 * config/ia64/predicates.md (ia64_cbranch_operator): New.
290 * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
291 type of last argument.
292 * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
293 (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
294 use machine mode argument instead of branch_type. Remove dead
295 code for floating-point comparisons.
296 * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
297 * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
299 (cbranchsi4, cstoresi4): New.
300 * config/iq2000/predicates.md (reg_or_const_operand): New.
302 * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
303 * config/m32c/m32c.md (any_cond, gl_cond): Delete.
304 (b<code>_op): Rewrite to...
305 (bcc_op): ... this, using match_operator.
306 (s<code>_op): Rewrite to...
307 (scc_op): ... this, using match_operator.
308 (s<code>_24_op): Rewrite to...
309 (scc_op_24): ... this, using match_operator.
310 (s<code>_<mode>): Rewrite to...
311 (cstore<mode>4): ... this, using match_operator.
312 (s<code>_<mode>_24): Rewrite to...
313 (cstore<mode>4_24): ... this, using match_operator.
314 * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
315 m32c_unpend_compare, m32c_expand_scc): Delete.
316 * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
317 m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
318 (m32c_expand_movcc): Change NE to EQ if necessary.
319 (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
321 * config/m32r/m32r-protos.h (gen_cond_store): New.
322 * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
323 (gen_cond_store): New, from sCC patterns.
324 (m32r_expand_block_move): Use cbranchsi4.
325 * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
326 * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
327 (cbranchsi4, cstoresi4): New.
329 * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
331 (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
332 (m68hc11_notice_update_cc): Look into a compare with 0.
333 * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
335 * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
336 cmphi, cmpqi, bCC): Delete.
337 (cbranchsi4, cbranchhi4, cbranchqi4): New.
338 (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
339 bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
342 * config/m68k/predicates.md (m68k_cstore_comparison_operator,
343 const0_operand, const1_operand, m68k_subword_comparison_operand): New.
344 * config/m68k/constraints.md (H): New.
345 * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
346 the define_insn below.
347 (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
348 (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
349 *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
350 patterns): Wrap RHS with COMPARE.
351 (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
352 (*cmpdi_internal): Name this pattern.
353 (cmpdi): Change to define_insn.
354 (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
355 cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
356 (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
358 (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
359 sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
360 (conditional_trap): Change to...
361 (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
362 (*conditional_trap): Use the ordered_comparison_operator and
363 const1_operand predicates.
364 * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
365 (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
366 (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
367 * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
369 * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
370 mcore_modify_comparison, mcore_gen_compare_reg): Remove.
371 (mcore_gen_compare): New.
372 * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
373 (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
374 (mcore_gen_compare): ... this.
375 * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
376 (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
377 (stack probe pattern): Use cbranchsi4.
379 * config/mips/predicates.md (mips_cstore_operator): New.
380 * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
381 * config/mips/mips.md (any_cond): Delete.
382 (conditional_trap): Rename to ctrap<GPR:mode>4. Adjust predicates,
384 (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
385 fixuns_truncsfdi2): Use cbranch patterns.
386 (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
387 (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
388 Adjust call to mips_expand_conditional_branch.
389 (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
391 * config/mips/mips-protos.h (mips_expand_conditional_branch,
392 mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
393 * config/mips/mips.c (cmp_operands): Delete.
394 (mips_emit_compare): Get comparison operands from *op0/*op1.
395 (mips_expand_scc): Get code/op0/op1/target from operands. Assert
396 that it succeeds. Use op0/op1 instead of cmp_operands.
397 (mips_expand_conditional_branch, mips_expand_conditional_move,
398 mips_expand_conditional_trap): Likewise.
399 (mips_block_move_loop): Use cbranch patterns.
400 * config/mips/mips.h (cmp_operands): Delete.
402 * config/mmix/mmix.c (mmix_valid_comparison): Delete.
403 (mmix_gen_compare_reg): Just return a register in the right CC mode.
404 * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
405 * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
406 (*cmpcc_folded): Rename to...
407 (*cmpdi_folded): this.
408 (*cmpcc): Rename to...
410 (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
413 (cbranchdf4): New. Handle invalid comparisons here.
414 * config/mmix/predicates.md (float_comparison_operator): New.
416 * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
417 zero_extract to be cheap in (compare (zero_extract) (const_int 0).
418 * config/mn10300/mn10300.md (tst): Delete.
419 (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
420 Name these patterns and wrap RHS in a compare.
421 (*cmpsi): Make this pattern private. Include tst.
422 (*cmpsf): Make this pattern private.
423 (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
424 (compare with zero peepholes): Likewise.
426 (cbranchsi4, cbranchsf4): New.
427 (casesi): Use cbranchsi4.
429 * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
430 hppa_branch_type): Delete.
431 (return_addr_rtx): Use cbranchsi4.
432 (emit_bcond_fp): Accept all operands. Replace CODE with NE.
433 Emit CCFPmode comparison here.
434 (gen_cmp_fp): Delete, now part of emit_bcond_fp.
435 * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
436 hppa_branch_type): Delete.
437 * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
438 (movsicc, movdicc): Remove references to hppa_compare_op0,
439 hppa_compare_op1 and compare_from_rtx.
440 (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
441 (casesi): Use cbranchsi4.
443 * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
444 * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
445 * config/pdp11/pdp11.md (register_or_const0_operand): New.
446 (cmpdf, cmphi, cmpqi): Make private. Add tst alternatives.
447 (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
449 (cbranchdf4, cbranchhi4, cbranchqi4): New.
450 (*branch, *branch_inverted): New.
452 * config/picochip/picochip.md (cbranchhi4): Use
453 ordered_comparison_operator.
454 (cmphi, bCC): Remove.
456 * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
457 (trap_comparison_operator): Delete.
458 * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
459 rs6000_emit_cbranch): Accept mode and operands.
460 * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
461 rs6000_compare_fp_p): Delete.
462 (rs6000_generate_compare): Accept mode and comparison. Extract code
463 and op0/op1 from there. Replace references to rs6000_compare_op0
464 and rs6000_compare_op1.
465 (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
466 extract result from passed operands.
467 (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
468 extract loc from passed operands.
469 (rs6000_emit_cmove): Likewise.
470 * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
471 rs6000_compare_fp_p): Delete.
472 * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
473 (cbranch<GPR>4, cbranch<FP>4): New.
474 (cstore<mode>4): New. Consolidate here all choices about when to use
475 portable or specialized sCC sequences.
476 (stack_protect_test): Use cbranchsi4.
477 (conditional_trap): Replace with ctrap<GPR>4.
478 (conditional trap insn): Replace trap_comparison_operator with
479 ordered_comparison_operator.
481 * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
482 (s390_emit_prologue): Use ctrap.
483 * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
484 * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
485 New predicates replacing...
486 * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
487 (cmp<GPR>, cmp<FP>, cmpcc): Delete.
488 (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
489 (add<mode>cc): Do not use s390_compare_op0/op1.
490 (s<code>): Change to...
491 (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
493 (cstorecc4): ... this. Handle EQ or NE equally.
494 (*sne): Un-privatize for use in cstorecc4.
495 (b<code>): Change to...
496 (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
497 (conditional_trap): Replace with...
498 (ctrap<GPR>4, ctrap<FP>4): ... these.
499 (stack_protect): Use cbranchcc4.
501 * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
502 * config/score/score-protos.h (score_gen_cmp): Delete.
503 * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
504 (score_block_move-loop): Use cbranchsi4.
505 * config/score/score.md (cbranchsi4): New.
506 (cmpsi, bCC): Delete.
507 * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
508 (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
509 * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
510 (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
511 * config/score/score3.h (score3_gen_cmp): Delete.
512 * config/score/score7.h (score7_gen_cmp): Delete.
514 * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
515 (sh_emit_scc_to_t): ... this. Return void.
516 (from_compare): Rename to...
517 (sh_emit_compare_and_branch): ... this.
518 (sh_emit_compare_and_set): New.
519 (sh_expand_t_scc): Accept operands.
520 * config/sh/predicates.md (sh_float_comparison_operator): New.
521 * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
522 (prepare_scc_operands): Rename to...
523 (sh_emit_scc_to_t): ... this. Return void. Get op0/op1 from
525 (sh_emit_cheap_store_flag): New.
526 (sh_emit_set_t_insn): New.
527 (from_compare): Rename to...
528 (sh_emit_compare_and_branch): ... this. Accept mode. Rewrite
529 handling of TARGET_SH2E floating point to avoid recursive call.
530 Generate branch here.
531 (sh_emit_compare_and_set): New.
532 (sh_expand_t_scc): Get op0/op1 from arguments.
533 (sh_emit_cheap_store_flag): New.
534 * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
536 (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
537 (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
538 (movsicc, movdicc): Do nothing when it recreated operands from
539 sh_compare_*. Use sh_emit_cheap_store_flag. Adjust call to
540 prepare_scc_operands (now sh_emit_scc_to_t).
541 (udivdi3): Use cstoresi4.
542 (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
543 bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
544 (cbranchint4_media, cbranchfp4_media): New.
545 (casesi): Use cbranchdi4.
546 (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
548 (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
549 (movnegt): Remove second operand.
550 (cbranchsf4, cbranchdf4): New.
551 (stack_protect): Use cbranchdi4/cbranchsi4.
553 * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
554 (gen_compare_reg): Accept comparison, extract part of it to...
555 (gen_compare_reg_1): ... this.
556 (gen_compare_operator): Delete.
557 (gen_v9_scc): Accept separate destination, comparison code and arms.
558 Do not use sparc_compare_op0/sparc_compare_op1.
559 (emit_scc_insn, emit_conditional_branch_insn): New.
560 (emit_v9_brxx): Make static. Remove useless assertion.
561 (sparc_emit_float_lib_cmp): Return RTL instead of calling
563 (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
564 * config/sparc/sparc-protos.h (gen_compare_reg,
565 sparc_emit_float_lib_cmp): Adjust prototype.
566 (emit_scc_insn, emit_conditional_branch_insn): New.
567 (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
568 * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
569 * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
570 iterators to the top.
571 (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
572 snesi_special_extend, sCC, bCC, seqdi_special_trunc,
573 snedi_special_trunc): Delete.
574 (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
575 and snedi_special_trunc.
576 (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
577 cbranchdi4, cbranch<F:mode>4): New.
578 (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
579 here. Use gen_compare_reg instead of gen_compare_operator.
580 (conditional_trap): Replace with...
581 (ctrapsi4, ctrapdi4): ... this.
582 (stack_protect_test): Use cbranchcc4.
584 * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
586 * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
587 (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
588 Change spu_compare_op0/op1 to op0/op1 throughout. Get target
589 from operands[0] or operands[3] depending on is_set.
590 * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
591 * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
592 cmpdf, bCC), sCC: Remove.
593 (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
594 cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
596 (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
597 spu_emit_branch_or_set.
599 * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
601 * config/stormy16/stormy16.h (xstormy16_compare_op0,
602 xstormy16_compare_op1): Delete.
603 * config/stormy16/stormy16.c (xstormy16_compare_op0,
604 xstormy16_compare_op1): Delete.
605 (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
607 * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
608 (cmphi, cmpsi, bCC): Remove.
610 * config/v850/v850.md (tstsi, cmpsi): Fold into...
611 (*cmpsi): ... this one.
612 (cbranchsi4, cstoresi4): New.
613 (bCC expanders): Delete.
614 (sCC insns): Fold into...
615 (*setcc): ... this one.
616 (casesi): Do not use gen_cmpsi and gen_bgtu.
617 (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
619 * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
621 * config/vax/vax-protos.h (cond_name): New.
622 (vax_output_conditional_branch): Remove.
623 * config/vax/vax.c (cond_name): New.
624 (vax_output_conditional_branch): Remove.
625 * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
626 * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
627 (cmp<VAXint>, cmp<VAXfp>): Privatize. Add constraints for tst.
628 (bit<VAXint>): Wrap source with (compare).
629 (b<code> and following unnamed pattern): Rename to *branch and
630 *branch_reversed. Change macroization to match_operator.
631 (cbranch<VAXint>4, cbranch<VAXfp>4): New.
633 * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
634 * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
635 Change last argument to machine_mode.
636 (xtensa_expand_scc): Add machine_mode argument.
637 * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
638 (gen_conditional_move, xtensa_expand_conditional_branch,
639 xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
640 instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
641 Adjust operand numbers.
642 * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
644 * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
645 (cmpsi, cmpsf, b<code>, s<code>): Delete.
646 (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
648 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
650 * optabs.c (prepare_cmp_insn): Temporarily disable test that
651 causes spurious differences between trunk and cond-optab branch.
653 2009-05-12 Alexandre Oliva <aoliva@redhat.com>
656 * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
658 2009-05-12 Alexandre Oliva <aoliva@redhat.com>
660 * tree.c (iterative_hash_pointer): Delete.
661 (iterative_hash_expr): Short-circuit handling of NULL pointer.
662 Hash UIDs and versions of SSA names. Don't special-case built-in
663 function declarations.
665 2009-05-11 Ian Lance Taylor <iant@google.com>
668 * graphite.c: Force -Wc++-compat to only be a warning before
669 #including "cloog/cloog.h".
671 2009-05-11 Martin Jambor <mjambor@suse.cz>
673 * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
675 2009-05-11 Jan Hubicka <jh@suse.cz>
677 * tree-ssa-loop-ivcanon.c: Include target.h
678 (struct loop_size): new structure.
679 (constant_after_peeling): New predicate.
680 (tree_estimate_loop_size): New function.
681 (estimated_unrolled_size): Rewrite for new estimates.
682 (try_unroll_loop_completely): Use new estimates.
683 * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
685 2009-05-11 Andrew Pinski <andrew_pinski@playstation.sony.com>
687 * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
688 libcpp interface change.
689 (spu_macro_to_expand): Likewise.
691 2009-05-11 Paolo Bonzini <bonzini@gnu.org>
693 PR tree-optimization/40026
694 * gimplify.c (gimplify_init_constructor): Change initial conditional
695 to assertion. Rewrite TREE_OPERAND (*expr_p, 1) after
696 optimize_compound_literals_in_ctor.
698 2009-05-11 Nathan Sidwell <nathan@codesourcery.com>
700 * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
702 * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
704 2009-05-11 H.J. Lu <hongjiu.lu@intel.com>
706 * tree-vect-data-refs.c (vect_analyze_group_access): Use
707 HOST_WIDE_INT for gap.
709 2009-05-11 Ira Rosen <irar@il.ibm.com>
711 PR tree-optimization/40074
712 * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
713 account in group size and step comparison.
715 2009-05-11 Richard Guenther <rguenther@suse.de>
717 * passes.c (init_optimization_passes): Strip now incorrect comment.
718 (execute_function_todo): Do not set PROP_alias.
719 * tree-pass.h (PROP_alias): Remove.
720 * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
721 * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
722 * tree-nrv.c (pass_return_slot): Likewise.
723 * tree-object-size.c (pass_object_sizes): Likewise.
724 * tree-ssa-dom.c (pass_dominator): Likewise.
725 (pass_phi_only_cprop): Likewise.
726 * tree-ssa-dse.c (pass_dse): Likewise.
727 * tree-ssa-phiopt.c (pass_phiopt): Likewise.
728 (pass_cselim): Likewise.
729 * tree-ssa-pre.c (pass_pre): Likewise.
730 (pass_fre): Likewise.
731 * tree-ssa-reassoc.c (pass_reassoc): Likewise.
732 * tree-ssa-sink.c (pass_sink_code): Likewise.
733 * tree-stdarg.c (pass_stdarg): Likewise.
734 * tree-tailcall.c (pass_tail_calls): Likewise.
735 * tree-vrp.c (pass_vrp): Likewise.
737 2009-05-10 Ian Lance Taylor <iant@google.com>
739 * basic-block.h (enum profile_status): Break out of struct
741 * cgraph.h (struct inline_summary): Break out of struct
743 * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
744 of struct cgraph_order_sort.
745 * combine.c (enum undo_kind): New enum, broken out of struct undo.
746 * cse.c (struct branch_path): Break out of struct
747 cse_basic_block_data.
748 * except.h (enum eh_region_type): Break out of struct eh_region.
749 * gcc.c (enum add_del): Break out of struct modify_target.
750 * genrecog.c (enum decision_type): Break out of struct decision_test.
751 * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
753 * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
754 * regmove.c (enum match_use): New enum, broken out of struct match.
755 * sched-int.h (enum post_call_group): New enum, broken out of
757 (struct deps_reg): Break out of struct deps.
758 * target.h (struct asm_int_op): Break out of struct gcc_target.
759 * tree-eh.c (struct goto_queue_node): Break out of struct
761 * tree-inline.h (enum copy_body_cge_which): Break out of
763 * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
765 * c-decl.c (in_struct, struct_types): New static variables.
766 (pushtag): Add loc parameter. Change all callers.
767 (lookup_tag): Add ploc parameter. Change all callers.
768 (check_compound_literal_type): New function.
769 (parser_xref_tag): Add loc parameter. Change all callers. If
770 -Wc++-compat, warn about struct/union/enum types defined within a
772 (start_struct): Add enclosing_in_struct, enclosing_struct_types,
773 and loc parameters. Change all callers. Change error calls to
774 error_at, using loc. For a redefinition, if the location of the
775 original definition is known, report it. Set in_struct and
776 struct_types. If -Wc++-compat warn if in sizeof, typeof, or alignof.
777 (finish_struct): Add new parameters enclosing_in_struct and
778 enclosing_struct_types. Change all callers. Set
779 C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
780 in the struct. If in a struct, add this struct to struct_types.
781 (start_enum): Add loc parameter. Change all callers. Use
782 error_at for errors, using loc. For a redefinition, if the
783 location of the original definition is known, report it. If in a
784 struct, add this enum type to struct_types. If -Wc++-compat warn
785 if in sizeof, typeof, or alignof.
786 * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
787 (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
788 (c_parser_enum_specifier): Get enum location for start_enum.
789 (c_parser_struct_or_union_specifier): Get struct location for
790 start_struct. Save in_struct and struct_types status between
791 start_struct and finish_struct.
792 (c_parser_cast_expression): Get location of cast.
793 (c_parser_alignof_expression): Get location of type.
794 (c_parser_postfix_expression): Likewise.
795 (c_parser_postfix_expression_after_paren_type): Add type_loc
796 parameter. Change all callers. Call check_compound_literal_type.
797 Use type_loc for error about variable size type.
798 * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
799 of an enum constant from an enum type defined in a struct or union.
800 (c_cast_expr): Add loc parameter. Change all callers. If
801 -Wc++-compat, warn about defining a type in a cast.
802 * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
803 (start_enum, start_struct, finish_struct): Update declarations.
804 (parser_xref_tag, c_cast_expr): Update declarations.
805 (check_compound_literal_type): Declare.
807 2009-05-11 Ben Elliston <bje@au.ibm.com>
809 * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
810 for recent libcpp interface change.
811 (rs6000_macro_to_expand): Likewise.
813 2009-05-10 Michael Matz <matz@suse.de>
816 * config/arm/arm.c (require_pic_register): Emit on entry edge,
817 not at entry of function.
819 2009-05-10 Richard Guenther <rguenther@suse.de>
821 PR tree-optimization/40081
823 * tree-sra.c (instantiate_element): Instantiate scalar replacements
824 using the main variant of the element type. Do not fiddle with
825 TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
827 * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
828 structs with volatile fields.
830 2009-05-10 Jan Hubicka <jh@suse.cz>
832 * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
833 (estimate_move_cost): Assert that it does not get called for
835 (estimate_num_insns): Skip VOID types in argument handling.
836 (optimize_inline_calls): Delete unreachable blocks and verify that
839 2009-05-10 Jan Hubicka <jh@suse.cz>
841 * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
842 * cgraph.c (cgraph_mark_address_taken_node): New function.
843 (dump_cgraph_node): Dump new flag.
844 * cgraph.h (struct cgraph_node): Add address_taken.
845 (cgraph_mark_address_taken_node): New function.
846 * ipa.c (cgraph_postorder): Prioritize functions with address taken
847 since new direct calls can be born.
849 2009-05-10 Joseph Myers <joseph@codesourcery.com>
851 * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
854 2009-05-10 Jan Hubicka <jh@suse.cz>
857 * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
859 (cgraph_update_edges_for_call_stmt): Take old_decl argument.
860 * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
861 * tree-inline.c (copy_bb): Set frequency correctly.
862 (fold_marked_statements): Update call to
863 cgraph_update_edges_for_call_stmt.
865 2009-05-10 Joseph Myers <joseph@codesourcery.com>
867 * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
868 identifiers in diagnostics.
869 * config/arm/arm.c (arm_handle_fndecl_attribute,
870 arm_handle_isr_attribute): Likewise.
871 * config/avr/avr.c (avr_handle_progmem_attribute,
872 avr_handle_fndecl_attribute, avr_handle_fntype_attribute):
874 * config/bfin/bfin.c (handle_int_attribute,
875 bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
876 bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
877 bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
879 * config/darwin.c (darwin_handle_kext_attribute,
880 darwin_handle_weak_import_attribute): Likewise.
881 * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
882 h8300_handle_eightbit_data_attribute,
883 h8300_handle_tiny_data_attribute): Likewise.
884 * config/i386/i386.c (ix86_handle_cconv_attribute,
885 ix86_handle_abi_attribute, ix86_handle_struct_attribute):
887 * config/i386/winnt.c (ix86_handle_shared_attribute,
888 ix86_handle_selectany_attribute): Likewise.
889 * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
890 * config/m32c/m32c.c (function_vector_handler): Likewise.
891 * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
892 m68hc11_handle_fntype_attribute): Likewise.
893 * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
894 * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
895 * config/mips/mips.c (mips_insert_attributes,
896 mips_merge_decl_attributes, mips_expand_builtin): Likewise.
897 * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
898 rs6000_handle_struct_attribute): Likewise.
899 * config/sh/sh.c (sh_insert_attributes,
900 sh_handle_resbank_handler_attribute,
901 sh_handle_interrupt_handler_attribute,
902 sh2a_handle_function_vector_handler_attribute,
903 sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
905 * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
906 * config/spu/spu.c (spu_handle_fndecl_attribute,
907 spu_handle_vector_attribute): Likewise.
908 * config/stormy16/stormy16.c
909 (xstormy16_handle_interrupt_attribute): Likewise.
910 * config/v850/v850-c.c (ghs_pragma_section): Likewise.
911 * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
913 2009-05-10 Joseph Myers <joseph@codesourcery.com>
915 * pretty-print.h (struct pretty_print_info): Add
916 translate_identifiers.
917 (pp_translate_identifiers): New.
918 (pp_identifier): Only conditionally translate identifier to locale
920 * pretty-print.c (pp_construct): Set pp_translate_identifiers.
921 (pp_base_tree_identifier): Only conditionally translate identifier
922 to locale character set.
923 * c-pretty-print.c (M_): Define.
924 (pp_c_type_specifier, pp_c_primary_expression): Mark English
925 fragments for conditional translation with M_.
926 * tree-pretty-print.c (maybe_init_pretty_print): Disable
927 identifier translation.
929 2009-05-10 Richard Guenther <rguenther@suse.de>
931 PR tree-optimization/40081
932 * tree-sra.c (instantiate_element): Instantiate scalar replacements
933 using the main variant of the element type. Do not fiddle with
934 TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
936 2009-05-09 Jan Hubicka <jh@suse.cz>
939 * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
940 indirect calls; verify cgraph afterwards.
942 2009-05-09 Jan Hubicka <jh@suse.cz>
945 * ipa.c (update_inlined_to_pointer): New function.
946 (cgraph_remove_unreachable_nodes): Use it.
948 2009-05-09 Jan Hubicka <jh@suse.cz>
950 * tree-eh.c (struct leh_state): Remove prev_try.
951 (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
953 * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
954 copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
955 remove_eh_handler_and_replace, foreach_reachable_handler,
956 verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
957 * except.h (struct eh_region): Remove eh_region_u_cleanup.
958 (gen_eh_region_cleanup): Update prototype.
960 2009-05-09 Jan Hubicka <jh@suse.cz>
963 * except.c (copy_eh_region): Always set prev_try.
964 (redirect_eh_edge_to_label): Find outer try.
965 (foreach_reachable_handler): When looking for prev try
966 handle case where previous try is not going to be taken.
968 2009-05-07 Michael Meissner <meissner@linux.vnet.ibm.com>
970 PR tree-optimization/40049
971 * tree-vect-stmts.c (vectorizable_operation): If the machine has
972 only vector/vector shifts, convert the type of the constant to the
973 appropriate type to avoid building incorrect trees, which
974 eventually have problems with garbage collection.
976 2009-05-08 Joseph Myers <joseph@codesourcery.com>
978 * fold-const.c (fold_binary): Do not fold multiplication by 1 or
979 -1 for complex floating-point types if honoring signed zeros.
981 2009-05-08 Jan Hubicka <jh@suse.cz>
983 * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
984 argument; handle correctly when profile is absent.
985 (build_cgraph_edges): Update.
986 (rebuild_cgraph_edges): Update.
987 * cgraph.c: Do not include varray.h.
988 (cgraph_set_call_stmt_including_clones): New function.
989 (cgraph_create_edge_including_clones): Likewise
990 (cgraph_update_edges_for_call_stmt_node): New static cfunction.
991 (cgraph_update_edges_for_call_stmt): Handle clones.
992 (cgraph_remove_node): Handle clone tree.
993 (cgraph_remove_node_and_inline_clones): New function.
994 (dump_cgraph_node): Dump clone tree.
995 (cgraph_clone_node): Handle clone tree.
996 (clone_function_name): Bring here from tree-inline.c.
997 (cgraph_create_virtual_clone): New function.
998 * cgraph.h (ipa_replace_map): Move here from ipa.h.
999 (cgraph_clone_info): New function.
1000 (strut cgraph_node): Add clone_info and new clone tree pointers.
1001 (cgraph_remove_node_and_inline_clones,
1002 cgraph_set_call_stmt_including_clones,
1003 cgraph_create_edge_including_clones,
1004 cgraph_create_virtual_clone): Declare.
1005 (cgraph_function_versioning): Use VEC argument.
1006 (compute_call_stmt_bb_frequency): Update prototype.
1007 (cgraph_materialize_all_clones): New function.
1008 * ipa-cp.c (ipcp_update_cloned_node): Remove.
1009 (ipcp_create_replace_map): Update to VECtors.
1010 (ipcp_update_callgraph): Use virtual clones.
1011 (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
1012 (ipcp_update_profiling): Do not update local profiling.
1013 (ipcp_insert_stage): Use VECtors and virtual clones.
1014 * cgraphunit.c (verify_cgraph_node): Verify clone tree.
1015 (clone_of_p): New function.
1016 (cgraph_preserve_function_body_p): Use clone tree.
1017 (cgraph_optimize): Materialize clones.
1018 (cgraph_function_versioning): Update for VECtors.
1019 (save_inline_function_body): Use clone tree.
1020 (cgraph_materialize_clone): New function.
1021 (cgraph_materialize_all_clones): Likewise.
1022 * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
1023 * ipa.c: Include gimple.h.
1024 (cgraph_remove_unreachable_nodes): Use clone tree.
1025 * ipa-prop.c (ipa_note_param_call): Update call to
1026 compute_call_stmt_bb_frequencycall.
1027 * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
1028 * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
1029 (copy_bb): Handle updating of clone tree; add new edge when new call
1031 (expand_call_inline): Be strict about every call having edge.
1032 (clone_fn_id_num, clone_function_name): Move to cgraph.c.
1033 (delete_unreachable_blocks_update_callgraph): New function.
1034 (tree_function_versioning): Use VECtors; always remove unreachable
1035 blocks and fold conditionals.
1036 * tree-inline.h: Do not include varray.h.
1037 (tree_function_versioning): Remove.
1038 * Makefile.in (GTFILES): Remove tree-inline.c
1039 * passes.c (do_per_function): Do only functions having body.
1040 * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
1043 2009-05-08 H.J. Lu <hongjiu.lu@intel.com>
1044 Andrew Morrow <acm@google.com>
1047 * c-common.c (c_common_attribute_table): Permit deprecated
1048 attribute to take an optional argument.
1049 (handle_deprecated_attribute): If the optional argument to
1050 __attribute__((deprecated)) is not a string ignore the attribute
1053 * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
1054 * c-typeck.c (build_component_ref): Likewise.
1055 (build_external_ref): Likewise.
1057 * toplev.c (warn_deprecated_use): Add an attribute argument.
1058 Emit the message associated with __attribute__((deprecated)).
1060 * toplev.h (warn_deprecated_use): Updated.
1062 * doc/extend.texi: Document new optional parameter to
1063 __attribute__((deprecated))
1065 2009-05-08 Michael Eager <eager@eagercon.com>
1067 * config/rs6000/rs6000.md (*movdf_softfloat32): replace
1068 !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
1070 2009-05-08 Richard Guenther <rguenther@suse.de>
1072 PR tree-optimization/40062
1073 * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
1074 Avoid exponential behavior.
1076 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
1078 PR rtl-optimization/33928
1080 * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
1081 process_uses, build_single_def_use_links): New.
1082 (update_df): Update use_def_ref.
1083 (forward_propagate_into): Use get_def_for_use instead of use-def
1085 (fwprop_init): Call build_single_def_use_links and let it initialize
1087 (fwprop_done): Free use_def_ref.
1088 (fwprop_addr): Eliminate duplicate call to df_set_flags.
1089 * df-problems.c (df_rd_simulate_artificial_defs_at_top,
1090 df_rd_simulate_one_insn): New.
1091 (df_rd_bb_local_compute_process_def): Update head comment.
1092 (df_chain_create_bb): Use the new RD simulation functions.
1093 * df.h (df_rd_simulate_artificial_defs_at_top,
1094 df_rd_simulate_one_insn): New.
1095 * opts.c (decode_options): Enable fwprop at -O1.
1096 * doc/invoke.texi (-fforward-propagate): Document this.
1098 2009-05-08 Joseph Myers <joseph@codesourcery.com>
1101 * c-typeck.c (build_binary_op): Handle arithmetic between one real
1102 and one complex operand specially.
1103 * tree-complex.c (some_nonzerop): Do not identify a real value as
1104 zero if flag_signed_zeros.
1106 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
1108 PR rtl-optimization/33928
1109 * loop-invariant.c (record_use): Fix && vs. || mishap.
1111 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
1113 PR rtl-optimization/33928
1114 * loop-invariant.c (struct use): Add addr_use_p.
1115 (struct def): Add n_addr_uses.
1116 (struct invariant): Add cheap_address.
1117 (create_new_invariant): Set cheap_address.
1118 (record_use): Accept df_ref. Set addr_use_p and update n_addr_uses.
1119 (record_uses): Pass df_ref to record_use.
1120 (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
1123 2009-05-08 Kaz Kojima <kkojima@gcc.gnu.org>
1125 * config/sh/sh.c: Do not include c-pragma.h.
1127 2009-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com>
1129 * config/spu/spu.c: Remove include of c-common.h.
1131 2009-05-07 Janis Johnson <janis187@us.ibm.com>
1134 * c-common.h (mark_valid_location_for_stdc_pragma,
1135 valid_location_for_stdc_pragma_p, set_float_const_decimal64,
1136 clear_float_const_decimal64, float_const_decimal64_p): New.
1137 * c.opt (Wunsuffixed-float-constants): New.
1138 * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
1139 unsuffixed float constant, handle new warning.
1140 * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
1141 * c-decl.c (c_scope): New flag float_const_decimal64.
1142 (set_float_const_decimal64, clear_float_const_decimal64,
1143 float_const_decimal64_p): New.
1144 (push_scope): Set new flag.
1145 * c-parser.c (c_parser_translation_unit): Mark when it's valid
1146 to use STDC pragmas.
1147 (c_parser_external_declaration): Ditto.
1148 (c_parser_compound_statement_nostart): Ditto.
1149 * c-pragma.c (valid_location_for_stdc_pragma,
1150 mark_valid_location_for_stdc_pragma,
1151 valid_location_for_stdc_pragma_p, handle_stdc_pragma,
1152 handle_pragma_float_const_decimal64): New.
1153 (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
1154 * cp/semantics.c (valid_location_for_stdc_pragma_p,
1155 set_float_const_decimal64, clear_float_const_decimal64,
1156 float_const_decimal64_p): New dummy functions.
1157 * doc/extend.texi (Decimal Float): Remove statement that the
1158 pragma, and suffix for double constants, are not supported.
1159 * doc/invoke.texi (Warning Options): List new option.
1160 (-Wunsuffixed-float-constants): New.
1162 2009-05-08 Steven Bosscher <steven@gcc.gnu.org>
1164 * config/i386/i386.c: Do not include c-common.h.
1166 2009-05-07 Mark Heffernan <meheff@google.com>
1168 * doc/invoke.texi (Debugging Options): Document change of debugging
1170 * opts.c (decode_options): Make dump_base_name relative to
1171 aux_base_name directory.
1173 2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com>
1175 * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
1176 * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
1178 2009-05-07 Rafael Avila de Espindola <espindola@google.com>
1180 * Makefile.in (install-plugin): Simplify a bit.
1182 2009-05-07 Paolo Bonzini <bonzini@gnu.org>
1184 * Makefile.in (OBJS-common): Add regcprop.o.
1186 * timevar.def (TV_CPROP_REGISTERS): New.
1187 * regrename.c (regrename_optimize): Return 0.
1188 (rest_of_handle_regrename): Delete.
1189 (pass_rename_registers): Point to regrename_optimize.
1190 (struct value_data_entry, struct value_data,
1191 kill_value_one_regno, kill_value_regno, kill_value,
1192 set_value_regno, init_value_data, kill_clobbered_value,
1193 kill_set_value, kill_autoinc_value, copy_value,
1194 mode_change_ok, maybe_mode_change, find_oldest_value_reg,
1195 replace_oldest_value_reg, replace_oldest_value_addr,
1196 replace_oldest_value_mem, copyprop_hardreg_forward_1,
1197 debug_value_data, validate_value_data): Move...
1198 * regcprop.c: ... here.
1199 (rest_of_handle_cprop): Delete.
1200 (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
1202 2009-05-07 Jakub Jelinek <jakub@redhat.com>
1205 * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
1206 GEN_INT for 1 << bitnum.
1207 (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
1210 2009-05-07 Uros Bizjak <ubizjak@gmail.com>
1212 * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
1213 Remove wrong description of "nand" operation.
1215 2009-05-06 Richard Guenther <rguenther@suse.de>
1216 Adam Nemet <anemet@caviumnetworks.com>
1218 * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
1219 comment. Add that if LHS is not a gimple register, then RHS1 has
1220 to be a single object (GIMPLE_SINGLE_RHS).
1222 2009-05-06 Adam Nemet <anemet@caviumnetworks.com>
1224 * expr.c (get_def_for_expr): Move it up in the file.
1225 (store_field): When expanding a bit-field store, look at the
1226 defining gimple stmt for the masking conversion.
1228 2009-05-06 Janis Johnson <janis187@us.ibm.com>
1231 * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
1232 decode_decimal64, encode_decimal128, decode_decimal128): Avoid
1233 32-bit memcpy into long.
1235 2009-05-06 Jakub Jelinek <jakub@redhat.com>
1237 * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
1238 (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
1240 (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
1241 instead of appending DW_OP_deref*.
1243 2009-05-06 Michael Matz <matz@suse.de>
1246 * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
1247 (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
1249 2009-05-06 Rafael Avila de Espindola <espindola@google.com>
1251 * Makefile.in (install-plugin): Fix srcdir handling.
1253 2009-05-06 Andrey Belevantsev <abel@ispras.ru>
1255 * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
1256 when processing for not_regs_needed bitmap.
1257 * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
1258 handle TARGET_MEM_REF in lhs. Check TMR_BASE for NULL while
1259 handling it for rhs.
1261 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
1263 * config/i386/i386.md (unnamed inc/dec peephole): Use
1264 optimize_insn_for_size_p instead of optimize_size.
1265 * config/i386/predicates.md (incdec_operand): Likewise.
1266 (aligned_operand): Likewise.
1267 * config/i386/sse.md (divv8sf3): Likewise.
1268 (sqrtv8sf2): Likewise.
1270 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
1272 * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
1274 * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
1276 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
1278 * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
1279 ssemodesuffixf2c with avxmodesuffixf2c.
1281 2009-05-06 Joseph Myers <joseph@codesourcery.com>
1284 * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
1286 2009-05-05 Jakub Jelinek <jakub@redhat.com>
1288 * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
1289 (struct tree_base): Adjust spacing for 8 bit boundaries.
1290 (struct tree_decl_common): Add decl_by_reference_flag bit.
1291 (DECL_BY_REFERENCE): Adjust.
1292 * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
1293 print DECL_BY_REFERENCE bit.
1294 * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
1295 * dwarf2out.c (loc_by_reference, gen_decl_die): Check
1296 DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
1297 (gen_variable_die): Likewise. Check TREE_PRIVATE/TREE_PROTECTED
1301 * gimplify.c (gimplify_switch_expr): If case labels cover the whole
1302 range of the type, but default label is missing, add it with one
1303 of the existing labels instead of adding a new label for it.
1305 2009-05-05 Joseph Myers <joseph@codesourcery.com>
1309 2009-05-05 Rafael Avila de Espindola <espindola@google.com>
1311 * Makefile.in (enable_plugin, plugin_includedir): New.
1312 (install): Depend on install-plugin.
1313 (PLUGIN_HEADERS): New.
1314 (install-plugin): New.
1315 * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
1317 2009-05-05 Richard Guenther <rguenther@suse.de>
1319 PR tree-optimization/40022
1320 * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
1322 (phivn_valid_p): Fix tuplification error, simplify.
1323 (phiprop_insert_phi): Add dumps.
1324 (propagate_with_phi): Simplify.
1326 2009-05-05 Richard Guenther <rguenther@suse.de>
1329 * builtins.c (gimplify_va_arg_expr): Properly build the address.
1331 2009-05-05 Shujing Zhao <pearly.zhao@oracle.com>
1333 * tree.h (strip_float_extensions): Remove duplicate declaration.
1334 (build_low_bits_mask, debug_fold_checksum, expand_function_end,
1335 expand_function_start, stack_protect_prologue, stack_protect_epilogue,
1336 block_ultimate_origin): Rearrange the declarations line to match the
1337 comment that indicates the .c file which the functions are defined.
1338 (dwarf2out_*, set_decl_rtl): Add comment.
1339 (get_base_address): Adjust comment.
1340 (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
1341 declarations line and add comment.
1342 (is_builtin_name): Add blank after function name, for clarity.
1344 2009-05-04 Joseph Myers <joseph@codesourcery.com>
1346 * attribs.c (decl_attributes): Use %qE for identifiers in
1348 * cgraphunit.c (verify_cgraph_node): Translate function names to
1349 locale character set in diagnostics.
1350 * coverage.c (get_coverage_counts): Use %qE for identifiers in
1352 * doc/invoke.texi (-finstrument-functions-exclude-function-list):
1353 Document that functions are named in UTF-8.
1354 * expr.c (expand_expr_real_1): Translate function names to locale
1355 character set in diagnostics.
1356 * gimplify.c (omp_notice_variable, omp_is_private,
1357 gimplify_scan_omp_clauses): Use %qE for identifiers in
1359 * langhooks.c (lhd_print_error_function): Translate function names
1360 to locale character set.
1361 * langhooks.h (decl_printable_name): Document that return value is
1362 in internal character set.
1363 * stmt.c: Include pretty-print.h
1364 (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
1366 (resolve_operand_name_1): Translate named operand name to locale
1368 * stor-layout.c (finalize_record_size): Use %qE for identifiers in
1370 * toplev.c (announce_function): Translate function names to locale
1372 (warn_deprecated_use): Use %qE for identifiers in diagnostics.
1373 (default_tree_printer): Use pp_identifier or translate identifiers
1374 to locale character set. Mark "<anonymous>" for translation.
1375 * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
1376 for identifiers in diagnostics.
1377 * tree.c (handle_dll_attribute): Use %qE for identifiers in
1379 * varasm.c (output_constructor): Use %qE for identifiers in
1382 2009-05-04 Rafael Avila de Espindola <espindola@google.com>
1384 * configure.ac: use ` ` instead of $()
1385 * configure: Regenerate.
1387 2009-05-05 Ben Elliston <bje@au.ibm.com>
1389 * config/pa/linux-atomic.c: Eliminate conditional include of
1390 errno.h on non-LP64 systems to simplify build requirements.
1392 2009-05-04 Joseph Myers <joseph@codesourcery.com>
1394 * c-common.c (handle_mode_attribute): Use %qE for identifiers in
1396 * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
1397 and pass value to identifier_to_locale.
1398 (warn_variable_length_array): Make name a tree.
1399 (grokdeclarator): Separate diagnostic texts for named and unnamed
1400 declarators. Use %qE for named declarators.
1401 * c-parser.c (c_lex_one_token): Use %qE for identifiers in
1403 * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
1404 identifiers in diagnostics.
1405 * c-typeck.c (push_member_name, start_init): Pass identifiers to
1406 identifier_to_locale. Mark "anonymous" strings for translation.
1408 2009-05-04 Michael Eager <eager@eagercon.com>
1410 * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
1411 address for DImode/DFmode only if double-precision FP regs.
1413 2009-05-04 Michael Eager <eager@eagercon.com>
1415 * config/rs6000/rs6000.c (rs6000_libcall_value): Add
1416 TARGET_SINGLE_FLOAT check.
1418 2009-05-04 Michael Eager <eager@eagercon.com>
1420 * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
1422 2009-05-04 Michael Eager <eager@eagercon.com>
1424 * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
1425 * config/rs6000/t-xilinx: New
1427 2009-05-04 Paolo Bonzini <bonzini@gnu.org>
1429 * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
1430 * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
1431 * gcc/explow.c (memory_address): Use target hook.
1432 * gcc/targhooks.c (default_legitimize_address): New.
1433 * gcc/targhooks.h (default_legitimize_address): New.
1434 * gcc/target.h (legitimize_address): New.
1435 * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
1436 (TARGET_INITIALIZER): Include it.
1437 * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
1439 * config/bfin/bfin-protos.h (legitimize_address): Remove.
1440 * config/bfin/bfin.c (legitimize_address): Remove.
1441 * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
1442 * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
1444 * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
1445 * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
1447 * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
1448 THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
1449 * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
1450 * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
1451 * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
1452 * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
1453 * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
1454 * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
1455 * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
1456 * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
1457 * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
1458 * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
1459 * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
1460 * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
1461 * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
1462 * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
1463 * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
1464 * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
1465 * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
1466 * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
1467 * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
1468 * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
1469 * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
1471 * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
1472 * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
1473 * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
1474 * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
1475 * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
1476 * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
1477 * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
1478 * gcc/config/arm/arm-protos.h (arm_legitimize_address,
1479 (thumb_legitimize_address): Delete.
1480 * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
1481 * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
1482 * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
1483 * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
1484 * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
1485 * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
1487 * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
1490 * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
1491 * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
1492 * config/m32r/m32r.c (m32r_legitimize_address): New.
1493 * config/m68k/m68k.c (m68k_legitimize_address): New.
1494 * config/score/score.c (score_legitimize_address): Standardize.
1495 * config/score/score3.c (score3_legitimize_address): Standardize.
1496 * config/score/score3.h (score3_legitimize_address): Adjust.
1497 * config/score/score7.c (score7_legitimize_address): Standardize.
1498 * config/score/score7.h (score7_legitimize_address): Adjust.
1499 * config/sh/sh.c (sh_legitimize_address): New.
1500 * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
1502 * gcc/config/s390/s390.c (legitimize_address): Rename to...
1503 (s390_legitimize_address): ... this.
1504 * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
1505 (sparc_legitimize_address): ... this.
1506 * gcc/config/i386/i386.c (legitimize_address): Rename to...
1507 (ix86_legitimize_address): ... this.
1508 * gcc/config/avr/avr.c (legitimize_address): Rename to...
1509 (avr_legitimize_address): ... this.
1510 * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
1511 (mn10300_legitimize_address): ... this.
1512 * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
1513 (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
1514 (alpha_expand_mov): Adjust call.
1516 * config/frv/frv.c (frv_legitimize_address): Return x on failure.
1517 * config/spu/spu.c (spu_legitimize_address): Likewise.
1518 * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
1519 * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
1521 2009-05-04 Joseph Myers <joseph@codesourcery.com>
1523 * intl.c (locale_encoding, locale_utf8): New.
1524 (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
1525 * intl.h (locale_encoding, locale_utf8): Declare.
1526 * pretty-print.c: Include ggc.h. Include iconv.h if HAVE_ICONV.
1527 (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
1529 * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
1531 (pp_tree_identifier): Define to call pp_base_tree_identifier.
1532 (pp_base_tree_identifier): Declare as function.
1533 (identifier_to_locale): Declare.
1534 * Makefile.in (pretty-print.o): Update dependencies.
1535 * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
1537 2009-05-04 Richard Guenther <rguenther@suse.de>
1540 * builtins.c (fold_builtin_memory_op): Do not decay to element
1541 type if the size matches the whole array.
1543 2009-05-04 Kazu Hirata <kazu@codesourcery.com>
1545 * expmed.c (synth_mult): When trying out a shift, pass the result
1548 2009-05-04 Kazu Hirata <kazu@codesourcery.com>
1550 * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
1551 (shiftsub1_cost): New.
1552 (init_expmed): Compute shiftsub1_cost.
1553 (synth_mult): Optimize multiplications by constants of the form
1554 -(2^^m-1) for some constant positive integer m.
1556 2009-05-03 Richard Guenther <rguenther@suse.de>
1559 * c-typeck.c (array_to_pointer_conversion): Do not built
1560 ADDR_EXPRs of arrays of pointer-to-element type.
1561 * c-gimplify.c (c_gimplify_expr): Revert change fixing
1562 up wrong ADDR_EXPRs after-the-fact.
1563 * c-common.c (strict_aliasing_warning): Strip pointer
1564 conversions for obtaining the original type.
1565 * builtins.c (fold_builtin_memset): Handle array types.
1566 (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
1569 2009-05-03 Richard Guenther <rguenther@suse.de>
1572 * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
1573 Do not lose casts from array types with unknown extent to array
1574 types with known extent.
1575 * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
1576 alias set compatibility.
1578 2009-05-03 Manuel López-Ibáñez <manu@gcc.gnu.org>
1580 * flags.h (extra_warnings): Delete.
1581 * toplev.c (process_options): Handle Wuninitialized here.
1582 * opts.c (extra_warnings): Delete.
1583 (set_Wextra): Delete.
1584 (common_handle_option): -Wextra can be handled automatically.
1585 * c-opts.c (c_common_handle_option): Delete obsolete code.
1586 (c_common_post_options): Simplify comment.
1587 * common.opt (W): Add Var.
1589 (Wuninitialized): Initialize to -1.
1591 2009-05-03 Adam Nemet <anemet@caviumnetworks.com>
1592 Richard Guenther <rguenther@suse.de>
1594 * expr.c (get_def_for_expr): New function.
1595 (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
1596 SSA rather than trees.
1597 <MULT_EXPR>: Likewise. Use subexp0 and subexp1 instead of
1598 TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
1600 2009-05-03 Joseph Myers <joseph@codesourcery.com>
1602 * c-common.c (reswords): Add _Imaginary.
1603 * c-common.c (enum rid): Add RID_IMAGINARY.
1605 2009-05-03 Paolo Bonzini <bonzini@gnu.org>
1607 * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
1608 Patch by Richard Guenther.
1610 2009-05-03 Anatoly Sokolov <aesok@post.ru>
1612 * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
1613 * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
1614 * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
1615 * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
1616 * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
1617 * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
1618 * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
1619 * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
1620 * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
1621 * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
1622 * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
1623 * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
1624 * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
1625 * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
1626 * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
1627 * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
1628 * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
1629 * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
1631 2009-05-02 Richard Guenther <rguenther@suse.de>
1633 PR tree-optimization/39940
1634 * tree-ssa-pre.c (eliminate): Make sure we may propagate before
1637 2009-05-02 Richard Guenther <rguenther@suse.de>
1640 * tree-ssa.c (execute_update_addresses_taken): Properly check
1641 if we can mark a variable DECL_GIMPLE_REG_P.
1642 * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
1643 back to the end of the function.
1644 (is_gimple_reg_type): Remove complex type special casing.
1645 * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
1648 2009-05-02 Ben Elliston <bje@au.ibm.com>
1650 * doc/collect2.texi (Collect2): Document search path behaviour
1651 when configured with --with-ld.
1653 2009-05-02 Jan Hubicka <jh@suse.cz>
1655 * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
1656 parameter; update callers.
1657 (coalesce_cost_edge): EH edges are costier because they needs
1658 splitting even if not critical and even more costier when there are
1659 multiple EH predecestors.
1661 2009-05-02 Jan Hubicka <jh@suse.cz>
1663 * except.c (remove_eh_handler_and_replace): Handle updating after
1664 removing TRY blocks.
1666 2009-05-02 Eric Botcazou <ebotcazou@adacore.com>
1668 * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
1670 2009-05-02 Steven Bosscher <steven@gcc.gnu.org>
1672 * varasm.c: Do not include c-pragma.h.
1673 * attribs.c: Do not incude c-common.h.
1675 2009-05-01 Michael Matz <matz@suse.de>
1677 * calls.c (initialize_argument_information): Handle SSA names like
1678 decls with a non MEM_P DECL_RTL.
1680 2009-05-01 Steven Bosscher <steven@gcc.gnu.org>
1682 * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
1683 * ipa-utils.c: Likewise.
1684 * ipa-type-escape.c: Likewise.
1685 * cgraphunit.c Do not include c-common.h.
1686 * ipa-pure-const.c: Likewise.
1687 * tree-if-conv.c: Likewise.
1688 * matrix-reorg.c: Do not include c-common.h and c-tree.h.
1689 * ipa-struct-reorg.c: Likewise.
1690 * tree-nomudflap.c: Likewise.
1691 * tree-ssa-structalias.c: Likewise.
1693 2009-05-01 Steven Bosscher <steven@gcc.gnu.org>
1695 * store-motion.c: Many cleanups to make this pass a first-class
1696 citizen instead of an appendix to gcse load motion. Add TODO list
1697 to make this pass faster/cleaner/better.
1699 (struct ls_expr): Post gcse.c-split cleanups.
1700 Rename to st_expr. Rename "loads" field to "antic_stores". Rename
1701 "stores" field to "avail_stores".
1702 (pre_ldst_mems): Rename to store_motion_mems.
1703 (pre_ldst_table): Rename to store_motion_mems_table.
1704 (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
1705 (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
1706 (ldst_entry): Rename to st_expr_entry, update users.
1707 (free_ldst_entry): Rename to free_st_expr_entry, update users.
1708 (free_ldst_mems): Rename to free_store_motion_mems, update users.
1709 (enumerate_ldsts): Rename to enumerate_store_motion_mems,
1711 (first_ls_expr): Rename to first_st_expr, update users.
1712 (next_ls_expr): Rename to next_st_expr, update users.
1713 (print_ldst_list): Rename to print_store_motion_mems. Print names of
1714 fields properly for store motion instead of names inherited from load
1716 (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
1717 (LAST_AVAIL_CHECK_FAILURE): Explain what this is. Undefine when we
1720 (ae_kill): Rename to st_kill, update users.
1721 (ae_gen): Rename to st_avloc, update users.
1722 (transp): Rename to st_transp, update users.
1723 (pre_insert_map): Rename to st_insert_map, update users.
1724 (pre_delete_map): Rename to st_delete_map, update users.
1725 (insert_store, build_store_vectors, free_store_memory,
1726 one_store_motion_pass): Update for abovementioned changes.
1728 (gcse_subst_count, gcse_create_count): Remove.
1729 (one_store_motion_pass): New statistics counters "n_stores_deleted"
1730 and "n_stores_created", local variables.
1732 (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
1735 (regvec, compute_store_table_current_insn): Remove.
1736 (reg_set_info, reg_clear_last_set): Remove.
1737 (compute_store_table): Use DF caches instead of local dataflow
1740 2009-05-01 Joseph Myers <joseph@codesourcery.com>
1742 * c-objc-common.c (c_tree_printer): Print identifiers with
1743 pp_identifier, not pp_string. Mark "({anonymous})" for
1745 * c-pretty-print.c (pp_c_ws_string): New.
1746 (pp_c_cv_qualifier, pp_c_type_specifier,
1747 pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
1748 pp_c_storage_class_specifier, pp_c_function_specifier,
1749 pp_c_attributes, pp_c_bool_constant, pp_c_constant,
1750 pp_c_primary_expression, pp_c_postfix_expression,
1751 pp_c_unary_expression, pp_c_shift_expression,
1752 pp_c_relational_expression, pp_c_equality_expression,
1753 pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
1754 use pp_string and pp_c_ws_string in place of pp_identifier and
1755 pp_c_identifier for non-identifiers. Mark English strings for
1757 * c-pretty-print.h (pp_c_ws_string): Declare.
1759 2009-04-30 Paul Pluzhnikov <ppluzhnikov@google.com>
1760 Roland McGrath <roland@redhat.com>
1762 * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
1763 (ENABLE_LD_BUILDID): New configuration option.
1764 * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
1765 (LINK_BUILDID_SPEC): New macro.
1766 (init_spec): If defined, prepend it between LINK_EH_SPEC and
1768 * doc/install.texi: Document --enable-linker-build-id option.
1769 * configure: Rebuild.
1770 * config.in: Rebuild.
1772 2009-04-30 Adam Nemet <anemet@caviumnetworks.com>
1774 * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
1775 MIPS_GP_SAVE_AREA_SIZE): Define new macros.
1776 (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD. Use
1777 MIPS_GP_SAVE_AREA_SIZE.
1778 * config/mips/mips.c (struct mips_frame_info): Update comment
1779 before arg_pointer_offset and hard_frame_pointer_offset.
1780 (mips_compute_frame_info): Update diagram before function: to
1781 correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
1782 indicate the position of frame_pointer_rtx with -fstack-protector and
1783 to show args_size. Don't allocate cprestore area for leaf functions
1784 if FRAME_GROWS_DOWNWARD. Use MIPS_GP_SAVE_AREA_SIZE to set
1786 (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
1788 2009-04-30 Michael Matz <matz@suse.de>
1790 PR tree-optimization/39955
1791 * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
1793 2009-04-30 Dave Korn <dave.korn.cygwin@gmail.com>
1795 * ira.c (setup_cover_and_important_classes): Use safe macro
1796 REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
1798 * genpreds.c (write_tm_preds_h): Output suitable definition of
1799 REG_CLASS_FOR_CONSTRAINT.
1801 2009-04-30 Rafael Avila de Espindola <espindola@google.com>
1803 * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
1805 * bitmap.c (bitmap_descriptor): Likewise.
1806 * ggc-common.c (loc_descriptor): Likewise.
1807 * varray.c (varray_descriptor): Likewise.
1808 * vec.c (vec_descriptor): Likewise.
1810 2009-04-30 Eric Botcazou <ebotcazou@adacore.com>
1812 * Makefile.in (dce.o): Add $(EXCEPT_H).
1813 * dce.c: Include except.h and delete redundant vector definitions.
1814 (deletable_insn_p): Return false for non-call insns that can throw
1817 2009-04-30 Steven Bosscher <steven@gcc.gnu.org>
1819 * gcse.c (ae_gen): Remove.
1820 (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
1821 and make non-static function to make it available in store-motion.c.
1822 Update call sites with search-and-replace.
1823 (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
1824 extract_mentioned_regs, extract_mentioned_regs_helper,
1825 find_moveable_store, compute_store_table, load_kills_store, find_loads,
1826 store_killed_in_insn, store_killed_after, store_killed_before,
1827 build_store_vectors, insert_insn_start_basic_block, insert-store,
1828 remove_reachable_equiv_notes, replace_store_insn, delete_store,
1829 free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
1830 execute_rtl_store_motion, pass_rtl_store_motion): Move to...
1831 * store-motion.c: ...new file. Also copy data structures from gcse.c
1832 and clean up to remove parts not used by store motion.
1833 * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
1834 * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
1836 2009-04-30 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
1839 * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
1840 when optimizing for size.
1842 2009-04-30 Hans-Peter Nilsson <hp@axis.com>
1844 * gcse.c (gcse_constant_p): Fix typo in last change.
1846 2009-04-30 Rafael Avila de Espindola <espindola@google.com>
1848 * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
1850 2009-04-30 Andreas Krebbel <krebbel1@de.ibm.com>
1852 * gcse.c (gcse_constant_p): Make sure the constant is sharable.
1854 2009-04-29 James E. Wilson <wilson@codesourcery.com>
1856 * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
1857 CONST_HIGH_PART result.
1859 2009-04-29 Anatoly Sokolov <aesok@post.ru>
1861 * config/avr/avr.c (initial_elimination_offset): Rename to
1862 avr_initial_elimination_offset.
1863 (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
1864 change return type to bool.
1865 (avr_can_eliminate): New function.
1866 * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
1867 (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
1868 (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
1869 * config/avr/avr-protos.h (initial_elimination_offset): Rename to
1870 avr_initial_elimination_offset.
1871 (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
1872 (avr_initial_elimination_offset): Define.
1874 2009-04-29 Eric Botcazou <ebotcazou@adacore.com>
1875 Steven Bosscher <steven@gcc.gnu.org>
1877 PR rtl-optimization/39938
1878 * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
1879 * cfgrtl.c: Include insn-attr.h.
1880 (rest_of_pass_free_cfg): New function.
1881 (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
1882 * resource.c (init_resource_info): Remove call to df_analyze.
1884 2009-04-29 Richard Guenther <rguenther@suse.de>
1887 * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
1888 allow conversion to signed integers.
1890 2009-04-29 Richard Guenther <rguenther@suse.de>
1892 * tree-cfg.c (verify_gimple_assign_binary): Allow vector
1893 shifts of floating point vectors if the shift amount is
1894 a constant multiple of the element size.
1896 2009-04-29 Andreas Krebbel <krebbel1@de.ibm.com>
1897 Michael Matz <matz@suse.de>
1901 * tree-outof-ssa.c (emit_partition_copy): New function.
1902 (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
1903 insert_part_to_rtx_on_edge): Perform the partition base var
1904 copy using emit_partition_copy.
1905 (insert_value_copy_on_edge): Convert constants to the right mode.
1906 (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
1907 (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
1909 2009-04-29 Bernd Schmidt <bernd.schmidt@analog.com>
1911 * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
1912 scan backwards to try to find a constant to initialize it.
1914 * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
1915 insn before the loop_end instruction, don't look past labels.
1917 2009-04-29 Richard Guenther <rguenther@suse.de>
1920 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
1921 loose type conversions.
1922 (forward_propagate_addr_expr): Fix tuplification bug. Remove
1923 stmts only if there are no uses of its definition.
1925 2009-04-29 Bernd Schmidt <bernd.schmidt@analog.com>
1927 * config/bfin/bfin.h (splitting_loops): Declare.
1928 * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
1929 Reorder bit definitions to be ascending.
1930 (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
1931 * config/bfin/bfin.c (splitting_loops): New variable.
1932 (bfin_cpus): Add WA_LOAD_LCREGS as needed.
1933 (struct loop_info): Remove members INIT and LOOP_INIT.
1934 (bfin_optimize_loop): Don't set them. Reorder the code that generates
1935 the LSETUP sequence. Allow LC to be loaded from any register, but
1936 also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
1937 (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
1939 * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
1940 of reload_completed.
1943 * config/bfin/bfin.md (movsi_insn): Refine constraints.
1945 2009-04-29 Rafael Avila de Espindola <espindola@google.com>
1947 * Makefile.in (PLUGIN_VERSION_H): New.
1948 (OBJS-common): Remove plugin-version.o.
1949 (plugin.o): Depend on (PLUGIN_VERSION_H).
1950 (plugin-version.o): Remove.
1951 * configure: Regenerate
1952 * configure.ac: Create plugin-version.h.
1953 * gcc-plugin.h (plugin_gcc_version): Remove.
1954 (plugin_default_version_check): Change signature.
1955 * plugin-version.c: Remove.
1956 * plugin.c: Include plugin-version.h.
1957 (str_plugin_gcc_version_name): Remove.
1958 (try_init_one_plugin): Pass gcc version to plugin_init.
1959 (plugin_default_version_check): Both gcc and plugin versions are now
1962 2009-04-29 Bernd Schmidt <bernd.schmidt@analog.com>
1964 * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
1965 problematic last insns. Test for TYPE_CALL rather than CALL_P.
1966 Remove special case testing for last insn of inner loops. Don't fail
1967 if the loop ends with a jump, emit an extra nop instead.
1969 * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
1970 DREGS rather than comparing directly. Remove code that tries to
1971 account for latencies.
1973 2009-04-29 Richard Guenther <rguenther@suse.de>
1975 PR tree-optimization/39941
1976 * tree-ssa-pre.c (eliminate): Schedule update-ssa after
1977 eliminating an indirect call.
1979 2009-04-29 Richard Guenther <rguenther@suse.de>
1981 * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
1982 parameter. Allow invariants as base if !require_lvalue.
1983 (verify_gimple_assign_single): Adjust.
1985 2009-04-29 Bernd Schmidt <bernd.schmidt@analog.com>
1987 * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
1988 (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
1989 ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
1990 ssubhi3, ssaddhi3_parts and sssubhi3_parts.
1991 (flag_mulhi3_parts): Produce a HImode output rather than trying to set
1993 * config/bfin/bfin.c (bfin_expand_builtin,
1994 case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
1996 2009-04-28 Richard Guenther <rguenther@suse.de>
1998 * tree-vect-loop.c (get_initial_def_for_induction): Use
1999 correct types for pointer increment.
2001 2009-04-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2003 * toplev.c (print_version): Update GMP version string calculation.
2005 2009-04-28 Eric Botcazou <ebotcazou@adacore.com>
2007 PR rtl-optimization/39938
2008 * resource.c (init_resource_info): Add call to df_analyze.
2010 2009-04-28 Uros Bizjak <ubizjak@gmail.com>
2012 * config/alpha/alpha.md (usegp): Cast the result of
2013 alpha_find_lo_sum_using_gp to enum attr_usegp.
2014 * config/alpha/alpha.c (override_options): Remove end-of-structure
2015 marker element from cpu_table. Use array size of cpu_table to handle
2016 -mcpu and -mtune options.
2017 (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
2019 2009-04-28 Joseph Myers <joseph@codesourcery.com>
2021 * config.gcc (powerpc*-*-* | rs6000-*-*): Add
2022 rs6000/option-defaults.h to tm_file. Support cpu_32, cpu_64,
2023 tune_32 and tune_64.
2024 * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
2026 * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
2027 * config/rs6000/option-defaults.h: ... here. New file.
2028 (OPT_64, OPT_32): Define.
2029 (MASK_64BIT): Define to 0 if not already defined.
2030 (OPT_ARCH64, OPT_ARCH32): Define.
2031 (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
2034 2009-04-28 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2036 * config/arm/arm.c (arm_override_options): Emit error on using
2039 2009-04-28 Uros Bizjak <ubizjak@gmail.com>
2041 PR rtl-optimization/39914
2042 * ira-conflicts.c (ira_build_conflicts): Prohibit call used
2043 registers for allocnos created from user-defined variables only
2044 when not optimizing.
2046 2009-04-28 Richard Guenther <rguenther@suse.de>
2049 * fold-const.c (fold_binary): Use distribute_real_division only
2052 2009-04-28 Steve Ellcey <sje@cup.hp.com>
2054 * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
2055 add hpux-stdint.h to tm_file.
2056 (hppa[12]*-*-hpux11*): Ditto.
2057 (ia64*-*-hpux*): Ditto.
2058 * config/hpux-stdint.h: New.
2059 * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
2060 __STDC_EXT__ for all compiles.
2061 * config/pa/pa-hpux.h: Ditto.
2062 * config/pa/pa-hpux10.h: Ditto.
2063 * config/pa/pa-hpux11.h: Ditto.
2065 2009-04-28 Catherine Moore <clm@codesourcery.com>
2067 * debug.h (set_name): Add comment.
2069 2009-04-28 Andrew Pinski <pinskia@gmail.com>
2072 * config/darwin.c (machopic_gen_offset): Check
2073 currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
2074 * config/arm/arm.c (require_pic_register): Likewise.
2076 2009-04-28 Paolo Bonzini <bonzini@gnu.org>
2078 * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
2079 m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
2080 m32c_promote_prototypes): Delete.
2082 2009-04-28 Michael Matz <matz@suse.de>
2085 * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
2088 2009-04-28 Richard Guenther <rguenther@suse.de>
2090 * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
2092 2009-04-28 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2094 * config/arm/arm-cores.def: Add support for arm1156t2f-s.
2095 * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
2096 * config/arm/arm-tune.md: Regenerate.
2098 2009-04-28 Alexander Monakov <amonakov@ispras.ru>
2100 * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
2101 block if there are complex incoming edges.
2102 (sel_merge_blocks): Remove useless assert.
2103 (sel_redirect_edge_and_branch): Check that edge was redirected.
2104 * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
2105 (sel_find_rgns): Delete declaration.
2106 * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
2107 the region when it is not a preheader.
2109 2009-04-28 Uros Bizjak <ubizjak@gmail.com>
2112 * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
2114 2009-04-28 Richard Guenther <rguenther@suse.de>
2116 * tree.h (SSA_NAME_VALUE): Remove.
2117 (struct tree_ssa_name): Remove value_handle member.
2118 * tree-vrp.c (execute_vrp): Initialize/free the value-handle
2119 array for jump threading.
2120 * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
2122 * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
2123 * tree-flow.h (threadedge_initialize_values): Declare.
2124 (threadedge_finalize_values): Likewise.
2125 * tree-ssa-threadedge.c (ssa_name_values): New global variable.
2126 (SSA_NAME_VALUE): Define.
2127 (threadedge_initialize_values): New function.
2128 (threadedge_finalize_values): Likewise.
2129 * tree-ssa-dom.c (ssa_name_values): New global variable.
2130 (SSA_NAME_VALUE): Define.
2131 (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
2133 2009-04-28 Ira Rosen <irar@il.ibm.com>
2135 * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
2136 Use REPORT_VECTORIZED_LOCATIONS instead
2137 REPORT_VECTORIZED_LOOPS.
2138 * tree-vectorizer.c (vect_verbosity_level): Make static.
2139 (vect_loop_location): Rename to vect_location.
2140 (vect_set_verbosity_level): Update comment.
2141 (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
2143 (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
2144 and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
2145 instead REPORT_UNVECTORIZED_LOOPS.
2146 * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
2147 and vect_loop_def to vect_external_def and vect_internal_def.
2148 (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
2149 and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
2150 REPORT_UNVECTORIZED_LOCATIONS.
2151 (enum vect_relevant): Update comment. Rename vect_unused_in_loop
2152 and vect_used_in_loop and to vect_unused_in_scope and
2154 (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
2155 (vect_verbosity_level): Remove declaration.
2156 (vect_analyze_operations): Likewise.
2157 (vect_analyze_stmt): Declare.
2158 * tree-vect-loop.c (vect_determine_vectorization_factor): Use
2159 REPORT_UNVECTORIZED_LOCATIONS.
2160 (vect_get_loop_niters): Fix indentation.
2161 (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
2162 (vect_analyze_loop_operations): New function.
2163 (vect_analyze_loop): Call vect_analyze_loop_operations instead of
2164 vect_analyze_operations.
2165 (vect_is_simple_reduction): Use new names.
2166 (vectorizable_live_operation, vect_transform_loop): Likewise.
2167 * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
2168 to specify whether the data references can be a part of interleaving
2170 (vect_analyze_data_ref_dependence): Use new names.
2171 (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
2172 (vect_create_addr_base_for_vector_ref): Remove redundant code.
2173 * tree-vect-patterns.c (widened_name_p): Use new names.
2174 (vect_recog_dot_prod_pattern): Likewise.
2175 * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
2176 (process_use, vect_mark_stmts_to_be_vectorized,
2177 vect_model_simple_cost, vect_model_store_cost,
2178 vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
2179 vectorizable_call, vectorizable_conversion, vectorizable_assignment,
2180 vectorizable_operation, vectorizable_type_demotion,
2181 vectorizable_type_promotion, vectorizable_store, vectorizable_load,
2182 vectorizable_condition): Likewise.
2183 (vect_analyze_operations): Split into vect_analyze_loop_operations
2185 (vect_analyze_stmt): ... new function.
2186 (new_stmt_vec_info): Use new names.
2187 (vect_is_simple_use): Use new names and fix comment.
2188 * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
2189 (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
2191 2009-04-28 Uros Bizjak <ubizjak@gmail.com>
2194 * config/i386/i386.c (print_operand) ['Z']: Handle floating point
2195 and integer modes for x87 operands. Do not ICE for unsupported size,
2196 generate error instead. Generate error for unsupported operand types.
2197 ['z']: Do not handle HImode memory operands specially. Warning
2198 for floating-point operands. Fallthru to 'Z' for unsupported operand
2199 types. Do not ICE for unsupported size, generate error instead.
2200 (output_387_binary_op): Use %Z to output operands.
2201 (output_fp_compare): Ditto.
2202 (output_387_reg_move): Ditto.
2204 2009-04-28 Ben Elliston <bje@au.ibm.com>
2209 2009-03-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2211 * builtins.c (c_strlen): Do not warn here.
2212 * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
2213 * c-common.c (pointer_int_sum): Take an explicit location.
2214 Warn about offsets out of bounds.
2215 * c-common.h (pointer_int_sum): Adjust declaration.
2217 2009-04-27 Ian Lance Taylor <iant@google.com>
2219 * collect2.c (is_ctor_dtor): Change type of ret field in struct
2221 * dce.c (run_fast_df_dce): Change type of old_flags to int.
2222 * df-core.c (df_set_flags): Change return type to int. Change
2223 type of old_flags to int.
2224 (df_clear_flags): Likewise.
2225 * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
2226 (df_get_conditional_uses): Likewise.
2227 * df.h (df_set_flags, df_clear_flags): Update declarations.
2228 * dwarf2out.c (struct indirect_string_node): Change type of form
2229 field to enum dwarf_form.
2230 (AT_string_form): Change return type to enum dwarf_form.
2231 * fixed-value.c (fixed_compare): Add cast to enum type.
2232 * fwprop.c (update_df): Change 0 to VOIDmode.
2233 * gensupport.c: Change 0 to UNKNOWN.
2234 * gimple.h (gimple_cond_code): Add cast to enum type.
2235 * haifa-sched.c (reemit_notes): Add cast to enum type.
2236 * hooks.c (hook_int_void_no_regs): Remove function.
2237 * hooks.h (hook_int_void_no_regs): Remove declaration.
2238 * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
2239 * predict.c (combine_predictions_for_insn): Add casts to enum type.
2240 * real.c (real_arithmetic): Add cast to enum type.
2241 (real_compare): Likewise.
2242 * target.h (struct gcc_target): Change return type of
2243 branch_target_register_class to enum reg_class.
2244 * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
2245 default_branch_target_register_class.
2246 * targhooks.c (default_branch_target_register_class): New function.
2247 * targhooks.h (default_branch_target_register_class): Declare.
2248 * tree-data-ref.c (print_direction_vector): Add cast to enum type.
2249 * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
2251 * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
2253 * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
2254 vect_uninitialized_def. Change 0 to ERROR_MARK.
2255 * tree-vect-stmts.c (supportable_widening_operation): Don't
2256 initialize icode1 and icode2.
2257 * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
2258 * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
2260 (cmn_err_flag_specs): Change 0 to STD_C89.
2261 (cmn_err_char_table): Likewise.
2262 * config/arm/arm.c (get_arm_condition_code): Change type of code
2263 to enum arm_cond_code.
2264 (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
2265 (IWMMXT_BUILTIN2): Likewise.
2266 (neon_builtin_type_bits): Don't define typedef.
2267 (neon_builtin_datum): Change type of bits field to int.
2268 (arm_expand_neon_args): Add cast to enum type.
2269 * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
2271 * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN. Add
2273 * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
2275 * config/mips/mips.md (jal_macro): Return enum constant.
2276 (single_insn): Likewise.
2277 * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
2279 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
2281 * config/s390/s390.c (s390_tune_flags): Change type to int.
2282 (s390_arch_flags): Likewise.
2283 (s390_handle_arch_option): Change flags field of struct pta to int.
2284 * config/s390/s390.h (s390_tune_flags): Update declaration.
2285 (s390_arch_flags): Likewise.
2286 * config/sh/sh.c (prepare_move_operands): Compare
2287 tls_symbolic_operand result with enum constant.
2288 (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
2289 (sh_expand_prologue): Add cast to enum type.
2290 (sh_expand_epilogue): Likewise.
2291 (tls_symbolic_operand): Change return type to enum tls_model.
2292 (fpscr_set_from_mem): Add cast to enum type.
2293 (legitimize_pic_address): Compare tls_symbolic_operand result with
2295 (sh_target_reg_class): Change return type to enum reg_class.
2296 * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
2298 * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
2299 * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
2300 * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
2301 (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
2302 (delayed_branch, tls_call_delay): Likewise.
2303 (eligible_for_sibcall_delay): Likewise.
2304 (eligible_for_return_delay): Likewise.
2305 * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
2306 (spu_expand_builtin_1): Likewise.
2308 * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
2309 for all types of conversions.
2310 (output_init_element): Issue -Wc++-compat warning if needed when
2311 initializing a bitfield with enum type.
2312 * c-parser.c (c_parser_expression): Set original_type to
2313 original_type of right hand operand of comman operator.
2315 2009-04-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2317 * doc/c-tree.texi (Types, Functions, Expression trees): Fix
2319 * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
2320 * doc/cpp.texi (Standard Predefined Macros)
2321 (Implementation-defined behavior): Likewise.
2322 * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
2323 * doc/gimple.texi (GIMPLE Exception Handling)
2324 (@code{GIMPLE_ASSIGN}): Likewise.
2325 * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
2326 * doc/invoke.texi (Warning Options, Optimize Options)
2327 (AVR Options, Darwin Options): Likewise.
2328 (Optimize Options): Reformulate -fwhole-program description.
2329 * doc/loop.texi (Lambda): Likewise.
2330 * doc/md.texi (Output Template, Define Constraints)
2331 (Standard Names, Insn Splitting): Likewise.
2332 * doc/options.texi (Option properties): Likewise.
2333 * doc/passes.texi (Tree-SSA passes): Likewise.
2334 * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
2335 * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
2336 (File Names and DBX): Likewise.
2337 * doc/trouble.texi (Incompatibilities): Likewise.
2339 2009-04-27 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
2341 * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
2342 instruction is correct.
2344 2009-04-27 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
2346 Allow non-constant arguments to conversion intrinsics.
2347 * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
2348 * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
2349 * spu.c (print_operand): Handle 'v' and 'w'.
2350 (exp2_immediate_p, spu_gen_exp2): Define.
2351 * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
2352 spu_convtf_1): Update parameter descriptions.
2353 * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
2354 * constraints.md ('v', 'w'): New.
2355 * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
2357 (i2f, I2F): New define_mode_attr.
2358 (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
2359 floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
2360 fixuns_truncv4sfv4si2): Update to use mode attribute.
2361 (float<mode><i2f>2_mul, float<mode><i2f>2_div,
2362 fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
2363 floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
2364 patterns for combine.
2366 2009-04-27 Steven Bosscher <steven@gcc.gnu.org>
2368 * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
2369 (cprop, hoist, pre, store_motion): New debug counters.
2370 * tree-pass.h (pass_tracer): Move to list of gimple passes, it
2371 is not an RTL pass anymore.
2372 (pass_profiling): Remove extern decl for pass removed in 2005.
2373 (pass_gcse, pass_jump_bypass): Remove.
2374 * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
2375 to 0 for clean state.
2376 * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
2377 * cse.c (gate_handle_cse_after_global_opts,
2378 rest_of_handle_cse_after_global_opts): New functions.
2379 (pass_cse_after_global_opts): New pass, does local CSE.
2380 * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
2381 (TV_CPROP): New timevar.
2382 * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
2383 (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
2384 (gcse_main, recompute_all_luids): Remove.
2385 (compute_hash_table_work): Call max_reg_num instead of reading
2387 (cprop_jump): Don't set run_jump_opt_after_gcse.
2388 (constprop_register): Always allow to alter jumps.
2389 (cprop_insn): Likewise.
2390 (do_local_cprop): Likewise.
2391 (local_cprop_pass): Likewise. Return non-zero if something changed.
2392 (cprop): Remove function, fold interesting bits into one_cprop_pass.
2393 (find_implicit_sets): Add note about missed optimization opportunity.
2394 (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
2395 pass_rtl_cprop execute function.
2396 Don't bother tracking the pass number, each pass gets its own dumpfile
2398 Always allow to alter jumpsand bypass jumps.
2399 (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
2400 will just find no suitable set.
2401 (pre_edge_insert): Fix dumping, this function is for PRE only.
2402 (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
2403 pass_rtl_pre execute function.
2404 (hoist_code): Return non-zero if something changed. Keep track of
2405 substitutions and insertions for statistics gathering similar to PRE.
2406 (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
2407 called from the pass_rtl_hoist execute function. Show pass statistics.
2408 (compute_store_table): Use max_reg_num directly instead of using the
2409 formerly global max_gcse_regno.
2410 (build_store_vectors): Likewise.
2411 (replace_store_insn): Fix dumping.
2412 (store_motion): Rename to ...
2413 (one_store_motion_pass): ... this. Rewrite to be "the" STORE_MOTION
2414 pass, called from the pass_rtl_store_motion execute function. Keep
2415 track of substitutions and insertions for statistics gathering similar
2417 (bypass_jumps): Remove, fold interesting bits into ...
2418 (one_cprop_pass): ... this. Rewrite to be "the" CPROP pass, called
2419 from the pass_rtl_cprop execute function.
2420 (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
2421 pass_jump_bypass): Remove.
2422 (gate_handle_gcse, rest_of_handle_gcse): Remove.
2423 (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
2424 (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
2425 (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
2426 (gate_rtl_store_motion, execute_rtl_store_motion,
2427 pass_rtl_store_motion): New.
2428 * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
2429 make it clear that -fcse-skip-blocks is a no-op for backward compat.
2430 * passes.c (init_optimization_passes): Remove pass_gcse and
2431 pass_jump_bypass. Schedule cprop, pre, hoist, cprop, store_motion,
2432 and cse_after_global_opts in place of pass_gcse. Schedule cprop
2433 instead of pass_jump_bypass.
2435 2009-04-27 Richard Guenther <rguenther@suse.de>
2438 * gimplify.c (gimplify_expr): If we are required to create
2439 a temporary make sure it ends up as register.
2441 2009-04-27 H.J. Lu <hongjiu.lu@intel.com>
2444 * config/i386/i386.c (construct_container): Don't call
2445 gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
2446 X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
2448 2009-04-27 Michael Matz <matz@suse.de>
2450 * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
2451 (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
2452 * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
2453 (dump_replaceable_exprs): Take a bitmap.
2454 * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
2456 (expand_gimple_basic_block): Likewise.
2457 * tree-ssa-ter.c (struct temp_expr_table_d): Make
2458 replaceable_expressions member a bitmap.
2459 (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
2460 (mark_replaceable): Likewise.
2461 (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
2462 * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
2464 2009-04-27 Richard Guenther <rguenther@suse.de>
2466 * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
2467 (verify_stmts): Dispatch to gimple/type verification code.
2468 * tree-inline.c (remap_gimple_op_r): Work around C++ FE
2469 issue with call argument types.
2471 2009-04-27 Michael Matz <matz@suse.de>
2473 * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
2474 (init_update_ssa, delete_update_ssa, update_ssa): Remove references
2477 2009-04-27 Richard Sandiford <rdsandiford@googlemail.com>
2478 Eric Botcazou <ebotcazou@adacore.com>
2480 * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
2481 a label's basic block.
2482 (mark_target_live_regs): Tidy and rework obsolete comments.
2483 Change back DF problem to LIVE. If a label starts a basic block,
2484 assume that all registers that used to be live then still are.
2485 (init_resource_info): If a label starts a basic block, set its
2486 BLOCK_FOR_INSN accordingly.
2487 (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
2489 2009-04-27 Richard Guenther <rguenther@suse.de>
2491 * tree-flow-inline.h (function_ann): Remove.
2492 (get_function_ann): Likewise.
2493 * tree-dfa.c (create_function_ann): Remove.
2494 * tree-flow.h (struct static_var_ann_d): Remove.
2495 (struct function_ann_d): Likewise.
2496 (union tree_ann_d): Remove fdecl member.
2497 (function_ann_t): Remove.
2498 (function_ann, get_function_ann, create_function_ann): Remove
2501 2009-04-27 Uros Bizjak <ubizjak@gmail.com>
2503 * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
2505 2009-04-27 Jan Hubicka <jh@suse.cz>
2507 * ipa-pure-const.c (struct funct_state_d): New fields
2508 state_previously_known, looping_previously_known; remove
2509 state_set_in_source.
2510 (analyze_function): Use new fields.
2511 (propagate): Avoid assumption that state_set_in_source imply
2514 * tree-ssa-loop-niter.c (finite_loop_p): New function.
2515 * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
2516 * cfgloop.h (finite_loop_p): Declare.
2518 2009-04-26 Michael Matz <matz@suse.de>
2520 * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
2522 2009-04-26 Michael Matz <matz@suse.de>
2524 * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
2525 pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
2526 * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
2527 pass_mark_used_blocks): Remove.
2528 * tree-optimize.c (pass_free_datastructures,
2529 execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
2530 * passes.c (init_optimization_passes): Don't call
2531 pass_mark_used_blocks, remove dead code.
2533 2009-04-26 H.J. Lu <hongjiu.lu@intel.com>
2535 * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
2536 * tree-ssa-live.h (register_ssa_partition): Likewise.
2538 2009-04-26 Michael Matz <matz@suse.de>
2541 * builtins.c (fold_builtin_next_arg): Handle SSA names.
2542 * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
2543 * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
2545 (compare_pairs): Swap cost comparison.
2546 (coalesce_ssa_name): Don't use change_partition_var.
2547 * tree-nrv.c (struct nrv_data): Add modified member.
2548 (finalize_nrv_r): Set it.
2549 (tree_nrv): Use it to update statements.
2550 (pass_nrv): Require PROP_ssa.
2551 * tree-mudflap.c (mf_decl_cache_locals,
2552 mf_build_check_statement_for): Use make_rename_temp.
2553 (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
2554 * alias.c (find_base_decl): Handle SSA names.
2555 * emit-rtl (set_reg_attrs_for_parm): Make non-static.
2556 (component_ref_for_mem_expr): Don't leak SSA names into RTL.
2557 * rtl.h (set_reg_attrs_for_parm): Declare.
2558 * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
2559 to "optimized", remove unused locals at finish.
2560 (execute_free_datastructures): Make global, call
2561 delete_tree_cfg_annotations.
2562 (execute_free_cfg_annotations): Don't call
2563 delete_tree_cfg_annotations.
2565 * ssaexpand.h: New file.
2566 * expr.c (toplevel): Include ssaexpand.h.
2567 (expand_assignment): Handle SSA names the same as register variables.
2568 (expand_expr_real_1): Expand SSA names.
2569 * cfgexpand.c (toplevel): Include ssaexpand.h.
2570 (SA): New global variable.
2571 (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
2572 (SSAVAR): New macro.
2573 (set_rtl): New helper function.
2574 (add_stack_var): Deal with SSA names, use set_rtl.
2575 (expand_one_stack_var_at): Likewise.
2576 (expand_one_stack_var): Deal with SSA names.
2577 (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
2578 before unique numbers.
2579 (expand_stack_vars): Use set_rtl.
2580 (expand_one_var): Accept SSA names, add asserts for them, feed them
2581 to above subroutines.
2582 (expand_used_vars): Expand all partitions (without default defs),
2583 then only the local decls (ignoring those expanded already).
2584 (expand_gimple_cond): Remove edges when jumpif() expands an
2586 (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
2587 or remove abnormal edges. Ignore insns setting the LHS of a TERed
2589 (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
2590 members of SA; deal with PARM_DECL partitions here; expand
2591 all PHI nodes, free tree datastructures and SA. Commit instructions
2592 on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
2593 (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
2594 info and statements at start, collect garbage at finish.
2595 * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
2596 (VAR_ANN_PARTITION) Remove.
2597 (change_partition_var): Don't declare.
2598 (partition_to_var): Always return SSA names.
2599 (var_to_partition): Only accept SSA names.
2600 (register_ssa_partition): Only check argument.
2601 * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
2603 (delete_var_map): Don't free it.
2604 (var_union): Only accept SSA names, simplify.
2605 (partition_view_init): Mark only useful SSA names as used.
2606 (partition_view_fini): Only deal with SSA names.
2607 (change_partition_var): Remove.
2608 (dump_var_map): Use ssa_name instead of partition_to_var member.
2609 * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
2611 * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
2612 (struct _elim_graph): New member const_dests; nodes member vector of
2614 (set_location_for_edge): New static helper.
2615 (create_temp): Remove.
2616 (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
2617 insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
2618 (new_elim_graph): Allocate const_dests member.
2619 (clean_elim_graph): Truncate const_dests member.
2620 (delete_elim_graph): Free const_dests member.
2621 (elim_graph_size): Adapt to new type of nodes member.
2622 (elim_graph_add_node): Likewise.
2623 (eliminate_name): Likewise.
2624 (eliminate_build): Don't take basic block argument, deal only with
2625 partition numbers, not variables.
2626 (get_temp_reg): New static helper.
2627 (elim_create): Use it, deal with RTL temporaries instead of trees.
2628 (eliminate_phi): Adjust all calls to new signature.
2629 (assign_vars, replace_use_variable, replace_def_variable): Remove.
2630 (rewrite_trees): Only do checking.
2631 (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
2632 (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
2633 init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
2634 contains_tree_r, MAX_STMTS_IN_LATCH,
2635 process_single_block_loop_latch, analyze_edges_for_bb,
2636 perform_edge_inserts): Remove.
2637 (expand_phi_nodes): New global function.
2638 (remove_ssa_form): Take ssaexpand parameter. Don't call removed
2639 functions, initialize new parameter, remember partitions having a
2641 (finish_out_of_ssa): New global function.
2642 (rewrite_out_of_ssa): Make global. Adjust call to remove_ssa_form,
2643 don't reset in_ssa_p here, don't disable TER when mudflap.
2644 (pass_del_ssa): Remove.
2645 * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
2647 (execute_free_datastructures): Declare.
2648 * Makefile.in (SSAEXPAND_H): New variable.
2649 (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
2650 * basic-block.h (commit_one_edge_insertion): Declare.
2651 * passes.c (init_optimization_passes): Move pass_nrv and
2652 pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
2653 pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
2654 * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
2655 (redirect_branch_edge): Deal with super block when expanding, split
2656 out jump patching itself into ...
2657 (patch_jump_insn): ... here, new static helper.
2659 2009-04-26 Michael Matz <matz@suse.de>
2661 * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
2662 beyond num_ssa_names.
2663 * tree-ssa-ter.c (free_temp_expr_table): Likewise.
2664 * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
2666 2009-04-26 Jakub Jelinek <jakub@redhat.com>
2669 * fwprop.c (forward_propagate_asm): New function.
2670 (forward_propagate_and_simplify): Propagate also into __asm, if it
2671 doesn't increase the number of referenced registers.
2674 * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
2676 2009-04-26 Jakub Jelinek <jakub@redhat.com>
2678 * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
2679 note_nonlocal_vla_type for nonlocal VLAs.
2680 (note_nonlocal_vla_type, note_nonlocal_block_vlas,
2681 contains_remapped_vars, remap_vla_decls): New functions.
2682 (convert_nonlocal_reference_stmt): If not optimizing, call
2683 note_nonlocal_block_vlas on GIMPLE_BIND block vars.
2684 (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
2685 if it wasn't found in var_map.
2686 (finalize_nesting_tree_1): Call remap_vla_decls. If outermost
2687 GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
2688 to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
2690 * gimplify.c (nonlocal_vlas): New variable.
2691 (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
2693 (gimplify_body): Create and destroy nonlocal_vlas.
2695 * dwarf2out.c (loc_descr_plus_const): New function.
2696 (build_cfa_aligned_loc, tls_mem_loc_descriptor,
2697 mem_loc_descriptor, loc_descriptor_from_tree_1,
2698 descr_info_loc, gen_variable_die): Use it.
2700 * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
2701 !TREE_STATIC VAR_DECLs.
2702 * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
2703 DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
2704 (gen_variable_die): Likewise. Don't look at TREE_PRIVATE if
2705 DECL_BY_REFERENCE is valid.
2706 * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
2707 for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
2708 * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
2709 Copy DECL_BY_REFERENCE.
2710 (struct nesting_copy_body_data): New type.
2711 (nesting_copy_decl): New function.
2712 (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
2713 if they have variable length.
2715 2009-04-26 Michael Matz <matz@suse.de>
2717 * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
2718 mark new temporaries for renaming.
2720 2009-04-26 Joseph Myers <joseph@codesourcery.com>
2723 * c-decl.c (global_bindings_p): Return negative value.
2724 (c_variable_size): New. Based on variable_size from
2726 (grokdeclarator): Call c_variable_size not variable_size.
2728 2009-04-26 Uros Bizjak <ubizjak@gmail.com>
2730 * config/i386/i386.c (print_operand) ['z']: Fix typo.
2732 2009-04-26 Kai Tietz <kai.tietz@onevision.com>
2734 * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
2735 Redefine it to just use mingw/include.
2736 (ASM_SPEC): Rules for -m32 and -m64.
2737 (LINK_SPEC): Use Likewise.
2738 (SPEC_32): New define.
2739 (SPEC_64): Likewise.
2740 (SUB_LINK_SPEC): Likewise.
2741 (MULTILIB_DEFAULTS): New define.
2742 * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
2743 Add multilib options.
2744 (MULTILIB_DIRNAMES): Likewise.
2745 (MULTILIB_OSDIRNAMES): Likewise.
2747 (INSTALL_LIBGCC): Likewise.
2749 2009-04-26 Joseph Myers <joseph@codesourcery.com>
2752 * c-tree.h (enum c_inline_static_type): New.
2753 (record_inline_static): Declare.
2754 * c-decl.c (struct c_inline_static, c_inline_statics,
2755 record_inline_static, check_inline_statics): New.
2756 (pop_file_scope): Call check_inline_statics.
2757 (start_decl): Call record_inline_static instead of pedwarning
2758 directly for static in inline function.
2759 * c-typeck.c (build_external_ref): Call record_inline_static
2760 instead of pedwarning directly for static referenced in inline
2763 2009-04-26 Steven Bosscher <steven@gcc.gnu.org>
2765 * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
2766 not new but only being rescanned.
2767 * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
2768 reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
2769 alloc_reg_set_mem, free_reg_set_mem, record_one_set,
2770 record_set_info, compute_set, grealloc): Remove.
2771 (recompute_all_luids): New function.
2772 (gcse_main): Don't compute sets, and don't do related memory
2773 allocations/free-ing. If something changed before the end of the
2774 pass, update LUIDs using recompute_all_luids.
2775 (alloc_gcse_mem): Don't compute LUIDs. Don't allocate reg_set memory.
2776 (free_gcse_mem): Don't free it either.
2777 (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
2778 Use the df insn LUIDs.
2779 (load_killed_in_block): Likewise.
2780 (compute_hash_table_work): Don't compute reg_set_in_block.
2781 (compute_transp): Use DF_REG_DEF_CHAINs.
2782 (local_cprop_pass): Don't use compute_sets and related functions.
2783 (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
2784 Use get_max_uid() instead of max_cuid.
2785 (insert_insn_end_basic_block, pre_insert_copy_insn,
2786 update_ld_motion_stores): Don't try to
2787 keep reg_set tables up to date.
2788 (pre_insert_copies): Use df insn LUIDs.
2789 (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
2790 (reg_set_info): Don't use extra bitmap argument.
2791 (compute_store_table): Don't compute reg_set_in_block. Use DF scan
2792 information to compute regs_set_in_block.
2793 (free_store_memory, store_motion): Don't nullify reg_set_in_block.
2794 (bypass_jumps): Don't use compute_sets and friends.
2796 2009-04-26 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2799 * opts.c (undocumented_msg): Do not leave blank even with
2802 2009-04-25 Joseph Myers <joseph@codesourcery.com>
2804 * c-decl.c (build_enumerator): Allow values folding to integer
2805 constants but not integer constant expressions with a pedwarn if
2808 2009-04-25 Joseph Myers <joseph@codesourcery.com>
2811 * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
2812 with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
2813 type is an integer constant.
2815 2009-04-25 Uros Bizjak <ubizjak@gmail.com>
2818 * config/i386/i386.c (print_operand) ['z']: Revert handling of
2821 2009-04-25 Joseph Myers <joseph@codesourcery.com>
2824 * c-decl.c (grokdeclarator): Diagnose declarations of functions
2825 with variably modified return type and no storage class
2826 specifiers, except for the case of nested functions. Distinguish
2827 extern declarations of functions with variably modified return
2828 types from those of objects with variably modified types.
2830 2009-04-25 Jan Hubicka <jh@suse.cz>
2832 * tree.c (list_equal_p): New function.
2833 * tree.h (list_equal_p): Declare.
2834 * coretypes.h (edge_def, edge, const_edge, basic_block_def
2835 basic_block_def, basic_block, const_basic_block): New.
2836 * tree-eh.c (make_eh_edge): EH edges are not abnormal.
2837 (redirect_eh_edge): New function.
2838 (make_eh_edge_update_phi): EH edges are not abnormal.
2839 * except.c: Include tree-flow.h.
2840 (list_match): New function.
2841 (eh_region_replaceable_by_p): New function.
2842 (replace_region): New function.
2843 (hash_type_list): New function.
2844 (hash_eh_region): New function.
2845 (eh_regions_equal_p): New function.
2846 (merge_peers): New function.
2847 (remove_unreachable_regions): Verify EH tree when checking;
2849 (copy_eh_region_1): New function.
2850 (copy_eh_region): New function.
2851 (push_reachable_handler): New function.
2852 (build_post_landing_pads, dw2_build_landing_pads): Be ready for
2853 regions without label but with live RESX.
2854 * except.h (redirect_eh_edge_to_label): New.
2855 * tree-flow.h (redirect_eh_edge): New.
2856 * coretypes.h (edge_def, edge, const_edge, basic_block_def
2857 basic_block_def, basic_block, const_basic_block): Remove.
2858 * Makefile.in (except.o): Add dependency on tree-flow.h
2859 * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
2860 * basic-block.h (edge, const_edge, basic_block, const_basic_block):
2863 2009-04-25 Eric Botcazou <ebotcazou@adacore.com>
2866 * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
2867 on the destination of memcpy.
2869 2009-04-25 Paolo Bonzini <bonzini@gnu.org>
2871 * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
2872 REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
2873 REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
2875 2009-04-25 Jan Hubicka <jh@suse.cz>
2877 * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
2878 (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
2879 to be reached by different label than left.
2880 (update_eh_edges): Update comment; remove edge_to_remove if possible
2881 and return true if suceeded.
2882 (cleanup_empty_eh): Accept sharing map; handle shared regions.
2883 (cleanup_eh): Compute sharing map.
2884 * except.c (remove_eh_handler_and_replace): Add argument if we should
2886 (remove_unreachable_regions): Update for label sharing.
2887 (label_to_region_map): Likewise.
2888 (get_next_region_sharing_label): New function.
2889 (remove_eh_handler_and_replace): Add update_catch_try parameter; update
2891 (remove_eh_handler): Update.
2892 (remove_eh_region_and_replace_by_outer_of): New function.
2893 * except.h (struct eh_region): Add next_region_sharing_label.
2894 (remove_eh_region_and_replace_by_outer_of,
2895 get_next_region_sharing_label): Declare.
2896 * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
2898 2009-04-25 Jan Hubicka <jh@suse.cz>
2900 * tree-cfg.c (split_critical_edges): Split also edges where we can't
2901 insert code even if they are not critical.
2903 2009-04-25 Jan Hubicka <jh@suse.cz>
2905 * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
2906 (gimple_can_remove_branch_p): EH edges won't remove branch by
2908 * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
2909 updating of non-abnormal EH edges.
2910 * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
2911 (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
2912 (split_critical_edges): Split also edges where emitting code on them
2913 will lead to splitting later.
2915 2009-04-25 Uros Bizjak <ubizjak@gmail.com>
2916 H.J. Lu <hongjiu.lu@intel.com>
2919 * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
2920 the configured assembler supports fildq and fistpq mnemonics.
2921 (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
2922 * configure: Regenerated.
2925 * config/i386/i386.c (print_operand): Handle 'Z'.
2926 ['z']: Remove handling of special fild/fist suffixes.
2927 (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
2928 * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
2929 suffix of fild insn.
2930 (*floatsi<mode>2_vector_mixed): Ditto.
2931 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
2932 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
2933 (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
2934 (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
2935 * config/i386/gas.h (GAS_MNEMONICS): Remove.
2937 2009-04-25 Ben Elliston <bje@au.ibm.com>
2939 * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
2940 the source of a set operation.
2942 2009-04-25 Anatoly Sokolov <aesok@post.ru>
2944 * target.h (struct gcc_target): Add case_values_threshold field.
2945 * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
2946 (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
2947 * targhooks.c (default_case_values_threshold): New function.
2948 * targhooks.h (default_case_values_threshold): Declare function.
2949 * stmt.c (expand_case): Use case_values_threshold target hook.
2950 * expr.h (case_values_threshold): Remove declartation.
2951 * expr.c (case_values_threshold): Remove function.
2952 * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
2954 * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
2955 * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
2956 (avr_case_values_threshold): Declare as static.
2957 * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
2959 * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
2960 * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
2961 (mn10300_case_values_threshold): New function.
2963 2009-04-24 H.J. Lu <hongjiu.lu@intel.com>
2965 * ira.c (setup_cover_and_important_classes): Add enum cast.
2967 2009-04-24 Vladimir Makarov <vmakarov@redhat.com>
2969 * genpreds.c (write_enum_constraint_num): Output definition of
2970 CONSTRAINT_NUM_DEFINED_P macro.
2971 * ira.c (setup_cover_and_important_classes): Use
2972 CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
2974 2009-04-24 DJ Delorie <dj@redhat.com>
2976 * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
2977 __SH2A_SINGLE_ONLY__ also.
2979 2009-04-24 Steve Ellcey <sje@cup.hp.com>
2981 * config/ia64/ia64.md (movfs_internal): Allow flt constants.
2982 (movdf_internal): Ditto.
2983 * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
2984 SFmode and DFmode constants.
2985 (ia64_print_operand): Add 'G' format for printing
2986 floating point constants.
2988 2009-04-24 Richard Guenther <rguenther@suse.de>
2990 * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
2991 from unsigned additions.
2993 2009-04-24 Joseph Myers <joseph@codesourcery.com>
2995 * c-typeck.c (set_init_index): Allow array designators that are
2996 not integer constant expressions with a pedwarn if pedantic.
2998 2009-04-24 Bernd Schmidt <bernd.schmidt@analog.com>
3000 * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
3001 zero if no overlap in nonzero bits between the operands.
3003 2009-04-24 Ian Lance Taylor <iant@google.com>
3005 * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
3006 (record_dead_and_set_regs): Likewise.
3007 * df.h (struct df_mw_hardreg): Change flags field to int.
3008 (struct df_base_ref): Likewise.
3009 (struct df): Change changeable_flags field to int.
3010 * df-scan.c (df_defs_record): Change clobber_flags to int.
3011 * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
3012 constants rather than #define macros.
3013 (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
3014 (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
3015 (enum dwarf_calling_convention): Likewise.
3016 (enum dwarf_line_number_x_ops): Likewise.
3017 (enum dwarf_call_frame_info): Likewise.
3018 (enum dwarf_source_language): Likewise.
3019 * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
3020 (add_calling_convention_attribute): Likewise.
3021 * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
3022 (combine_comparisons): Change compcode to int. Add cast to enum type.
3023 * genrecog.c (maybe_both_true_2): Change c to int.
3024 (write_switch): Likewise. Add cast to enum type.
3025 * gimplify.c (gimplify_omp_for): Handle return values from
3026 gimplify_expr using MIN rather than bitwise or.
3027 (gimplify_expr): Add cast to enum type.
3028 * ipa-prop.c (update_jump_functions_after_inlining): Change
3029 IPA_BOTTOM to IPA_JF_UNKNOWN.
3030 * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
3031 Add casts to enum type.
3032 (setup_cover_and_important_classes): Change cl to int. Add casts
3034 (setup_class_translate): Change cl and mode to int.
3035 (ira_init_once): Change mode to int.
3036 (free_register_move_costs): Likewise.
3037 (setup_prohibited_mode_move_regs): Add casts to enum type.
3038 * langhooks.c (add_builtin_function_common): Rework assertion that
3039 value fits bitfield.
3040 * mcf.c (add_fixup_edge): Change type parameter to edge_type.
3041 * omega.c (omega_do_elimination): Avoid math on enum types.
3042 * optabs.c (expand_vec_shift_expr): Remove casts to int.
3043 * opts.c (set_debug_level): Change 2 to enum constant. Use new
3044 int local to handle integral_argment value.
3045 * regmove.c (try_auto_increment): Change PUT_MODE to
3047 * reload.c (push_secondary_reload): Add casts to enum type.
3048 (secondary_reload_class, find_valid_class): Likewise.
3049 * reload1.c (emit_input_reload_insns): Likewise.
3050 * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
3051 * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
3052 * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
3054 * tree.c (build_common_builtin_nodes): Add casts to enum type.
3055 * tree-complex.c (complex_lattice_t): Typedef to int rather than
3057 (expand_complex_libcall): Add casts to enum type.
3058 * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
3059 * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
3060 with ERROR_MARK, not NUM_TREE_CODES.
3061 (vect_create_epilog_for_reduction): Likewise.
3062 (vectorizable_reduction): Don't initialize epiloc_reduc_code.
3063 When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
3064 * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
3066 * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
3067 vect_unused_in_loop. Change 0 to loop_vect.
3068 * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
3069 * var-tracking.c (get_init_value): Change return type to enum
3071 * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
3072 * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
3074 (arm_override_options): Add casts to enum type.
3075 (arm_emit_tls_decoration): Likewise.
3076 * config/i386/i386.c (ix86_function_specific_restore): Add casts
3078 * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
3079 * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
3080 * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
3082 * config/s390/s390.c (code_for_builtin_64): Change to array of
3084 (code_for_builtin_31): Likewise.
3085 (s390_expand_builtin): Change code_for_builtin to enum insn_code
3087 * config/sparc/sparc.c (sparc_override_options): Change value
3088 field in struct code_model to enum cmodel. In initializer change
3089 0 to NULL and add cast to enum type.
3091 * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
3092 Change all callers. Issue a -Wc++-compat warning using
3093 lhs_origtype if necessary.
3094 (convert_for_assignment): Issue -Wc++-compat warnings about
3095 invalid conversions to enum type on assignment.
3096 * c-common.h (build_modify_expr): Update declaration.
3098 2009-04-24 Nick Clifton <nickc@redhat.com>
3100 * config/iq2000/iq2000.c (function_arg): Handle TImode values.
3101 (function_arg_advance): Likewise.
3102 * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
3105 2009-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
3107 * config/s390/constraints.md ('I', 'J'): Fix condition.
3109 2009-04-24 Diego Novillo <dnovillo@google.com>
3111 * gengtype-parse.c (parse_error): Add newline after message.
3113 2009-04-24 H.J. Lu <hongjiu.lu@intel.com>
3115 * config/i386/sse.md (avxmodesuffixs): Removed.
3116 (*avx_pinsr<avxmodesuffixs>): Renamed to ...
3117 (*avx_pinsr<ssevecsize>): This.
3119 2009-04-24 Bernd Schmidt <bernd.schmidt@analog.com>
3121 * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
3122 follow chains of regs with a single definition, and allow expressions
3123 that are function_invariant_p.
3124 (simple_rhs_p): Allow expressions that are function_invariant_p.
3126 2009-04-24 Paolo Bonzini <bonzini@gnu.org>
3129 * fold-const.c (fold_cond_expr_with_comparison): When folding
3130 > and >= to MAX, make sure the MAX uses the same type as the
3131 comparison's operands.
3133 2009-04-24 Nick Clifton <nickc@redhat.com>
3135 * config/frv/frv.c (frv_frame_access): Do not use reg+reg
3136 addressing for DImode accesses.
3137 (frv_print_operand_address): Handle PLUS case.
3138 * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
3140 2009-04-24 Jakub Jelinek <jakub@redhat.com>
3142 PR rtl-optimization/39794
3143 * alias.c (canon_true_dependence): Add x_addr argument.
3144 * rtl.h (canon_true_dependence): Adjust prototype.
3145 * cse.c (check_dependence): Adjust canon_true_dependence callers.
3146 * cselib.c (cselib_invalidate_mem): Likewise.
3147 * gcse.c (compute_transp): Likewise.
3148 * dse.c (scan_reads_nospill): Likewise.
3149 (record_store, check_mem_read_rtx): Likewise. For non-const-or-frame
3150 addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
3151 canon_base_addr of the group, plus optional offset.
3152 (struct group_info): Rename canon_base_mem to
3154 (get_group_info): Set canon_base_addr to canon_rtx of base, not
3155 canon_rtx of base_mem.
3157 2009-04-23 Paolo Bonzini <bonzini@gnu.org>
3159 * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
3160 Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
3162 2009-04-23 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
3164 * config/spu/spu-builtins.h: Delete file.
3166 * config/spu/spu.h (enum spu_builtin_type): Move here from
3168 (struct spu_builtin_description): Likewise. Add GTY marker.
3169 Do not use enum spu_function_code or enum insn_code.
3170 (spu_builtins): Add extern declaration.
3172 * config/spu/spu.c: Do not include "spu-builtins.h".
3173 (enum spu_function_code, enum spu_builtin_type_index,
3174 V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
3175 V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
3176 unsigned_V8HI_type_node, unsigned_V4SI_type_node,
3177 unsigned_V2DI_type_node): Move here from spu-builtins.h.
3178 (spu_builtin_types): Make static. Add GTY marker.
3179 (spu_builtins): Add extern declaration with GTY marker.
3182 * config/spu/spu-c.c: Do not include "spu-builtins.h".
3183 (spu_resolve_overloaded_builtin): Do not use spu_function_code.
3184 Check programmatically whether all parameters are scalar.
3186 * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
3188 2009-04-23 Eric Botcazou <ebotcazou@adacore.com>
3190 * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
3191 assignment from the constructor either if the target is volatile.
3193 2009-04-23 Daniel Jacobowitz <dan@codesourcery.com>
3195 * config/arm/arm.md (insv): Do not share operands[0].
3197 2009-04-23 Nathan Sidwell <nathan@codesourcery.com>
3199 * config/vxlib-tls.c (active_tls_threads): Delete.
3200 (delete_hook_installed): New.
3201 (tls_delete_hook): Don't delete the delete hook.
3202 (tls_destructor): Delete it here.
3203 (__gthread_set_specific): Adjust installing the delete hook.
3204 (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
3205 __gthread_leave_tsd_dtor_context.
3207 2009-04-23 Rafael Avila de Espindola <espindola@google.com>
3209 * c-format.c (gcc_tdiag_char_table): Add support for %E.
3211 2009-04-23 Uros Bizjak <ubizjak@gmail.com>
3213 * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
3215 (alpha_rtx_costs): Ditto.
3216 (emit_unlikely_jump): Use add_reg_note.
3217 (emit_frame_store_1): Ditto.
3218 (alpha_expand_prologue): Ditto.
3219 (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
3220 * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
3222 2009-04-23 Nick Clifton <nickc@redhat.com>
3224 * config/v850/v850.md (epilogue): Remove suppressed code.
3225 (return): Rename to return_simple and remove test of frame size.
3226 * config/v850/v850.c (expand_epilogue): Rename call to gen_return
3227 to gen_return_simple.
3229 2009-04-22 Jing Yu <jingyu@google.com>
3232 * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
3234 2009-04-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
3237 * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
3238 and RECORD_TYPE/UNION_TYPE. When outputing the actual element and the
3239 value is a VECTOR_CST, the element type is the element type of the
3242 2009-04-22 DJ Delorie <dj@redhat.com>
3244 * config/m32c/m32c.h: Update GTY annotations to new syntax.
3246 2009-04-22 Jakub Jelinek <jakub@redhat.com>
3248 * alias.c (find_base_term): Move around LO_SUM case, so that
3249 CONST falls through into PLUS/MINUS handling.
3252 * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
3253 into 0, use omit_one_operand.
3255 2009-04-23 Ben Elliston <bje@au.ibm.com>
3257 * config/rs6000/linux-unwind.h (get_regs): Remove type
3258 puns. Change the type of `pc' to an array of unsigned ints and
3259 update all users. Constify frame24.
3261 2009-04-22 DJ Delorie <dj@redhat.com>
3263 * config/m32c/m32c.c (m32c_special_page_vector_p): Move
3264 declarations before code.
3265 (current_function_special_page_vector): Likewise.
3266 (m32c_expand_insv): Silence a warning.
3268 2009-04-21 Taras Glek <tglek@mozilla.com>
3270 * alias.c: Update GTY annotations to new syntax.
3271 * basic-block.h: Likewise.
3272 * bitmap.h: Likewise.
3273 * c-common.h: Likewise.
3274 * c-decl.c: Likewise.
3275 * c-parser.c: Likewise.
3276 * c-pragma.c: Likewise.
3277 * c-tree.h: Likewise.
3278 * cfgloop.h: Likewise.
3279 * cgraph.h: Likewise.
3280 * config/alpha/alpha.c: Likewise.
3281 * config/arm/arm.h: Likewise.
3282 * config/avr/avr.h: Likewise.
3283 * config/bfin/bfin.c: Likewise.
3284 * config/cris/cris.c: Likewise.
3285 * config/darwin.c: Likewise.
3286 * config/frv/frv.c: Likewise.
3287 * config/i386/i386.c: Likewise.
3288 * config/i386/i386.h: Likewise.
3289 * config/i386/winnt.c: Likewise.
3290 * config/ia64/ia64.h: Likewise.
3291 * config/iq2000/iq2000.c: Likewise.
3292 * config/mips/mips.c: Likewise.
3293 * config/mmix/mmix.h: Likewise.
3294 * config/pa/pa.c: Likewise.
3295 * config/pa/pa.h: Likewise.
3296 * config/rs6000/rs6000.c: Likewise.
3297 * config/s390/s390.c: Likewise.
3298 * config/sparc/sparc.c: Likewise.
3299 * config/xtensa/xtensa.c: Likewise.
3300 * cselib.h: Likewise.
3301 * dbxout.c: Likewise.
3302 * dwarf2out.c: Likewise.
3303 * except.c: Likewise.
3304 * except.h: Likewise.
3305 * fixed-value.h: Likewise.
3306 * function.c: Likewise.
3307 * function.h: Likewise.
3308 * gimple.h: Likewise.
3309 * integrate.c: Likewise.
3310 * optabs.c: Likewise.
3311 * output.h: Likewise.
3314 * stringpool.c: Likewise.
3315 * tree-data-ref.c: Likewise.
3316 * tree-flow.h: Likewise.
3317 * tree-scalar-evolution.c: Likewise.
3318 * tree-ssa-address.c: Likewise.
3319 * tree-ssa-alias.h: Likewise.
3320 * tree-ssa-operands.h: Likewise.
3323 * varasm.c: Likewise.
3324 * varray.h: Likewise.
3326 * coretypes.h: Do not define GTY macro if it is already defined.
3327 * doc/gty.texi: Update GTY documentation to new syntax.
3328 * gengtype-lex.l: Enforce attribute-like syntax for GTY
3329 annotations on structs.
3330 * gengtype-parse.c: Likewise.
3332 2009-04-22 Mark Heffernan <meheff@google.com>
3334 * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
3336 2009-04-22 Kazu Hirata <kazu@codesourcery.com>
3338 * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
3341 2009-04-22 Kazu Hirata <kazu@codesourcery.com>
3343 * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
3344 the same as a PLUS without a shift. Increase the cost of a
3347 2009-04-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3349 * Makefile.in: Update dependencies.
3350 * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
3351 * errors.h: Remove bogus comment about compatibility.
3352 (warning): Update declaration.
3353 * genautomata.c: Update all calls to warning.
3354 * gimple.c: Do not include errors.h. Include toplev.h.
3355 * tree-ssa-structalias.c: Do not include errors.h.
3356 * omega.c: Likewise.
3357 * tree-ssa-reassoc.c: Likewise.
3358 * config/spu/spu-c.c: Likewise.
3359 * config/spu/t-spu-elf: Update dependencies.
3361 2009-04-22 Richard Guenther <rguenther@suse.de>
3363 PR tree-optimization/39824
3364 * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
3365 make sure the types are compatible.
3367 2009-04-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3370 * c-common.c (c_parse_error): Take a token_flags parameter.
3371 Use token_type for the token type instead.
3372 Pass token_flags to cpp_type2name.
3373 * c-common.h (c_parse_error): Update declaration.
3374 * c-parser.c (c_parser_error): Pass 0 as token flags.
3376 2009-04-22 Andrey Belevantsev <abel@ispras.ru>
3378 PR rtl-optimization/39580
3379 * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
3381 2009-04-22 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
3383 * function.c (expand_function_end): Do not emit a jump to the "naked"
3384 return label for fall-through returns.
3385 * except.c (sjlj_emit_function_exit): Always place the call to the
3386 unregister function at the location installed by expand_function_end.
3388 2009-04-22 Richard Guenther <rguenther@suse.de>
3390 PR tree-optimization/39845
3391 * tree-switch-conversion.c (build_arrays): Add new referenced vars.
3392 (gen_inbound_check): Likewise.
3394 2009-04-22 Nathan Sidwell <nathan@codesourcery.com>
3396 * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
3398 (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
3399 * config/vxlib.c (__gthread_once): Add race guard for PPC.
3401 2009-04-22 Paolo Bonzini <bonzini@gnu.org>
3403 * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
3404 sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
3405 shift counts to avoid out-of-bounds array accesses.
3407 2009-04-22 Paolo Bonzini <bonzini@gnu.org>
3409 * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
3410 (Pmode): Move above.
3412 2009-04-22 Uros Bizjak <ubizjak@gmail.com>
3414 * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
3415 NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
3416 GET_CODE macro. Use IN_RANGE macro where appropriate.
3417 * config/alpha/alpha.h: Ditto.
3418 * config/alpha/alpha.md: Ditto.
3419 * config/alpha/constraints.md: Ditto.
3420 * config/alpha/predicates.md: Ditto.
3422 2009-04-22 Paolo Bonzini <bonzini@gnu.org>
3424 * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
3425 * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3426 * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3427 * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3428 * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3429 * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3430 * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3431 * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3432 * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3433 * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3434 * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3435 * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3436 * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3437 * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3438 * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3439 * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3440 * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3441 * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3442 * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3443 * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3444 * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3445 * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3446 * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3447 * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3448 * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3449 * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3450 * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
3452 2009-04-22 Laurynas Biveinis <laurynas.biveinis@gmail.com>
3454 * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
3455 references from comments.
3456 * cfgbuild.c: (count_basic_blocks): Delete.
3457 (find_basic_blocks_1): Delete.
3458 (find_basic_blocks): Delete.
3459 * except.c (finish_eh_generation): Make static. Move comment from
3460 except.h here. Remove find_basic_blocks references from comments.
3461 * except.h (finish_eh_generation): Delete.
3462 * basic-block.h (find_basic_blocks): Delete.
3463 * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
3465 2009-04-22 Dave Korn <dave.korn.cygwin@gmail.com>
3467 * sdbout.c (sdbout_symbol): Pass VOIDmode to eliminate_regs.
3468 (sdbout_parms): Likewise.
3470 2009-04-21 Kaz Kojima <kkojima@gcc.gnu.org>
3472 * config/sh/sh.c (prepare_cbranch_operands): Use
3473 LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
3474 (expand_cbranchdi4): Likewise.
3475 (from_compare): Add cast to enum type.
3476 (expand_cbranchsi4): Use add_reg_note.
3477 (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
3478 (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
3479 (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
3480 (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
3481 * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
3482 instead of CODE_FOR_nothing.
3483 (cbranchdi4): Likewise. Fix the order of arguments for
3485 (push_fpscr): Use add_reg_note.
3486 (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
3487 reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
3489 2009-04-21 Joseph Myers <joseph@codesourcery.com>
3491 * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
3492 ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
3493 ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
3494 ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
3495 ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
3496 FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
3497 config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
3498 config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
3499 config/alpha/x-vms, config/arc/t-arc,
3500 config/arm/README-interworking, config/arm/arm-c.c,
3501 config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
3502 config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
3503 config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
3504 config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
3505 config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
3506 config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
3507 config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
3508 config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
3509 config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
3510 config/cris/t-elfmulti, config/crx/t-crx,
3511 config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
3512 config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
3513 config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
3514 config/h8300/t-h8300, config/i386/athlon.md,
3515 config/i386/darwin-libgcc.10.4.ver,
3516 config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
3517 config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
3518 config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
3519 config/i386/t-linux64, config/i386/t-nwld,
3520 config/i386/t-rtems-i386, config/i386/t-sol2-10,
3521 config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
3522 config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
3523 config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
3524 config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
3525 config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
3526 config/iq2000/t-iq2000, config/libgcc-glibc.ver,
3527 config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
3528 config/m32r/t-m32r, config/m68hc11/t-m68hc11,
3529 config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
3530 config/m68k/t-uclinux, config/mcore/t-mcore,
3531 config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
3532 config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
3533 config/mips/crtn.asm, config/mips/irix-crti.asm,
3534 config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
3535 config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
3536 config/mips/mips-fixed.md, config/mips/sb1.md,
3537 config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
3538 config/mips/t-iris6, config/mips/t-isa3264,
3539 config/mips/t-libgcc-mips16, config/mips/t-linux64,
3540 config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
3541 config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
3542 config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
3543 config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
3544 config/mn10300/t-linux, config/mn10300/t-mn10300,
3545 config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
3546 config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
3547 config/picochip/libgccExtras/clzsi2.asm,
3548 config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
3549 config/rs6000/darwin-libgcc.10.4.ver,
3550 config/rs6000/darwin-libgcc.10.5.ver,
3551 config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
3552 config/rs6000/t-aix43, config/rs6000/t-aix52,
3553 config/rs6000/t-darwin, config/rs6000/t-fprules,
3554 config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
3555 config/rs6000/t-lynx, config/rs6000/t-netbsd,
3556 config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
3557 config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
3558 config/rs6000/t-rtems, config/rs6000/t-spe,
3559 config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
3560 config/score/t-score-elf, config/sh/divcost-analysis,
3561 config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
3562 config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
3563 config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
3564 config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
3565 config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
3566 config/stormy16/stormy-abi, config/stormy16/t-stormy16,
3567 config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
3568 config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
3569 config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
3570 config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
3571 config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
3572 gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
3573 java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
3574 limitx.h, version.c, xcoff.h: Add copyright and license notices.
3575 * config/h8300/genmova.sh: Include copyright and license notices
3576 in generated output.
3577 * config/h8300/mova.md: Regenerate.
3578 * doc/install.texi2html: Include word "Copyright" in copyright
3579 notice and use name "Free Software Foundation, Inc.".
3580 * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
3581 ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
3582 ChangeLog-2007, ChangeLog-2008: Correct dates.
3584 2009-04-21 Eric Botcazou <ebotcazou@adacore.com>
3586 * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
3587 NE_EXPR operations as well.
3588 * c-parser.c (c_parser_condition): Do not set location information on
3590 (c_parser_conditional_expression): Likewise.
3591 (c_parser_binary_expression): Set location information on operators.
3592 * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
3593 TRUTH_NOT_EXPR has been folded.
3594 * fold-const.c (fold_truth_not_expr): Copy location information from
3595 the incoming expression to the outgoing one.
3596 * gimplify.c (shortcut_cond_r): Add locus parameter. Pass it to
3597 recursive calls on the LHS of the operator but pass that of the
3598 operator to recursive calls on the RHS of the operator. Set it
3600 (shortcut_cond_expr): Set the locus of the operator on the second
3601 COND_EXPR and that of the expression on the first in degenerate cases.
3602 Pass the locus of the expression to calls to shortcut_cond_r.
3603 Set the locus of the 'then' block on the associated jump, if any.
3604 (gimplify_boolean_expr): Add locus parameter. Set it on the COND_EXPR.
3605 (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
3606 expression to call to gimplify_boolean_expr.
3608 2009-04-21 Kai Tietz <kai.tietz@onevision.com>
3610 * config.gcc: Add additional configuration for
3611 i686-w64-mingw* and x86_64-w64-mingw* triplet.
3612 * config/i386/mingw-w64.h: New mingw-w64 specific header.
3613 (CPP_SPEC): Redefine for allowing -municode option.
3614 (STARTFILE_SPEC): Likewise.
3615 * config/i386/t-mingw-w64: New.
3616 * config/i386/mingw-w64.opt: New.
3617 (municode): Add new target option.
3618 * doc/invoke.texi (municode): Add documentation for new option.
3620 2009-04-21 Ian Lance Taylor <iant@google.com>
3622 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3623 Correct test for number of arguments.
3624 * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
3626 2009-04-21 Andreas Schwab <schwab@linux-m68k.org>
3628 * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
3629 argument of emit_library_call.
3631 2009-04-21 Richard Guenther <rguenther@suse.de>
3634 * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
3635 inside VIEW_CONVERT_EXPRs.
3637 2009-04-21 Martin Jambor <mjambor@suse.cz>
3639 * tree-switch-conversion.c (build_constructors): Split a long line.
3640 (constructor_contains_same_values_p): New function.
3641 (build_one_array): Create assigns of constants if possible, do not
3642 call mark_sym_for_renaming, call update_stmt.
3643 (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
3644 make_rename_temp. Do not call mark_symbols_for_renaming, call
3646 (gen_def_assigns): Do not call mark_symbols_for_renaming or
3647 find_new_referenced_vars, call update_stmt.
3648 (gen_inbound_check): Use create_tmp_var and create ssa names manually
3649 instead of calling make_rename_temp. Do not call
3650 find_new_referenced_vars or mark_symbols_for_renaming, call
3653 2009-04-21 Richard Guenther <rguenther@suse.de>
3655 PR tree-optimization/39827
3656 * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
3657 (tree_ssa_phiprop): Pass the correct array size.
3659 2009-04-21 Uros Bizjak <ubizjak@gmail.com>
3661 * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
3663 2009-04-21 Manuel López-Ibáñez <manu@gcc.gnu.org>
3666 * c-typeck.c (lvalue_p): Move declaration ...
3667 * c-common.h (lvalue_p): ... to here.
3668 * c-common.c (candidate_equal_p): New.
3669 (add_tlist): Use it.
3670 (merge_tlist): Use it.
3671 (warn_for_collisions_1): Likewise.
3672 (warning_candidate_p): Accept more candidates.
3673 (verify_tree): A warning candidate can be an expression. Use
3676 2009-04-21 Ben Elliston <bje@au.ibm.com>
3679 * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
3680 for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
3681 options. Remove -mcall-solaris documentation.
3683 2009-04-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3686 * doc/invoke.texi (-Wlong-long): Update description.
3687 * c-lex (interpret_integer): Only warn if there was no previous
3688 overflow and -Wlong-long is enabled.
3689 * c-decl.c (declspecs_add_type): Drop redundant flags.
3690 * c.opt (Wlong-long): Init to -1.
3691 * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
3692 and front-end warn_long_long. Wlong-long only depends on other
3693 flags if it is uninitialized.
3694 * c-parser.c (disable_extension_diagnostics): warn_long_long is
3695 the same for CPP and FE.
3696 (restore_extension_diagnostics): Likewise.
3698 2009-04-20 Ian Lance Taylor <iant@google.com>
3700 Fix enum conversions which are invalid in C++:
3701 * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
3702 * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
3703 * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
3704 * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
3705 * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
3706 (dbxout_parms): Likewise.
3707 * df-core.c (df_set_flags): Change changeable_flags parameter to int.
3708 (df_clear_flags): Likewise.
3709 * df-problems.c (df_rd_bb_local_compute_process_def): Change
3710 top_flag parameter to int.
3711 (df_chain_create_bb_process_use): Likewise.
3712 (df_chain_add_problem): Change chain_flags parameter to unsigned int.
3714 * df-scan.c (df_ref_create): Change ref_flags parameter to int.
3715 (df_ref_create_structure, df_def_record_1): Likewise.
3716 (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
3717 (df_notes_rescan): Change 0 to VOIDmode in function call.
3718 (df_get_call_refs, df_insn_refs_collect): Likewise.
3719 (df_bb_regs_collect): Likewise.
3720 (df_entry_block_defs_collect): Likewise.
3721 (df_exit_block_uses_collect): Likewise.
3722 * df.h: Update declarations.
3723 * double-int.c (double_int_divmod): Add cast to enum type.
3724 * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
3725 * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
3726 (based_loc_descr): Likewise.
3727 (loc_descriptor_from_tree_1): Change first_op and second_op to
3728 enum dwarf_location_atom. Add cast to enum type.
3729 * expmed.c (init_expmed): Change 0 to SET in function call.
3730 * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
3731 (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
3732 (do_store_flag): Likewise.
3733 * fixed-value.h (struct fixed_value): Change mode to enum
3735 * function.c (assign_parms): Change 0 to VOIDmode in function call.
3736 * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
3738 (insert_insn_decl, insert_decl, insert_state): Likewise.
3739 (automata_list_finish): Likewise.
3740 * genrecog.c (process_define_predicate): Add cast to enum type.
3741 * gensupport.c (init_predicate_table): Add cast to enum type.
3742 * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
3744 (gimple_build_call_1, gimple_build_label): Likewise.
3745 (gimple_build_goto, gimple_build_asm_1): Likewise.
3746 (gimple_build_switch_1, gimple_build_cdt): Likewise.
3747 * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
3748 (enum fallback): Rename from enum fallback_t.
3749 (fallback_t): Typedef as int.
3750 * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
3751 GSI_SAME_STMT in function call.
3752 * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
3754 (setup_reg_class_relations): Likewise.
3755 (setup_reg_class_nregs): Change cl to int. Add casts to enum type.
3756 (setup_prohibited_class_mode_regs): Add cast to enum type.
3757 (setup_prohibited_mode_move_regs): Likewise.
3758 * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
3759 (record_address_regs): Change i to enum reg_class.
3760 * lists.c (alloc_EXPR_LIST): Add cast to enum type.
3761 * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
3762 (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
3763 (GET_MODE_2XWIDER_MODE): Likewise.
3764 (GET_CLASS_NARROWEST_MODE): Likewise.
3765 * omp-low.c (expand_omp_for): Add cast to enum type.
3766 * optabs.c (debug_optab_libfuncs): Add casts to enum type.
3767 * opts.c (enable_warning_as_error): Change kind to diagostic_t.
3768 * postreload.c (reload_cse_simplify_operands): Change rclass local
3770 * predict.c (combine_predictions_for_insn): Change best_predictor
3771 and predictor to enum br_predictor.
3772 (combine_predictions_for_bb): Likewise.
3773 (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
3774 use SET_PREDICT_EXPR_OUTCOME.
3775 * real.c (real_arithmetic): Change icode to code in function call.
3776 * reginfo.c (init_move_cost): Add casts to enum type.
3777 (init_reg_sets_1, init_fake_stack_mems): Likewise.
3778 * regmove.c (regclass_compatible_p): Change class0 and class1 to
3780 * reload.c (find_valid_class): Add casts to enum type.
3781 (push_reload): Change 0 to NO_REGS in function call.
3782 (find_reloads): Change this_alternative to array of enum
3783 reg_class. Remove some now-unnecessary casts.
3784 (make_memloc): Change 0 to VOIDmode in function call.
3785 * reload1.c (reload): Change 0 to VOIDmode in function call.
3786 (eliminate_regs_1, elimination_effects): Likewise.
3787 (eliminate_regs_in_insn): Likewise.
3788 (emit_input_reload_insns): Add cast to enum type.
3789 (delete_output_reload): Change 0 to VOIDmode in function call.
3790 * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
3791 to enum type in function call.
3792 * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
3793 (SET_PREDICT_EXPR_OUTCOME): Define.
3794 * tree-dump.c (get_dump_file_info): Change phase parameter to int.
3795 (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
3796 (dump_initialized_p, dump_flag_name, dump_end): Likewise.
3797 (dump_function): Likewise.
3798 * tree-dump.h: Update declarations.
3799 * tree-pass.h: Update declarations.
3800 * varasm.c (assemble_integer): Change mclass to enum mode_class.
3801 * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
3803 (arm_rtx_costs_1): Correct parenthesization.
3804 (arm_rtx_costs): Add casts to enum type.
3805 (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
3806 (vfp_emit_fstmd): Use add_rg_note.
3807 (emit_multi_reg_push, emit_sfm): Likewise.
3808 (thumb_set_frame_pointer): Likewise.
3809 (arm_expand_prologue): Likewise.
3810 (arm_regno_class): Change return type to enum reg_class.
3811 (thumb1_expand_prologue): Use add_reg_note.
3812 * config/arm/arm-protos.h (arm_regno_class): Update declaration.
3813 * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
3815 * config/arm/gentune.sh: Add cast to enum type.
3816 * config/arm/arm-tune.md: Rebuild.
3817 * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
3818 (ix86_split_fp_branch, predict_jump): Likewise.
3819 (ix86_expand_multi_arg_builtin): Change sub_code from enum
3820 insn_code to enum rtx_code.
3821 (ix86_builtin_vectorized_function): Add cast to enum type.
3822 * config/i386/i386.md (truncdfsf2): Change slot to enum
3824 (truncxf<mode>2, isinf<mode>2): Likewise.
3825 * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
3827 * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
3828 (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
3829 (insert_bundle_state): Change 1 to INSERT in function call.
3830 (ia64_add_bundle_selector_before): Likewise.
3831 * config/ia64/ia64.md (cpu attr): Add cast to enum type.
3832 (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
3833 (restore_stack_nonlocal): Likewise.
3834 * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
3836 * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
3838 (mips_rtx_costs): Likewise.
3839 (mips_override_options): Add casts to enum type.
3840 * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
3842 * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
3843 (store_reg, set_reg_plus_d): Likewise.
3844 (hppa_expand_prologue, hppa_profile_hook): Likewise.
3845 * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
3847 (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
3849 (emit_unlikely_jump): Use add_reg_note.
3850 (rs6000_emit_allocate_stack): Likewise.
3851 (rs6000_frame_related, rs6000_emit_prologue): Likewise.
3852 (output_toc): Change 1 to INSERT in function call.
3853 (output_profile_hook): Change 0 to LCT_NORMAL in function call.
3854 (rs6000_initialize_trampoline): Likewise.
3855 (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
3857 * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
3858 (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
3859 (s390_expand_setmem, s390_expand_cmpmem): Likewise.
3860 (save_gprs): Use add_reg_note.
3861 (s390_emit_prologue): Likewise.
3862 (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
3863 * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
3864 (sparc_fold_builtin): Add cast to enum type.
3865 * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
3867 (spu_expand_prologue): Use add_reg_note.
3868 (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
3870 2009-04-20 Ian Lance Taylor <iant@google.com>
3872 * c-parser.c (c_parser_attributes): Change VEC back to tree list.
3873 (c_parser_postfix_expression_after_primary): Get VEC for list of