OSDN Git Service

* Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-05-13  Ian Lance Taylor  <iant@google.com>
2
3         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
4         tree.def.
5
6 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
7
8         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
9         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
10         multilibs.
11         * config/m68k/m68k.h (FL_UCLINUX): Define.
12
13 2009-05-13  Jan Hubicka  <jh@suse.cz>
14
15         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
16
17 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
18
19         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
20         unless -fschedule-insns is specified.
21
22 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
23
24         PR target/39561
25         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
26         TARGET_EXPAND_CBRANCHDI4.
27         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
28         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
29         (cmpeqdi): Fix comment.
30
31 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
32
33         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
34         (sh_legitimate_address_p): Likewise.
35         * config/sh/sh.c (sh_legitimate_index_p): New.
36         (sh_legitimate_address_p): Likewise.
37         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
38         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
39         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
40         (MAYBE_BASE_REGISTER_RTX_P): New macro.
41         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
42         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
43         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
44         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
45         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
46
47 2009-05-12  Jan Hubicka  <jh@suse.cz>
48
49         * tree-inline.c (estimate_operator_cost): Add operands;
50         when division happens by constant, it is cheap.
51         (estimate_num_insns): Loads and stores are not having cost of 0;
52         EH magic stuff is cheap; when computing runtime cost of switch,
53         use log2 base of amount of its cases; builtin_expect has cost of 0;
54         compute cost for moving return value of call.
55         (init_inline_once): Initialize time_based flags.
56         * tree-inline.h (eni_weights_d): Add time_based flag.
57
58 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
59
60         * df-core.c: Update head documentation.
61
62 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
63
64         PR bootstrap/40118
65         * rs6000.c (rs6000_generate_compare): Use op1b instead of
66         shadowing exisiting variable op1.
67
68 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
69
70         PR target/37179
71         * config/i386/driver-i386.c (processor_signatures): New enum.
72         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
73         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
74         processor signature to detect geode processor.
75
76 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
77
78         Revert:
79
80         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
81
82         * optabs.c (prepare_cmp_insn): Temporarily disable test that
83         causes spurious differences between trunk and cond-optab branch.
84
85 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
86
87         * dojump.c (compare_from_rtx): Delete.
88         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
89         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
90         if the comparison does not satisfy the predicate; test predicates for
91         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
92         further if one existing pattern fails.
93         * expr.h (compare_from_rtx): Delete.
94         (prepare_operand): Declare it.
95         * optabs.c: Change "lib call" to "libcall" throughout.
96         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
97         HAVE_conditional_trap, emit_cmp_insn): Delete.
98         (can_compare_p): Delete cmp_optab case.
99         (prepare_float_lib_cmp): Return an rtx and a machine mode.
100         Accept other parameters by value.
101         (prepare_operand): Make non-static.
102         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
103         other parameters by value.  Try to widen operands here based on
104         an optab_methods argument and looking at cbranch_optab.
105         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
106         loop.  Use cbranch_optab directly.
107         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
108         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
109         assertion.
110         (emit_conditional_move, emit_conditional_add): Inline what's needed
111         of compare_from_rtx, using new prepare_cmp_insn for the rest.
112         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
113         with COMPARE.  Move cmov_optab and cstore_optab above
114         with cbranch_optab, move cmp_optab down with ucmp_optab,
115         remove tst_otpab.  Do not initialize trap_rtx.
116         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
117         for trap code.  Do not check HAVE_conditional_trap.  Use
118         prepare_cmp_insn.  Accept no predicate for operand 3.
119         * optabs.h (OTI_cmp): Mark as used only for libcalls.
120         (OTI_ctrap, ctrap_optab): New.
121         (tst_optab): Delete.
122         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
123         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
124         with lookup of ctrap_optab.
125         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn,
126         setcc_gen_code): Delete.
127         (ctrap_optab): New.
128
129         * combine.c (combine_simplify_rtx, simplify_set): Do not
130         special case comparing against zero for cc0 machines.
131         * simplify-rtx.c (simplify_binary_operation_1): Never remove
132         COMPARE on cc0 machines.
133         (simplify_relational_operation): Return a new expression when
134         a COMPARE could be removed.
135         * final.c (final_scan_insn): Compare cc_status values
136         against LHS of a (compare FOO (const_int 0)) cc0 source.
137         Also check if cc_status.value is the full compare.
138
139         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
140         (cstoreMM4): Document.
141         (conditional_trap): Document ctrapMM4 instead.
142         (sync_compare_and_swapMM): Refer to cbranchcc4.
143         (Dependent Patterns): Eliminate obsolete information referring to
144         the old jump optimization phase.
145         (Canonicalization): Include cbranchcc4 case, omit canonicalization
146         of compares with 0 on cc0 machines.
147         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
148         avoiding references to cc0.  Remove text about storing operands
149         in cmpMM.
150         * doc/tm.texi (Condition Codes): Include blurb on different
151         condition code representations, separate into subsections for
152         CC0, MODE_CC and conditional execution.
153
154         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
155         alpha_emit_setcc): Accept operands and a machine mode.
156         * config/alpha/alpha.c (alpha_emit_conditional_branch):
157         Get code/op0/op1 from operands, use machine mode argument
158         instead of alpha_compare.fp_p.  Emit the branch here.
159         (alpha_emit_setcc): Likewise, and return boolean.
160         (alpha_emit_conditional_move): Likewise.  Assert that
161         cmp_op_mode == cmp_mode, and simplify accordingly.
162         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
163         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
164         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
165         Delete.
166         (stack probe test): Use cbranchdi4.
167         * config/alpha/predicates.md (alpha_cbranch_operator): New.
168
169         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
170         * config/arc/arc.h (movsicc, movsfcc): Use it.
171         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
172         (cbranchsi4, cstoresi4): New.
173         (cmpsi, bCC and sCC expanders): Remove. 
174
175         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
176         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
177         * config/arm/predicates.md (arm_comparison_operator): Only include
178         floating-point operators if there is a hardware floating-point unit.
179         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
180         deferring to cbranch_cc and cstore_cc respectively.
181         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
182         cbranch_cc, cstore_cc): New.
183         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
184         arm_compare_op1.
185         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
186
187         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
188         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
189         as an argument.
190         (adjust_insn_length): Adjust calls.
191         (avr_reorg): Handle (compare (foo) (const_int 0)).
192         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
193         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
194         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
195         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
196         (bCC): Remove.
197         (cbranchqi4, cbranchhi4, cbranchsi4): New.
198         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
199
200         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
201         (cbranchsi4, cstorebi4, cstoresi4): New.
202         (movbisi): This insn is duplicate, split it to zero_extend.
203         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
204         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
205         (bfin_optimize_loop): Use cbranch expander.
206         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
207         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
208         (bfin_bimode_comparison_operator): ... this.
209         (bfin_direct_comparison_operator): New.
210  
211         * config/cris/cris.c (cris_normal_notice_update_cc): Look
212         inside (compare FOO (const_int 0)).
213         (cris_rtx_costs): Handle ZERO_EXTRACT.
214         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
215         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
216         (*tstdi_v32): Delete.
217         (*cmpdi_non_v32): Add M alternative for operand 1.
218         (cmpsi, cmp<mode>): Make private.
219         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
220         with COMPARE.
221         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
222
223         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
224         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
225         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
226         (cc_reg_operand): New.
227         (any_cond): Delete.
228         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
229         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
230         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
231         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
232         crx_expand_scond): Delete.
233
234         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
235         (cbranchsi4): New.
236         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
237         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
238
239         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
240         cstoresi4, cstoresf4, cstoredf4): New.
241         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
242         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
243         Receive the entire operands array.
244         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
245         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
246         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
247         Get test/op0/op1 from the operands array.
248         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
249
250         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
251         (h8300_expand_store): New.
252         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
253         (const_int 0)).
254         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
255         (h8300_expand_store): New.
256         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
257         or do not try to produce (set (cc0) REG).
258         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
259         change a compare into a move to a scratch register.  Disable some
260         peepholes when comparing with zero.
261         (tstsi, tsthi, tstsi, cmpqi): Make private.
262         (cmphi): Delete.
263         (bCC, sCC): Delete.
264         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
265         cstoresi4): New.
266
267         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
268         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
269         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
270         (ix86_emit_i387_log1p): Use cbranchxf2.
271         (ix86_expand_setcc): Return void.
272         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
273         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
274         cmp<MODEF>, cmpcc): Remove.
275         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
276         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
277         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
278         (sCC and bCC expanders): Remove.
279         (stack_protect_test): Use cbranchcc4.
280
281         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
282         Delete.
283         (ia64_expand_compare): Accept three rtx by reference and return void.
284         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
285         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
286         from *expr.  Update *expr with the BImode comparison to do.
287         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
288         cmptf, bCC, sCC, conditional_trap): Delete.
289         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
290         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
291         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
292         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
293         * config/ia64/predicates.md (ia64_cbranch_operator): New.
294
295         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
296         type of last argument.
297         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
298         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
299         use machine mode argument instead of branch_type.  Remove dead
300         code for floating-point comparisons.
301         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
302         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
303         Remove.
304         (cbranchsi4, cstoresi4): New.
305         * config/iq2000/predicates.md (reg_or_const_operand): New.
306
307         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
308         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
309         (b<code>_op): Rewrite to...
310         (bcc_op): ... this, using match_operator.
311         (s<code>_op): Rewrite to...
312         (scc_op): ... this, using match_operator.
313         (s<code>_24_op): Rewrite to...
314         (scc_op_24): ... this, using match_operator.
315         (s<code>_<mode>): Rewrite to...
316         (cstore<mode>4): ... this, using match_operator.
317         (s<code>_<mode>_24): Rewrite to...
318         (cstore<mode>4_24): ... this, using match_operator.
319         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
320         m32c_unpend_compare, m32c_expand_scc): Delete.
321         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
322         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
323         (m32c_expand_movcc): Change NE to EQ if necessary.
324         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
325
326         * config/m32r/m32r-protos.h (gen_cond_store): New.
327         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
328         (gen_cond_store): New, from sCC patterns.
329         (m32r_expand_block_move): Use cbranchsi4.
330         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
331         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
332         (cbranchsi4, cstoresi4): New.
333         
334         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
335         Delete.
336         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
337         (m68hc11_notice_update_cc): Look into a compare with 0.
338         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
339         Delete.
340         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
341         cmphi, cmpqi, bCC): Delete.
342         (cbranchsi4, cbranchhi4, cbranchqi4): New.
343         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
344         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
345         sets with COMPARE.
346
347         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
348         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
349         * config/m68k/constraints.md (H): New.
350         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
351         the define_insn below.
352         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
353         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
354         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
355         patterns): Wrap RHS with COMPARE.
356         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
357         (*cmpdi_internal): Name this pattern.
358         (cmpdi): Change to define_insn.
359         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
360         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
361         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
362         predicate.
363         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
364         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
365         (conditional_trap): Change to...
366         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
367         (*conditional_trap): Use the ordered_comparison_operator and
368         const1_operand predicates.
369         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
370         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
371         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
372         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
373
374         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
375         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
376         (mcore_gen_compare): New. 
377         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
378         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
379         (mcore_gen_compare): ... this.
380         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
381         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
382         (stack probe pattern): Use cbranchsi4.
383
384         * config/mips/predicates.md (mips_cstore_operator): New.
385         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
386         * config/mips/mips.md (any_cond): Delete.
387         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
388         always succeed.
389         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
390         fixuns_truncsfdi2): Use cbranch patterns.
391         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
392         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
393         Adjust call to mips_expand_conditional_branch.
394         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
395         cstore<GPR:mode>4.
396         * config/mips/mips-protos.h (mips_expand_conditional_branch,
397         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
398         * config/mips/mips.c (cmp_operands): Delete.
399         (mips_emit_compare): Get comparison operands from *op0/*op1.
400         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
401         that it succeeds.  Use op0/op1 instead of cmp_operands.
402         (mips_expand_conditional_branch, mips_expand_conditional_move,
403         mips_expand_conditional_trap): Likewise.
404         (mips_block_move_loop): Use cbranch patterns. 
405         * config/mips/mips.h (cmp_operands): Delete.
406
407         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
408         (mmix_gen_compare_reg): Just return a register in the right CC mode.
409         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
410         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
411         (*cmpcc_folded): Rename to...
412         (*cmpdi_folded): this.
413         (*cmpcc): Rename to...
414         (*cmps): ... this.
415         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
416         (bCC): Remove.
417         (cbranchdi4): New.
418         (cbranchdf4): New.  Handle invalid comparisons here.
419         * config/mmix/predicates.md (float_comparison_operator): New.
420
421         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
422         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
423         * config/mn10300/mn10300.md (tst): Delete.
424         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
425         Name these patterns and wrap RHS in a compare.
426         (*cmpsi): Make this pattern private.  Include tst.
427         (*cmpsf): Make this pattern private.
428         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
429         (compare with zero peepholes): Likewise.
430         (bCC): Remove.
431         (cbranchsi4, cbranchsf4): New.
432         (casesi): Use cbranchsi4.
433
434         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
435         hppa_branch_type): Delete.
436         (return_addr_rtx): Use cbranchsi4.
437         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
438         Emit CCFPmode comparison here.
439         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
440         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
441         hppa_branch_type): Delete.
442         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
443         (movsicc, movdicc): Remove references to hppa_compare_op0,
444         hppa_compare_op1 and compare_from_rtx.
445         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
446         (casesi): Use cbranchsi4.
447
448         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
449         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
450         * config/pdp11/pdp11.md (register_or_const0_operand): New.
451         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
452         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
453         (bCC): Delete.
454         (cbranchdf4, cbranchhi4, cbranchqi4): New.
455         (*branch, *branch_inverted): New.
456
457         * config/picochip/picochip.md (cbranchhi4): Use
458         ordered_comparison_operator.
459         (cmphi, bCC): Remove.
460
461         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
462         (trap_comparison_operator): Delete.
463         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
464         rs6000_emit_cbranch): Accept mode and operands.
465         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
466         rs6000_compare_fp_p): Delete.   
467         (rs6000_generate_compare): Accept mode and comparison.  Extract code
468         and op0/op1 from there.  Replace references to rs6000_compare_op0
469         and rs6000_compare_op1.
470         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
471         extract result from passed operands.
472         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
473         extract loc from passed operands.
474         (rs6000_emit_cmove): Likewise.
475         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
476         rs6000_compare_fp_p): Delete.
477         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
478         (cbranch<GPR>4, cbranch<FP>4): New.
479         (cstore<mode>4): New.  Consolidate here all choices about when to use
480         portable or specialized sCC sequences.
481         (stack_protect_test): Use cbranchsi4.
482         (conditional_trap): Replace with ctrap<GPR>4.
483         (conditional trap insn): Replace trap_comparison_operator with
484         ordered_comparison_operator. 
485
486         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
487         (s390_emit_prologue): Use ctrap.
488         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
489         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
490         New predicates replacing...
491         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
492         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
493         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
494         (add<mode>cc): Do not use s390_compare_op0/op1.
495         (s<code>): Change to...
496         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
497         (seq): Change to...
498         (cstorecc4): ... this.  Handle EQ or NE equally.
499         (*sne): Un-privatize for use in cstorecc4.
500         (b<code>): Change to...
501         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
502         (conditional_trap): Replace with...
503         (ctrap<GPR>4, ctrap<FP>4): ... these.
504         (stack_protect): Use cbranchcc4.
505
506         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
507         * config/score/score-protos.h (score_gen_cmp): Delete.
508         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
509         (score_block_move-loop): Use cbranchsi4.
510         * config/score/score.md (cbranchsi4): New.
511         (cmpsi, bCC): Delete.
512         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
513         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
514         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
515         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
516         * config/score/score3.h (score3_gen_cmp): Delete.
517         * config/score/score7.h (score7_gen_cmp): Delete.
518
519         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
520         (sh_emit_scc_to_t): ... this.  Return void.
521         (from_compare): Rename to...
522         (sh_emit_compare_and_branch): ... this.
523         (sh_emit_compare_and_set): New.
524         (sh_expand_t_scc): Accept operands.
525         * config/sh/predicates.md (sh_float_comparison_operator): New.
526         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
527         (prepare_scc_operands): Rename to...
528         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
529         arguments.
530         (sh_emit_cheap_store_flag): New.
531         (sh_emit_set_t_insn): New.
532         (from_compare): Rename to...
533         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
534         handling of TARGET_SH2E floating point to avoid recursive call.
535         Generate branch here.
536         (sh_emit_compare_and_set): New.
537         (sh_expand_t_scc): Get op0/op1 from arguments.
538         (sh_emit_cheap_store_flag): New.
539         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
540         cases.
541         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
542         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
543         (movsicc, movdicc): Do nothing when it recreated operands from
544         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
545         prepare_scc_operands (now sh_emit_scc_to_t).
546         (udivdi3): Use cstoresi4.
547         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
548         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
549         (cbranchint4_media, cbranchfp4_media): New.
550         (casesi): Use cbranchdi4.
551         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
552         Delete.
553         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
554         (movnegt): Remove second operand.
555         (cbranchsf4, cbranchdf4): New.
556         (stack_protect): Use cbranchdi4/cbranchsi4.
557
558         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
559         (gen_compare_reg): Accept comparison, extract part of it to...
560         (gen_compare_reg_1): ... this. 
561         (gen_compare_operator): Delete.
562         (gen_v9_scc): Accept separate destination, comparison code and arms.
563         Do not use sparc_compare_op0/sparc_compare_op1.
564         (emit_scc_insn, emit_conditional_branch_insn): New.
565         (emit_v9_brxx): Make static.  Remove useless assertion.
566         (sparc_emit_float_lib_cmp): Return RTL instead of calling
567         emit_cmp_insn.
568         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
569         * config/sparc/sparc-protos.h (gen_compare_reg,
570         sparc_emit_float_lib_cmp): Adjust prototype.
571         (emit_scc_insn, emit_conditional_branch_insn): New.
572         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
573         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
574         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
575         iterators to the top.
576         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
577         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
578         snedi_special_trunc): Delete.
579         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
580         and snedi_special_trunc.
581         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
582         cbranchdi4, cbranch<F:mode>4): New.
583         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
584         here.  Use gen_compare_reg instead of gen_compare_operator.
585         (conditional_trap): Replace with...
586         (ctrapsi4, ctrapdi4): ... this.
587         (stack_protect_test): Use cbranchcc4.
588
589         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
590         argument to rtx.
591         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
592         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
593         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
594         from operands[0] or operands[3] depending on is_set.
595         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
596         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
597         cmpdf, bCC), sCC: Remove.
598         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
599         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
600         cstoredf4): New.
601         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
602         spu_emit_branch_or_set.
603
604         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
605         Add two arguments.
606         * config/stormy16/stormy16.h (xstormy16_compare_op0,
607         xstormy16_compare_op1): Delete.
608         * config/stormy16/stormy16.c (xstormy16_compare_op0,
609         xstormy16_compare_op1): Delete. 
610         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
611         Adjust calls.
612         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
613         (cmphi, cmpsi, bCC): Remove.
614
615         * config/v850/v850.md (tstsi, cmpsi): Fold into...
616         (*cmpsi): ... this one.
617         (cbranchsi4, cstoresi4): New.
618         (bCC expanders): Delete.
619         (sCC insns): Fold into...
620         (*setcc): ... this one.
621         (casesi): Do not use gen_cmpsi and gen_bgtu. 
622         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
623         (movsicc): Simplify.
624         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
625
626         * config/vax/vax-protos.h (cond_name): New.
627         (vax_output_conditional_branch): Remove.
628         * config/vax/vax.c (cond_name): New.
629         (vax_output_conditional_branch): Remove.
630         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
631         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
632         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
633         (bit<VAXint>): Wrap source with (compare).
634         (b<code> and following unnamed pattern): Rename to *branch and
635         *branch_reversed.  Change macroization to match_operator.
636         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
637
638         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
639         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
640         Change last argument to machine_mode.
641         (xtensa_expand_scc): Add machine_mode argument.
642         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
643         (gen_conditional_move, xtensa_expand_conditional_branch,
644         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
645         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
646         Adjust operand numbers.
647         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
648         Delete.
649         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
650         (cmpsi, cmpsf, b<code>, s<code>): Delete.
651         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
652
653 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
654
655         * optabs.c (prepare_cmp_insn): Temporarily disable test that
656         causes spurious differences between trunk and cond-optab branch.
657
658 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
659
660         PR target/37137
661         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
662
663 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
664
665         * tree.c (iterative_hash_pointer): Delete.
666         (iterative_hash_expr): Short-circuit handling of NULL pointer.
667         Hash UIDs and versions of SSA names.  Don't special-case built-in
668         function declarations.
669
670 2009-05-11  Ian Lance Taylor  <iant@google.com>
671
672         PR bootstrap/40103
673         * graphite.c: Force -Wc++-compat to only be a warning before
674         #including "cloog/cloog.h".
675
676 2009-05-11  Martin Jambor  <mjambor@suse.cz>
677
678         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
679         
680 2009-05-11  Jan Hubicka  <jh@suse.cz>
681
682         * tree-ssa-loop-ivcanon.c: Include target.h
683         (struct loop_size): new structure.
684         (constant_after_peeling): New predicate.
685         (tree_estimate_loop_size): New function.
686         (estimated_unrolled_size): Rewrite for new estimates.
687         (try_unroll_loop_completely): Use new estimates.
688         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
689
690 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
691
692         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
693         libcpp interface change.
694         (spu_macro_to_expand): Likewise.
695
696 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
697
698         PR tree-optimization/40026
699         * gimplify.c (gimplify_init_constructor): Change initial conditional
700         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
701         optimize_compound_literals_in_ctor.
702
703 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
704
705         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
706         New devices.
707         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
708
709 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
710
711         * tree-vect-data-refs.c (vect_analyze_group_access): Use
712         HOST_WIDE_INT for gap.
713
714 2009-05-11  Ira Rosen  <irar@il.ibm.com>
715
716         PR tree-optimization/40074
717         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
718         account in group size and step comparison.
719
720 2009-05-11  Richard Guenther  <rguenther@suse.de>
721
722         * passes.c (init_optimization_passes): Strip now incorrect comment.
723         (execute_function_todo): Do not set PROP_alias.
724         * tree-pass.h (PROP_alias): Remove.
725         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
726         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
727         * tree-nrv.c (pass_return_slot): Likewise.
728         * tree-object-size.c (pass_object_sizes): Likewise.
729         * tree-ssa-dom.c (pass_dominator): Likewise.
730         (pass_phi_only_cprop): Likewise.
731         * tree-ssa-dse.c (pass_dse): Likewise.
732         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
733         (pass_cselim): Likewise.
734         * tree-ssa-pre.c (pass_pre): Likewise.
735         (pass_fre): Likewise.
736         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
737         * tree-ssa-sink.c (pass_sink_code): Likewise.
738         * tree-stdarg.c (pass_stdarg): Likewise.
739         * tree-tailcall.c (pass_tail_calls): Likewise.
740         * tree-vrp.c (pass_vrp): Likewise.
741
742 2009-05-10  Ian Lance Taylor  <iant@google.com>
743
744         * basic-block.h (enum profile_status): Break out of struct
745         control_flow_graph.
746         * cgraph.h (struct inline_summary): Break out of struct
747         cgraph_local_info.
748         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
749         of struct cgraph_order_sort.
750         * combine.c (enum undo_kind): New enum, broken out of struct undo.
751         * cse.c (struct branch_path): Break out of struct
752         cse_basic_block_data.
753         * except.h (enum eh_region_type): Break out of struct eh_region.
754         * gcc.c (enum add_del): Break out of struct modify_target.
755         * genrecog.c (enum decision_type): Break out of struct decision_test.
756         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
757         ggc_pch_data.
758         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
759         * regmove.c (enum match_use): New enum, broken out of struct match.
760         * sched-int.h (enum post_call_group): New enum, broken out of
761         struct deps.
762         (struct deps_reg): Break out of struct deps.
763         * target.h (struct asm_int_op): Break out of struct gcc_target.
764         * tree-eh.c (struct goto_queue_node): Break out of struct
765         leh_tf_state.
766         * tree-inline.h (enum copy_body_cge_which): Break out of
767         copy_body_data.
768         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
769
770         * c-decl.c (in_struct, struct_types): New static variables.
771         (pushtag): Add loc parameter.  Change all callers.
772         (lookup_tag): Add ploc parameter.  Change all callers.
773         (check_compound_literal_type): New function.
774         (parser_xref_tag): Add loc parameter.  Change all callers.  If
775         -Wc++-compat, warn about struct/union/enum types defined within a
776         struct or union.
777         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
778         and loc parameters.  Change all callers.  Change error calls to
779         error_at, using loc.  For a redefinition, if the location of the
780         original definition is known, report it.  Set in_struct and
781         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
782         (finish_struct): Add new parameters enclosing_in_struct and
783         enclosing_struct_types.  Change all callers.  Set
784         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
785         in the struct.  If in a struct, add this struct to struct_types.
786         (start_enum): Add loc parameter.  Change all callers.  Use
787         error_at for errors, using loc.  For a redefinition, if the
788         location of the original definition is known, report it.  If in a
789         struct, add this enum type to struct_types.  If -Wc++-compat warn
790         if in sizeof, typeof, or alignof.
791         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
792         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
793         (c_parser_enum_specifier): Get enum location for start_enum.
794         (c_parser_struct_or_union_specifier): Get struct location for
795         start_struct.  Save in_struct and struct_types status between
796         start_struct and finish_struct.
797         (c_parser_cast_expression): Get location of cast.
798         (c_parser_alignof_expression): Get location of type.
799         (c_parser_postfix_expression): Likewise.
800         (c_parser_postfix_expression_after_paren_type): Add type_loc
801         parameter.  Change all callers.  Call check_compound_literal_type.
802         Use type_loc for error about variable size type.
803         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
804         of an enum constant from an enum type defined in a struct or union.
805         (c_cast_expr): Add loc parameter.  Change all callers.  If
806         -Wc++-compat, warn about defining a type in a cast.
807         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
808         (start_enum, start_struct, finish_struct): Update declarations.
809         (parser_xref_tag, c_cast_expr): Update declarations.
810         (check_compound_literal_type): Declare.
811
812 2009-05-11  Ben Elliston  <bje@au.ibm.com>
813
814         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
815         for recent libcpp interface change.
816         (rs6000_macro_to_expand): Likewise.
817
818 2009-05-10  Michael Matz  <matz@suse.de>
819
820         PR target/40031
821         * config/arm/arm.c (require_pic_register): Emit on entry edge,
822         not at entry of function.
823
824 2009-05-10  Richard Guenther  <rguenther@suse.de>
825
826         PR tree-optimization/40081
827         Revert
828         * tree-sra.c (instantiate_element): Instantiate scalar replacements
829         using the main variant of the element type.  Do not fiddle with
830         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
831
832         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
833         structs with volatile fields.
834
835 2009-05-10  Jan Hubicka  <jh@suse.cz>
836
837         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
838         (estimate_move_cost): Assert that it does not get called for
839         VOID_TYPE_P.
840         (estimate_num_insns): Skip VOID types in argument handling.
841         (optimize_inline_calls): Delete unreachable blocks and verify that
842         callgraph is valid.
843
844 2009-05-10  Jan Hubicka  <jh@suse.cz>
845
846         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
847         * cgraph.c (cgraph_mark_address_taken_node): New function.
848         (dump_cgraph_node): Dump new flag.
849         * cgraph.h (struct cgraph_node): Add address_taken.
850         (cgraph_mark_address_taken_node): New function.
851         * ipa.c (cgraph_postorder): Prioritize functions with address taken
852         since new direct calls can be born.
853
854 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
855
856         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
857         tok->val.node.node.
858
859 2009-05-10  Jan Hubicka  <jh@suse.cz>
860
861         PR middle-end/40084
862         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
863         argument; rewrite.
864         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
865         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
866         * tree-inline.c (copy_bb): Set frequency correctly.
867         (fold_marked_statements): Update call to
868         cgraph_update_edges_for_call_stmt.
869
870 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
871
872         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
873         identifiers in diagnostics.
874         * config/arm/arm.c (arm_handle_fndecl_attribute,
875         arm_handle_isr_attribute): Likewise.
876         * config/avr/avr.c (avr_handle_progmem_attribute,
877         avr_handle_fndecl_attribute, avr_handle_fntype_attribute):
878         Likewise.
879         * config/bfin/bfin.c (handle_int_attribute,
880         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
881         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
882         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
883         Likewise.
884         * config/darwin.c (darwin_handle_kext_attribute,
885         darwin_handle_weak_import_attribute): Likewise.
886         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
887         h8300_handle_eightbit_data_attribute,
888         h8300_handle_tiny_data_attribute): Likewise.
889         * config/i386/i386.c (ix86_handle_cconv_attribute,
890         ix86_handle_abi_attribute, ix86_handle_struct_attribute):
891         Likewise.
892         * config/i386/winnt.c (ix86_handle_shared_attribute,
893         ix86_handle_selectany_attribute): Likewise.
894         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
895         * config/m32c/m32c.c (function_vector_handler): Likewise.
896         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
897         m68hc11_handle_fntype_attribute): Likewise.
898         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
899         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
900         * config/mips/mips.c (mips_insert_attributes,
901         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
902         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
903         rs6000_handle_struct_attribute): Likewise.
904         * config/sh/sh.c (sh_insert_attributes,
905         sh_handle_resbank_handler_attribute,
906         sh_handle_interrupt_handler_attribute,
907         sh2a_handle_function_vector_handler_attribute,
908         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
909         Likewise.
910         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
911         * config/spu/spu.c (spu_handle_fndecl_attribute,
912         spu_handle_vector_attribute): Likewise.
913         * config/stormy16/stormy16.c
914         (xstormy16_handle_interrupt_attribute): Likewise.
915         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
916         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
917
918 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
919
920         * pretty-print.h (struct pretty_print_info): Add
921         translate_identifiers.
922         (pp_translate_identifiers): New.
923         (pp_identifier): Only conditionally translate identifier to locale
924         character set.
925         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
926         (pp_base_tree_identifier): Only conditionally translate identifier
927         to locale character set.
928         * c-pretty-print.c (M_): Define.
929         (pp_c_type_specifier, pp_c_primary_expression): Mark English
930         fragments for conditional translation with M_.
931         * tree-pretty-print.c (maybe_init_pretty_print): Disable
932         identifier translation.
933
934 2009-05-10  Richard Guenther  <rguenther@suse.de>
935
936         PR tree-optimization/40081
937         * tree-sra.c (instantiate_element): Instantiate scalar replacements
938         using the main variant of the element type.  Do not fiddle with
939         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
940
941 2009-05-09  Jan Hubicka  <jh@suse.cz>
942
943         PR middle-end/40080
944         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
945         indirect calls; verify cgraph afterwards.
946
947 2009-05-09  Jan Hubicka  <jh@suse.cz>
948
949         PR bootstrap/40082
950         * ipa.c (update_inlined_to_pointer): New function.
951         (cgraph_remove_unreachable_nodes): Use it.
952
953 2009-05-09  Jan Hubicka  <jh@suse.cz>
954
955         * tree-eh.c (struct leh_state): Remove prev_try.
956         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
957         not track prev_try.
958         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
959         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
960         remove_eh_handler_and_replace, foreach_reachable_handler,
961         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
962         * except.h (struct eh_region): Remove eh_region_u_cleanup.
963         (gen_eh_region_cleanup): Update prototype.
964
965 2009-05-09  Jan Hubicka  <jh@suse.cz>
966
967         PR middle-end/40043
968         * except.c (copy_eh_region): Always set prev_try.
969         (redirect_eh_edge_to_label): Find outer try.
970         (foreach_reachable_handler): When looking for prev try
971         handle case where previous try is not going to be taken.
972
973 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
974
975         PR tree-optimization/40049
976         * tree-vect-stmts.c (vectorizable_operation): If the machine has
977         only vector/vector shifts, convert the type of the constant to the
978         appropriate type to avoid building incorrect trees, which
979         eventually have problems with garbage collection.
980
981 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
982
983         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
984         -1 for complex floating-point types if honoring signed zeros.
985
986 2009-05-08  Jan Hubicka  <jh@suse.cz>
987
988         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
989         argument; handle correctly when profile is absent.
990         (build_cgraph_edges): Update.
991         (rebuild_cgraph_edges): Update.
992         * cgraph.c: Do not include varray.h.
993         (cgraph_set_call_stmt_including_clones): New function.
994         (cgraph_create_edge_including_clones): Likewise
995         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
996         (cgraph_update_edges_for_call_stmt): Handle clones.
997         (cgraph_remove_node): Handle clone tree.
998         (cgraph_remove_node_and_inline_clones): New function.
999         (dump_cgraph_node): Dump clone tree.
1000         (cgraph_clone_node): Handle clone tree.
1001         (clone_function_name): Bring here from tree-inline.c.
1002         (cgraph_create_virtual_clone): New function.
1003         * cgraph.h (ipa_replace_map): Move here from ipa.h.
1004         (cgraph_clone_info): New function.
1005         (strut cgraph_node): Add clone_info and new clone tree pointers.
1006         (cgraph_remove_node_and_inline_clones,
1007         cgraph_set_call_stmt_including_clones,
1008         cgraph_create_edge_including_clones,
1009         cgraph_create_virtual_clone): Declare.
1010         (cgraph_function_versioning): Use VEC argument.
1011         (compute_call_stmt_bb_frequency): Update prototype.
1012         (cgraph_materialize_all_clones): New function.
1013         * ipa-cp.c (ipcp_update_cloned_node): Remove.
1014         (ipcp_create_replace_map): Update to VECtors.
1015         (ipcp_update_callgraph): Use virtual clones.
1016         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
1017         (ipcp_update_profiling): Do not update local profiling.
1018         (ipcp_insert_stage): Use VECtors and virtual clones.
1019         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
1020         (clone_of_p): New function.
1021         (cgraph_preserve_function_body_p): Use clone tree.
1022         (cgraph_optimize): Materialize clones.
1023         (cgraph_function_versioning): Update for VECtors.
1024         (save_inline_function_body): Use clone tree.
1025         (cgraph_materialize_clone): New function.
1026         (cgraph_materialize_all_clones): Likewise.
1027         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
1028         * ipa.c: Include gimple.h.
1029         (cgraph_remove_unreachable_nodes): Use clone tree.
1030         * ipa-prop.c (ipa_note_param_call): Update call to
1031         compute_call_stmt_bb_frequencycall.
1032         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
1033         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
1034         (copy_bb): Handle updating of clone tree; add new edge when new call
1035         appears.
1036         (expand_call_inline): Be strict about every call having edge.
1037         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
1038         (delete_unreachable_blocks_update_callgraph): New function.
1039         (tree_function_versioning): Use VECtors; always remove unreachable
1040         blocks and fold conditionals.
1041         * tree-inline.h: Do not include varray.h.
1042         (tree_function_versioning): Remove.
1043         * Makefile.in (GTFILES): Remove tree-inline.c
1044         * passes.c (do_per_function): Do only functions having body.
1045         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
1046         tree.
1047
1048 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
1049             Andrew Morrow  <acm@google.com>
1050
1051         PR c/36892
1052         * c-common.c (c_common_attribute_table): Permit deprecated
1053         attribute to take an optional argument.
1054         (handle_deprecated_attribute): If the optional argument to
1055         __attribute__((deprecated)) is not a string ignore the attribute
1056         and emit a warning.
1057
1058         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
1059         * c-typeck.c (build_component_ref): Likewise.
1060         (build_external_ref): Likewise.
1061
1062         * toplev.c (warn_deprecated_use): Add an attribute argument.
1063         Emit the message associated with __attribute__((deprecated)).
1064
1065         * toplev.h (warn_deprecated_use): Updated.
1066
1067         * doc/extend.texi: Document new optional parameter to
1068         __attribute__((deprecated))
1069
1070 2009-05-08  Michael Eager <eager@eagercon.com>
1071
1072         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
1073         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
1074
1075 2009-05-08  Richard Guenther  <rguenther@suse.de>
1076
1077         PR tree-optimization/40062
1078         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
1079         Avoid exponential behavior.
1080
1081 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
1082
1083         PR rtl-optimization/33928
1084         PR 26854
1085         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
1086         process_uses, build_single_def_use_links): New.
1087         (update_df): Update use_def_ref.
1088         (forward_propagate_into): Use get_def_for_use instead of use-def
1089         chains.
1090         (fwprop_init): Call build_single_def_use_links and let it initialize
1091         dataflow.
1092         (fwprop_done): Free use_def_ref.
1093         (fwprop_addr): Eliminate duplicate call to df_set_flags.
1094         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
1095         df_rd_simulate_one_insn): New.
1096         (df_rd_bb_local_compute_process_def): Update head comment.
1097         (df_chain_create_bb): Use the new RD simulation functions.
1098         * df.h (df_rd_simulate_artificial_defs_at_top, 
1099         df_rd_simulate_one_insn): New.
1100         * opts.c (decode_options): Enable fwprop at -O1.
1101         * doc/invoke.texi (-fforward-propagate): Document this.
1102
1103 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
1104
1105         PR c/24581
1106         * c-typeck.c (build_binary_op): Handle arithmetic between one real
1107         and one complex operand specially.
1108         * tree-complex.c (some_nonzerop): Do not identify a real value as
1109         zero if flag_signed_zeros.
1110
1111 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
1112
1113         PR rtl-optimization/33928
1114         * loop-invariant.c (record_use): Fix && vs. || mishap.
1115
1116 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
1117
1118         PR rtl-optimization/33928
1119         * loop-invariant.c (struct use): Add addr_use_p.
1120         (struct def): Add n_addr_uses.
1121         (struct invariant): Add cheap_address.
1122         (create_new_invariant): Set cheap_address.
1123         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
1124         (record_uses): Pass df_ref to record_use.
1125         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
1126         used only as such.
1127
1128 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
1129
1130         * config/sh/sh.c: Do not include c-pragma.h.
1131
1132 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1133
1134         * config/spu/spu.c: Remove include of c-common.h.
1135
1136 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
1137
1138         PR c/39037
1139         * c-common.h (mark_valid_location_for_stdc_pragma,
1140         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
1141         clear_float_const_decimal64, float_const_decimal64_p): New.
1142         * c.opt (Wunsuffixed-float-constants): New.
1143         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
1144         unsuffixed float constant, handle new warning.
1145         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
1146         * c-decl.c (c_scope): New flag float_const_decimal64.
1147         (set_float_const_decimal64, clear_float_const_decimal64,
1148         float_const_decimal64_p): New.
1149         (push_scope): Set new flag.
1150         * c-parser.c (c_parser_translation_unit): Mark when it's valid
1151         to use STDC pragmas.
1152         (c_parser_external_declaration): Ditto.
1153         (c_parser_compound_statement_nostart): Ditto.
1154         * c-pragma.c (valid_location_for_stdc_pragma,
1155         mark_valid_location_for_stdc_pragma,
1156         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
1157         handle_pragma_float_const_decimal64): New.
1158         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
1159         * cp/semantics.c (valid_location_for_stdc_pragma_p,
1160         set_float_const_decimal64, clear_float_const_decimal64,
1161         float_const_decimal64_p): New dummy functions.
1162         * doc/extend.texi (Decimal Float): Remove statement that the
1163         pragma, and suffix for double constants, are not supported.
1164         * doc/invoke.texi (Warning Options): List new option.
1165         (-Wunsuffixed-float-constants): New.
1166
1167 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
1168
1169         * config/i386/i386.c: Do not include c-common.h.
1170
1171 2009-05-07  Mark Heffernan  <meheff@google.com>
1172
1173         * doc/invoke.texi (Debugging Options): Document change of debugging
1174         dump location.
1175         * opts.c (decode_options): Make dump_base_name relative to
1176         aux_base_name directory.
1177
1178 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
1179
1180         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
1181         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
1182
1183 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
1184
1185         * Makefile.in (install-plugin): Simplify a bit.
1186
1187 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
1188
1189         * Makefile.in (OBJS-common): Add regcprop.o.
1190         (regcprop.o): New.
1191         * timevar.def (TV_CPROP_REGISTERS): New.
1192         * regrename.c (regrename_optimize): Return 0.
1193         (rest_of_handle_regrename): Delete.
1194         (pass_rename_registers): Point to regrename_optimize.
1195         (struct value_data_entry, struct value_data, 
1196         kill_value_one_regno, kill_value_regno, kill_value,
1197         set_value_regno, init_value_data, kill_clobbered_value,
1198         kill_set_value, kill_autoinc_value, copy_value,
1199         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
1200         replace_oldest_value_reg, replace_oldest_value_addr,
1201         replace_oldest_value_mem, copyprop_hardreg_forward_1,
1202         debug_value_data, validate_value_data): Move...
1203         * regcprop.c: ... here.
1204         (rest_of_handle_cprop): Delete.
1205         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
1206
1207 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
1208
1209         PR middle-end/40057
1210         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
1211         GEN_INT for 1 << bitnum.
1212         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
1213         build_int_cst_type.
1214
1215 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
1216
1217         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
1218         Remove wrong description of "nand" operation.
1219
1220 2009-05-06  Richard Guenther  <rguenther@suse.de>
1221             Adam Nemet  <anemet@caviumnetworks.com>
1222
1223         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
1224         comment.  Add that if LHS is not a gimple register, then RHS1 has
1225         to be a single object (GIMPLE_SINGLE_RHS).
1226
1227 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
1228
1229         * expr.c (get_def_for_expr): Move it up in the file.
1230         (store_field): When expanding a bit-field store, look at the
1231         defining gimple stmt for the masking conversion.
1232
1233 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
1234
1235         PR middle-end/39986
1236         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
1237         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
1238         32-bit memcpy into long.
1239
1240 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
1241
1242         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
1243         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
1244         new_reg_loc_descr.
1245         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
1246         instead of appending DW_OP_deref*.
1247
1248 2009-05-06  Michael Matz  <matz@suse.de>
1249
1250         PR middle-end/40021
1251         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
1252         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
1253
1254 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
1255
1256         * Makefile.in (install-plugin): Fix srcdir handling.
1257
1258 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
1259
1260         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
1261         when processing for not_regs_needed bitmap.
1262         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
1263         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
1264         handling it for rhs. 
1265
1266 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
1267
1268         * config/i386/i386.md (unnamed inc/dec peephole): Use
1269         optimize_insn_for_size_p instead of optimize_size.
1270         * config/i386/predicates.md (incdec_operand): Likewise.
1271         (aligned_operand): Likewise.
1272         * config/i386/sse.md (divv8sf3): Likewise.
1273         (sqrtv8sf2): Likewise.
1274
1275 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
1276
1277         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
1278
1279         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
1280
1281 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
1282
1283         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
1284         ssemodesuffixf2c with avxmodesuffixf2c.
1285
1286 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
1287
1288         PR c/40032
1289         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
1290
1291 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
1292
1293         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
1294         (struct tree_base): Adjust spacing for 8 bit boundaries.
1295         (struct tree_decl_common): Add decl_by_reference_flag bit.
1296         (DECL_BY_REFERENCE): Adjust.
1297         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
1298         print DECL_BY_REFERENCE bit.
1299         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
1300         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
1301         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
1302         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
1303         unconditionally.
1304
1305         PR middle-end/39666
1306         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
1307         range of the type, but default label is missing, add it with one
1308         of the existing labels instead of adding a new label for it.
1309
1310 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
1311
1312         * dwarf.h: Remove.
1313
1314 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
1315
1316         * Makefile.in (enable_plugin, plugin_includedir): New.
1317         (install): Depend on install-plugin.
1318         (PLUGIN_HEADERS): New.
1319         (install-plugin): New.
1320         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
1321
1322 2009-05-05  Richard Guenther  <rguenther@suse.de>
1323
1324         PR tree-optimization/40022
1325         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
1326         the only vuse.
1327         (phivn_valid_p): Fix tuplification error, simplify.
1328         (phiprop_insert_phi): Add dumps.
1329         (propagate_with_phi): Simplify.
1330
1331 2009-05-05  Richard Guenther  <rguenther@suse.de>
1332
1333         PR middle-end/40023
1334         * builtins.c (gimplify_va_arg_expr): Properly build the address.
1335
1336 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
1337
1338         * tree.h (strip_float_extensions): Remove duplicate declaration.
1339         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
1340         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
1341         block_ultimate_origin): Rearrange the declarations line to match the
1342         comment that indicates the .c file which the functions are defined.
1343         (dwarf2out_*, set_decl_rtl): Add comment.
1344         (get_base_address): Adjust comment.
1345         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
1346         declarations line and add comment.
1347         (is_builtin_name): Add blank after function name, for clarity.
1348
1349 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
1350
1351         * attribs.c (decl_attributes): Use %qE for identifiers in
1352         diagnostics.
1353         * cgraphunit.c (verify_cgraph_node): Translate function names to
1354         locale character set in diagnostics.
1355         * coverage.c (get_coverage_counts): Use %qE for identifiers in
1356         diagnostics.
1357         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
1358         Document that functions are named in UTF-8.
1359         * expr.c (expand_expr_real_1): Translate function names to locale
1360         character set in diagnostics.
1361         * gimplify.c (omp_notice_variable, omp_is_private,
1362         gimplify_scan_omp_clauses): Use %qE for identifiers in
1363         diagnostics.
1364         * langhooks.c (lhd_print_error_function): Translate function names
1365         to locale character set.
1366         * langhooks.h (decl_printable_name): Document that return value is
1367         in internal character set.
1368         * stmt.c: Include pretty-print.h
1369         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
1370         diagnostics.
1371         (resolve_operand_name_1): Translate named operand name to locale
1372         character set.
1373         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
1374         diagnostics.
1375         * toplev.c (announce_function): Translate function names to locale
1376         character set.
1377         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
1378         (default_tree_printer): Use pp_identifier or translate identifiers
1379         to locale character set.  Mark "<anonymous>" for translation.
1380         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
1381         for identifiers in diagnostics.
1382         * tree.c (handle_dll_attribute): Use %qE for identifiers in
1383         diagnostics.
1384         * varasm.c (output_constructor): Use %qE for identifiers in
1385         diagnostics.
1386
1387 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
1388
1389         * configure.ac: use ` ` instead of $()
1390         * configure: Regenerate.
1391
1392 2009-05-05  Ben Elliston  <bje@au.ibm.com>
1393
1394         * config/pa/linux-atomic.c: Eliminate conditional include of
1395         errno.h on non-LP64 systems to simplify build requirements.
1396
1397 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
1398
1399         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
1400         diagnostics.
1401         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
1402         and pass value to identifier_to_locale.
1403         (warn_variable_length_array): Make name a tree.
1404         (grokdeclarator): Separate diagnostic texts for named and unnamed
1405         declarators.  Use %qE for named declarators.
1406         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
1407         diagnostics.
1408         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
1409         identifiers in diagnostics.
1410         * c-typeck.c (push_member_name, start_init): Pass identifiers to
1411         identifier_to_locale.  Mark "anonymous" strings for translation.
1412
1413 2009-05-04  Michael Eager <eager@eagercon.com>
1414
1415         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
1416         address for DImode/DFmode only if double-precision FP regs.
1417
1418 2009-05-04  Michael Eager <eager@eagercon.com>
1419
1420         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
1421         TARGET_SINGLE_FLOAT check.
1422
1423 2009-05-04  Michael Eager <eager@eagercon.com>
1424
1425         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
1426
1427 2009-05-04  Michael Eager <eager@eagercon.com>
1428
1429         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
1430         * config/rs6000/t-xilinx: New
1431
1432 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
1433
1434         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
1435         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
1436         * gcc/explow.c (memory_address): Use target hook.
1437         * gcc/targhooks.c (default_legitimize_address): New.
1438         * gcc/targhooks.h (default_legitimize_address): New.
1439         * gcc/target.h (legitimize_address): New.
1440         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
1441         (TARGET_INITIALIZER): Include it.
1442         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
1443
1444         * config/bfin/bfin-protos.h (legitimize_address): Remove.
1445         * config/bfin/bfin.c (legitimize_address): Remove.
1446         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
1447         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
1448         Remove.
1449         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
1450         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
1451
1452         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
1453         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
1454         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
1455         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
1456         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
1457         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
1458         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
1459         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
1460         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
1461         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
1462         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
1463         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
1464         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
1465         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
1466         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
1467         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
1468         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
1469         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
1470         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
1471         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
1472         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
1473         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
1474         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
1475
1476         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
1477         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
1478         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
1479         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
1480         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
1481         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
1482         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
1483         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
1484         (thumb_legitimize_address): Delete.
1485         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
1486         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
1487         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
1488         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
1489         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
1490         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
1491         Delete.
1492         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
1493         Delete.
1494
1495         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
1496         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
1497         * config/m32r/m32r.c (m32r_legitimize_address): New.
1498         * config/m68k/m68k.c (m68k_legitimize_address): New.
1499         * config/score/score.c (score_legitimize_address): Standardize.
1500         * config/score/score3.c (score3_legitimize_address): Standardize.
1501         * config/score/score3.h (score3_legitimize_address): Adjust.
1502         * config/score/score7.c (score7_legitimize_address): Standardize.
1503         * config/score/score7.h (score7_legitimize_address): Adjust.
1504         * config/sh/sh.c (sh_legitimize_address): New.
1505         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
1506
1507         * gcc/config/s390/s390.c (legitimize_address): Rename to...
1508         (s390_legitimize_address): ... this.
1509         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
1510         (sparc_legitimize_address): ... this.
1511         * gcc/config/i386/i386.c (legitimize_address): Rename to...
1512         (ix86_legitimize_address): ... this.
1513         * gcc/config/avr/avr.c (legitimize_address): Rename to...
1514         (avr_legitimize_address): ... this.
1515         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
1516         (mn10300_legitimize_address): ... this.
1517         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
1518         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
1519         (alpha_expand_mov): Adjust call.
1520
1521         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
1522         * config/spu/spu.c (spu_legitimize_address): Likewise.
1523         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
1524         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
1525
1526 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
1527
1528         * intl.c (locale_encoding, locale_utf8): New.
1529         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
1530         * intl.h (locale_encoding, locale_utf8): Declare.
1531         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
1532         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
1533         New.
1534         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
1535         argument.
1536         (pp_tree_identifier): Define to call pp_base_tree_identifier.
1537         (pp_base_tree_identifier): Declare as function.
1538         (identifier_to_locale): Declare.
1539         * Makefile.in (pretty-print.o): Update dependencies.
1540         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
1541
1542 2009-05-04  Richard Guenther  <rguenther@suse.de>
1543
1544         PR middle-end/40015
1545         * builtins.c (fold_builtin_memory_op): Do not decay to element
1546         type if the size matches the whole array.
1547
1548 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
1549
1550         * expmed.c (synth_mult): When trying out a shift, pass the result
1551         of a signed shift.
1552
1553 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
1554
1555         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
1556         (shiftsub1_cost): New.
1557         (init_expmed): Compute shiftsub1_cost.
1558         (synth_mult): Optimize multiplications by constants of the form
1559         -(2^^m-1) for some constant positive integer m.
1560
1561 2009-05-03  Richard Guenther  <rguenther@suse.de>
1562
1563         PR c/39983
1564         * c-typeck.c (array_to_pointer_conversion): Do not built
1565         ADDR_EXPRs of arrays of pointer-to-element type.
1566         * c-gimplify.c (c_gimplify_expr): Revert change fixing
1567         up wrong ADDR_EXPRs after-the-fact.
1568         * c-common.c (strict_aliasing_warning): Strip pointer
1569         conversions for obtaining the original type.
1570         * builtins.c (fold_builtin_memset): Handle array types.
1571         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
1572         and array types
1573
1574 2009-05-03  Richard Guenther  <rguenther@suse.de>
1575
1576         PR middle-end/23329
1577         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
1578         Do not lose casts from array types with unknown extent to array
1579         types with known extent.
1580         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
1581         alias set compatibility.
1582
1583 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1584
1585         * flags.h (extra_warnings): Delete.
1586         * toplev.c (process_options): Handle Wuninitialized here.
1587         * opts.c (extra_warnings): Delete.
1588         (set_Wextra): Delete.
1589         (common_handle_option): -Wextra can be handled automatically.
1590         * c-opts.c (c_common_handle_option): Delete obsolete code.
1591         (c_common_post_options): Simplify comment.
1592         * common.opt (W): Add Var.
1593         (Wextra): Add Var.
1594         (Wuninitialized): Initialize to -1.
1595
1596 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
1597             Richard Guenther  <rguenther@suse.de>
1598
1599         * expr.c (get_def_for_expr): New function.
1600         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
1601         SSA rather than trees.
1602         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
1603         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
1604         
1605 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
1606
1607         * c-common.c (reswords): Add _Imaginary.
1608         * c-common.c (enum rid): Add RID_IMAGINARY.
1609
1610 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
1611
1612         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
1613         Patch by Richard Guenther.
1614
1615 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
1616
1617         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
1618         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
1619         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
1620         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
1621         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
1622         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
1623         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
1624         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
1625         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
1626         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
1627         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
1628         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
1629         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
1630         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
1631         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
1632         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
1633         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
1634         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
1635
1636 2009-05-02  Richard Guenther  <rguenther@suse.de>
1637
1638         PR tree-optimization/39940
1639         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
1640         doing so.
1641
1642 2009-05-02  Richard Guenther  <rguenther@suse.de>
1643
1644         PR middle-end/40001
1645         * tree-ssa.c (execute_update_addresses_taken): Properly check
1646         if we can mark a variable DECL_GIMPLE_REG_P.
1647         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
1648         back to the end of the function.
1649         (is_gimple_reg_type): Remove complex type special casing.
1650         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
1651         if not optimizing.
1652
1653 2009-05-02  Ben Elliston  <bje@au.ibm.com>
1654
1655         * doc/collect2.texi (Collect2): Document search path behaviour
1656         when configured with --with-ld.
1657
1658 2009-05-02  Jan Hubicka  <jh@suse.cz>
1659
1660         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
1661         parameter; update callers.
1662         (coalesce_cost_edge): EH edges are costier because they needs
1663         splitting even if not critical and even more costier when there are
1664         multiple EH predecestors.
1665
1666 2009-05-02  Jan Hubicka  <jh@suse.cz>
1667
1668         * except.c (remove_eh_handler_and_replace): Handle updating after
1669         removing TRY blocks.
1670
1671 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
1672
1673         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
1674
1675 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
1676
1677         * varasm.c: Do not include c-pragma.h.
1678         * attribs.c: Do not incude c-common.h.
1679
1680 2009-05-01  Michael Matz  <matz@suse.de>
1681
1682         * calls.c (initialize_argument_information): Handle SSA names like
1683         decls with a non MEM_P DECL_RTL.
1684
1685 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
1686
1687         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
1688         * ipa-utils.c: Likewise.
1689         * ipa-type-escape.c: Likewise.
1690         * cgraphunit.c Do not include c-common.h.
1691         * ipa-pure-const.c: Likewise.
1692         * tree-if-conv.c: Likewise.
1693         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
1694         * ipa-struct-reorg.c: Likewise.
1695         * tree-nomudflap.c: Likewise.
1696         * tree-ssa-structalias.c: Likewise.
1697
1698 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
1699
1700         * store-motion.c: Many cleanups to make this pass a first-class
1701         citizen instead of an appendix to gcse load motion.  Add TODO list
1702         to make this pass faster/cleaner/better.
1703
1704         (struct ls_expr): Post gcse.c-split cleanups.
1705         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
1706         "stores" field to "avail_stores".
1707         (pre_ldst_mems): Rename to store_motion_mems.
1708         (pre_ldst_table): Rename to store_motion_mems_table.
1709         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
1710         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
1711         (ldst_entry): Rename to st_expr_entry, update users.
1712         (free_ldst_entry): Rename to free_st_expr_entry, update users.
1713         (free_ldst_mems): Rename to free_store_motion_mems, update users.
1714         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
1715         update caller.
1716         (first_ls_expr): Rename to first_st_expr, update users.
1717         (next_ls_expr): Rename to next_st_expr, update users.
1718         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
1719         fields properly for store motion instead of names inherited from load
1720         motion in gcse.c.
1721         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
1722         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
1723         are done with it.
1724
1725         (ae_kill): Rename to st_kill, update users.
1726         (ae_gen): Rename to st_avloc, update users.
1727         (transp): Rename to st_transp, update users.
1728         (pre_insert_map): Rename to st_insert_map, update users.
1729         (pre_delete_map): Rename to st_delete_map, update users.
1730         (insert_store, build_store_vectors, free_store_memory,
1731         one_store_motion_pass): Update for abovementioned changes.
1732
1733         (gcse_subst_count, gcse_create_count): Remove.
1734         (one_store_motion_pass): New statistics counters "n_stores_deleted"
1735         and "n_stores_created", local variables.
1736
1737         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
1738         use for_each_rtx.
1739
1740         (regvec, compute_store_table_current_insn): Remove.
1741         (reg_set_info, reg_clear_last_set): Remove.
1742         (compute_store_table): Use DF caches instead of local dataflow
1743         solvers.
1744
1745 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
1746
1747         * c-objc-common.c (c_tree_printer): Print identifiers with
1748         pp_identifier, not pp_string.  Mark "({anonymous})" for
1749         translation.
1750         * c-pretty-print.c (pp_c_ws_string): New.
1751         (pp_c_cv_qualifier, pp_c_type_specifier,
1752         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
1753         pp_c_storage_class_specifier, pp_c_function_specifier,
1754         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
1755         pp_c_primary_expression, pp_c_postfix_expression,
1756         pp_c_unary_expression, pp_c_shift_expression,
1757         pp_c_relational_expression, pp_c_equality_expression,
1758         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
1759         use pp_string and pp_c_ws_string in place of pp_identifier and
1760         pp_c_identifier for non-identifiers.  Mark English strings for
1761         translation.
1762         * c-pretty-print.h (pp_c_ws_string): Declare.
1763
1764 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
1765             Roland McGrath <roland@redhat.com>
1766
1767         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
1768         (ENABLE_LD_BUILDID): New configuration option.
1769         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
1770         (LINK_BUILDID_SPEC): New macro.
1771         (init_spec): If defined, prepend it between LINK_EH_SPEC and
1772         link_spec.
1773         * doc/install.texi: Document --enable-linker-build-id option.
1774         * configure: Rebuild.
1775         * config.in: Rebuild.
1776
1777 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
1778
1779         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
1780         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
1781         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
1782         MIPS_GP_SAVE_AREA_SIZE.
1783         * config/mips/mips.c (struct mips_frame_info): Update comment
1784         before arg_pointer_offset and hard_frame_pointer_offset.
1785         (mips_compute_frame_info): Update diagram before function: to
1786         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
1787         indicate the position of frame_pointer_rtx with -fstack-protector and
1788         to show args_size.  Don't allocate cprestore area for leaf functions
1789         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
1790         cprestore_size.
1791         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
1792
1793 2009-04-30  Michael Matz  <matz@suse.de>
1794
1795         PR tree-optimization/39955
1796         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
1797
1798 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
1799
1800         * ira.c (setup_cover_and_important_classes):  Use safe macro
1801         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
1802         directly.
1803         * genpreds.c (write_tm_preds_h):  Output suitable definition of
1804         REG_CLASS_FOR_CONSTRAINT.
1805
1806 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
1807
1808         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
1809         instead of an int.
1810         * bitmap.c (bitmap_descriptor): Likewise.
1811         * ggc-common.c (loc_descriptor): Likewise.
1812         * varray.c (varray_descriptor): Likewise.
1813         * vec.c (vec_descriptor): Likewise.
1814
1815 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
1816
1817         * Makefile.in (dce.o): Add $(EXCEPT_H).
1818         * dce.c: Include except.h and delete redundant vector definitions.
1819         (deletable_insn_p): Return false for non-call insns that can throw
1820         if DF is running.
1821
1822 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
1823
1824         * gcse.c (ae_gen): Remove.
1825         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
1826         and make non-static function to make it available in store-motion.c.
1827         Update call sites with search-and-replace.
1828         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
1829         extract_mentioned_regs, extract_mentioned_regs_helper,
1830         find_moveable_store, compute_store_table, load_kills_store, find_loads,
1831         store_killed_in_insn, store_killed_after, store_killed_before,
1832         build_store_vectors, insert_insn_start_basic_block, insert-store,
1833         remove_reachable_equiv_notes, replace_store_insn, delete_store,
1834         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
1835         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
1836         * store-motion.c: ...new file.  Also copy data structures from gcse.c
1837         and clean up to remove parts not used by store motion.
1838         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
1839         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
1840
1841 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1842
1843         PR target/38571
1844         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
1845         when optimizing for size.
1846
1847 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
1848
1849         * gcse.c (gcse_constant_p): Fix typo in last change.
1850
1851 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
1852
1853         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
1854
1855 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
1856
1857         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
1858
1859 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
1860
1861         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
1862         CONST_HIGH_PART result.
1863
1864 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
1865
1866         * config/avr/avr.c (initial_elimination_offset): Rename to
1867         avr_initial_elimination_offset.
1868         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
1869         change return type to bool.
1870         (avr_can_eliminate): New function.
1871         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
1872         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
1873         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
1874         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
1875         avr_initial_elimination_offset.
1876         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
1877         (avr_initial_elimination_offset): Define.
1878
1879 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
1880             Steven Bosscher  <steven@gcc.gnu.org>
1881
1882         PR rtl-optimization/39938
1883         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
1884         * cfgrtl.c: Include insn-attr.h.
1885         (rest_of_pass_free_cfg): New function.
1886         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
1887         * resource.c (init_resource_info): Remove call to df_analyze.
1888
1889 2009-04-29  Richard Guenther  <rguenther@suse.de>
1890
1891         PR target/39943
1892         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
1893         allow conversion to signed integers.
1894
1895 2009-04-29  Richard Guenther  <rguenther@suse.de>
1896
1897         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
1898         shifts of floating point vectors if the shift amount is
1899         a constant multiple of the element size.
1900
1901 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1902             Michael Matz  <matz@suse.de>
1903
1904         PR middle-end/39927
1905         PR bootstrap/39929
1906         * tree-outof-ssa.c (emit_partition_copy): New function.
1907         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
1908         insert_part_to_rtx_on_edge): Perform the partition base var
1909         copy using emit_partition_copy.
1910         (insert_value_copy_on_edge): Convert constants to the right mode.
1911         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
1912         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
1913
1914 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
1915
1916         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
1917         scan backwards to try to find a constant to initialize it.
1918
1919         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
1920         insn before the loop_end instruction, don't look past labels.
1921
1922 2009-04-29  Richard Guenther  <rguenther@suse.de>
1923
1924         PR middle-end/39937
1925         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
1926         loose type conversions.
1927         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
1928         stmts only if there are no uses of its definition.
1929
1930 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
1931
1932         * config/bfin/bfin.h (splitting_loops): Declare.
1933         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
1934         Reorder bit definitions to be ascending.
1935         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
1936         * config/bfin/bfin.c (splitting_loops): New variable.
1937         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
1938         (struct loop_info): Remove members INIT and LOOP_INIT.
1939         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
1940         the LSETUP sequence.  Allow LC to be loaded from any register, but
1941         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
1942         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
1943         set to 1.
1944         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
1945         of reload_completed.
1946
1947         From Jie Zhang:
1948         * config/bfin/bfin.md (movsi_insn): Refine constraints.
1949
1950 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
1951
1952         * Makefile.in (PLUGIN_VERSION_H): New.
1953         (OBJS-common): Remove plugin-version.o.
1954         (plugin.o): Depend on (PLUGIN_VERSION_H).
1955         (plugin-version.o): Remove.
1956         * configure: Regenerate
1957         * configure.ac: Create plugin-version.h.
1958         * gcc-plugin.h (plugin_gcc_version): Remove.
1959         (plugin_default_version_check): Change signature.
1960         * plugin-version.c: Remove.
1961         * plugin.c: Include plugin-version.h.
1962         (str_plugin_gcc_version_name): Remove.
1963         (try_init_one_plugin): Pass gcc version to plugin_init.
1964         (plugin_default_version_check): Both gcc and plugin versions are now
1965         arguments.
1966
1967 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
1968         
1969         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
1970         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
1971         Remove special case testing for last insn of inner loops. Don't fail
1972         if the loop ends with a jump, emit an extra nop instead.
1973
1974         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
1975         DREGS rather than comparing directly.  Remove code that tries to
1976         account for latencies.
1977
1978 2009-04-29  Richard Guenther  <rguenther@suse.de>
1979
1980         PR tree-optimization/39941
1981         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
1982         eliminating an indirect call.
1983
1984 2009-04-29  Richard Guenther  <rguenther@suse.de>
1985
1986         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
1987         parameter.  Allow invariants as base if !require_lvalue.
1988         (verify_gimple_assign_single): Adjust.
1989
1990 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
1991
1992         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
1993         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
1994         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
1995         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
1996         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
1997         a VEC_SELECT.
1998         * config/bfin/bfin.c (bfin_expand_builtin,
1999         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
2000
2001 2009-04-28  Richard Guenther  <rguenther@suse.de>
2002
2003         * tree-vect-loop.c (get_initial_def_for_induction): Use
2004         correct types for pointer increment.
2005
2006 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2007
2008         * toplev.c (print_version): Update GMP version string calculation.
2009
2010 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
2011
2012         PR rtl-optimization/39938
2013         * resource.c (init_resource_info): Add call to df_analyze.
2014
2015 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
2016
2017         * config/alpha/alpha.md (usegp): Cast the result of
2018         alpha_find_lo_sum_using_gp to enum attr_usegp.
2019         * config/alpha/alpha.c (override_options): Remove end-of-structure
2020         marker element from cpu_table.  Use array size of cpu_table to handle
2021         -mcpu and -mtune options.
2022         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
2023
2024 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
2025
2026         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
2027         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
2028         tune_32 and tune_64.
2029         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
2030         support on PowerPC.
2031         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
2032         * config/rs6000/option-defaults.h: ... here.  New file.
2033         (OPT_64, OPT_32): Define.
2034         (MASK_64BIT): Define to 0 if not already defined.
2035         (OPT_ARCH64, OPT_ARCH32): Define.
2036         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
2037         and tune_64.
2038
2039 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2040
2041         * config/arm/arm.c (arm_override_options): Emit error on using
2042         fpa with AAPCS.
2043
2044 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
2045
2046         PR rtl-optimization/39914
2047         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
2048         registers for allocnos created from user-defined variables only
2049         when not optimizing.
2050
2051 2009-04-28  Richard Guenther  <rguenther@suse.de>
2052
2053         PR middle-end/39937
2054         * fold-const.c (fold_binary): Use distribute_real_division only
2055         on float types.
2056
2057 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
2058
2059         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
2060         add hpux-stdint.h to tm_file.
2061         (hppa[12]*-*-hpux11*): Ditto.
2062         (ia64*-*-hpux*): Ditto.
2063         * config/hpux-stdint.h: New.
2064         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
2065         __STDC_EXT__ for all compiles.
2066         * config/pa/pa-hpux.h: Ditto.
2067         * config/pa/pa-hpux10.h: Ditto.
2068         * config/pa/pa-hpux11.h: Ditto.
2069
2070 2009-04-28  Catherine Moore  <clm@codesourcery.com>
2071
2072         * debug.h (set_name): Add comment.
2073
2074 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
2075
2076         PR target/39929
2077         * config/darwin.c (machopic_gen_offset): Check
2078         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
2079         * config/arm/arm.c (require_pic_register): Likewise.
2080
2081 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
2082
2083         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
2084         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
2085         m32c_promote_prototypes): Delete.
2086
2087 2009-04-28  Michael Matz  <matz@suse.de>
2088
2089         PR middle-end/39922
2090         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
2091         constants.
2092
2093 2009-04-28  Richard Guenther  <rguenther@suse.de>
2094
2095         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
2096
2097 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2098
2099         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
2100         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
2101         * config/arm/arm-tune.md: Regenerate.
2102
2103 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
2104
2105         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
2106         block if there are complex incoming edges.
2107         (sel_merge_blocks): Remove useless assert.
2108         (sel_redirect_edge_and_branch): Check that edge was redirected.
2109         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
2110         (sel_find_rgns): Delete declaration.
2111         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
2112         the region when it is not a preheader.
2113
2114 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
2115
2116         PR c/39323
2117         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
2118
2119 2009-04-28  Richard Guenther  <rguenther@suse.de>
2120
2121         * tree.h (SSA_NAME_VALUE): Remove.
2122         (struct tree_ssa_name): Remove value_handle member.
2123         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
2124         array for jump threading.
2125         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
2126         SSA_NAME_VALUEs.
2127         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
2128         * tree-flow.h (threadedge_initialize_values): Declare.
2129         (threadedge_finalize_values): Likewise.
2130         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
2131         (SSA_NAME_VALUE): Define.
2132         (threadedge_initialize_values): New function.
2133         (threadedge_finalize_values): Likewise.
2134         * tree-ssa-dom.c (ssa_name_values): New global variable.
2135         (SSA_NAME_VALUE): Define.
2136         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
2137
2138 2009-04-28  Ira Rosen  <irar@il.ibm.com>
2139
2140         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
2141         Use REPORT_VECTORIZED_LOCATIONS instead 
2142         REPORT_VECTORIZED_LOOPS.
2143         * tree-vectorizer.c (vect_verbosity_level): Make static.
2144         (vect_loop_location): Rename to vect_location.
2145         (vect_set_verbosity_level): Update comment.
2146         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
2147         and vect_location.
2148         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
2149         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
2150         instead REPORT_UNVECTORIZED_LOOPS.
2151         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
2152         and vect_loop_def to vect_external_def and vect_internal_def.
2153         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
2154         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
2155         REPORT_UNVECTORIZED_LOCATIONS.
2156         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
2157         and vect_used_in_loop and to vect_unused_in_scope and 
2158         vect_used_in_scope.
2159         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
2160         (vect_verbosity_level): Remove declaration.
2161         (vect_analyze_operations): Likewise.
2162         (vect_analyze_stmt): Declare.
2163         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
2164         REPORT_UNVECTORIZED_LOCATIONS.
2165         (vect_get_loop_niters): Fix indentation.
2166         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
2167         (vect_analyze_loop_operations): New function.
2168         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
2169         vect_analyze_operations.
2170         (vect_is_simple_reduction): Use new names.
2171         (vectorizable_live_operation, vect_transform_loop): Likewise.
2172         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
2173         to specify whether the data references can be a part of interleaving
2174         chain.
2175         (vect_analyze_data_ref_dependence): Use new names.
2176         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
2177         (vect_create_addr_base_for_vector_ref): Remove redundant code.
2178         * tree-vect-patterns.c (widened_name_p): Use new names.
2179         (vect_recog_dot_prod_pattern): Likewise.
2180         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
2181         (process_use, vect_mark_stmts_to_be_vectorized, 
2182         vect_model_simple_cost, vect_model_store_cost,
2183         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
2184         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
2185         vectorizable_operation, vectorizable_type_demotion,
2186         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
2187         vectorizable_condition): Likewise.
2188         (vect_analyze_operations): Split into vect_analyze_loop_operations
2189         and ...
2190         (vect_analyze_stmt): ... new function.
2191         (new_stmt_vec_info): Use new names.
2192         (vect_is_simple_use): Use new names and fix comment.
2193         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
2194         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
2195
2196 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
2197
2198         PR target/39911
2199         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
2200         and integer modes for x87 operands.  Do not ICE for unsupported size,
2201         generate error instead.  Generate error for unsupported operand types.
2202         ['z']: Do not handle HImode memory operands specially.  Warning
2203         for floating-point operands.  Fallthru to 'Z' for unsupported operand
2204         types.  Do not ICE for unsupported size, generate error instead.
2205         (output_387_binary_op): Use %Z to output operands.
2206         (output_fp_compare): Ditto.
2207         (output_387_reg_move): Ditto.
2208
2209 2009-04-28  Ben Elliston  <bje@au.ibm.com>
2210
2211         PR c++/35652
2212         Revert:
2213
2214         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2215
2216         * builtins.c (c_strlen): Do not warn here.
2217         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
2218         * c-common.c (pointer_int_sum): Take an explicit location.
2219         Warn about offsets out of bounds.
2220         * c-common.h (pointer_int_sum): Adjust declaration.
2221
2222 2009-04-27  Ian Lance Taylor  <iant@google.com>
2223
2224         * collect2.c (is_ctor_dtor): Change type of ret field in struct
2225         names to symkind.
2226         * dce.c (run_fast_df_dce): Change type of old_flags to int.
2227         * df-core.c (df_set_flags): Change return type to int.  Change
2228         type of old_flags to int.
2229         (df_clear_flags): Likewise.
2230         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
2231         (df_get_conditional_uses): Likewise.
2232         * df.h (df_set_flags, df_clear_flags): Update declarations.
2233         * dwarf2out.c (struct indirect_string_node): Change type of form
2234         field to enum dwarf_form.
2235         (AT_string_form): Change return type to enum dwarf_form.
2236         * fixed-value.c (fixed_compare): Add cast to enum type.
2237         * fwprop.c (update_df): Change 0 to VOIDmode.
2238         * gensupport.c: Change 0 to UNKNOWN.
2239         * gimple.h (gimple_cond_code): Add cast to enum type.
2240         * haifa-sched.c (reemit_notes): Add cast to enum type.
2241         * hooks.c (hook_int_void_no_regs): Remove function.
2242         * hooks.h (hook_int_void_no_regs): Remove declaration.
2243         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
2244         * predict.c (combine_predictions_for_insn): Add casts to enum type.
2245         * real.c (real_arithmetic): Add cast to enum type.
2246         (real_compare): Likewise.
2247         * target.h (struct gcc_target): Change return type of
2248         branch_target_register_class to enum reg_class.
2249         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
2250         default_branch_target_register_class.
2251         * targhooks.c (default_branch_target_register_class): New function.
2252         * targhooks.h (default_branch_target_register_class): Declare.
2253         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
2254         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
2255         cast to int.
2256         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
2257         ERROR_MARK.
2258         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
2259         vect_uninitialized_def.  Change 0 to ERROR_MARK.
2260         * tree-vect-stmts.c (supportable_widening_operation): Don't
2261         initialize icode1 and icode2.
2262         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
2263         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
2264         and to STD_C89.
2265         (cmn_err_flag_specs): Change 0 to STD_C89.
2266         (cmn_err_char_table): Likewise.
2267         * config/arm/arm.c (get_arm_condition_code): Change type of code
2268         to enum arm_cond_code.
2269         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
2270         (IWMMXT_BUILTIN2): Likewise.
2271         (neon_builtin_type_bits): Don't define typedef.
2272         (neon_builtin_datum): Change type of bits field to int.
2273         (arm_expand_neon_args): Add cast to enum type.
2274         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
2275         TLS_MODEL_NONE.
2276         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
2277         casts to enum type.
2278         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
2279         MIPS_FP_COND_f.
2280         * config/mips/mips.md (jal_macro): Return enum constant.
2281         (single_insn): Likewise.
2282         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
2283         CODE_FOR_nothing.
2284         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
2285         casts to enum type.
2286         * config/s390/s390.c (s390_tune_flags): Change type to int.
2287         (s390_arch_flags): Likewise.
2288         (s390_handle_arch_option): Change flags field of struct pta to int.
2289         * config/s390/s390.h (s390_tune_flags): Update declaration.
2290         (s390_arch_flags): Likewise.
2291         * config/sh/sh.c (prepare_move_operands): Compare
2292         tls_symbolic_operand result with enum constant.
2293         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
2294         (sh_expand_prologue): Add cast to enum type.
2295         (sh_expand_epilogue): Likewise.
2296         (tls_symbolic_operand): Change return type to enum tls_model.
2297         (fpscr_set_from_mem): Add cast to enum type.
2298         (legitimize_pic_address): Compare tls_symbolic_operand result with
2299         enum constant.
2300         (sh_target_reg_class): Change return type to enum reg_class.
2301         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
2302         PROCESSOR_xxx.
2303         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
2304         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
2305         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
2306         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
2307         (delayed_branch, tls_call_delay): Likewise.
2308         (eligible_for_sibcall_delay): Likewise.
2309         (eligible_for_return_delay): Likewise. 
2310         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
2311         (spu_expand_builtin_1): Likewise.
2312
2313         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
2314         for all types of conversions.
2315         (output_init_element): Issue -Wc++-compat warning if needed when
2316         initializing a bitfield with enum type.
2317         * c-parser.c (c_parser_expression): Set original_type to
2318         original_type of right hand operand of comman operator.
2319
2320 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2321
2322         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
2323         grammar nits.
2324         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
2325         * doc/cpp.texi (Standard Predefined Macros)
2326         (Implementation-defined behavior): Likewise.
2327         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
2328         * doc/gimple.texi (GIMPLE Exception Handling)
2329         (@code{GIMPLE_ASSIGN}): Likewise.
2330         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
2331         * doc/invoke.texi (Warning Options, Optimize Options)
2332         (AVR Options, Darwin Options): Likewise.
2333         (Optimize Options): Reformulate -fwhole-program description.
2334         * doc/loop.texi (Lambda): Likewise.
2335         * doc/md.texi (Output Template, Define Constraints)
2336         (Standard Names, Insn Splitting): Likewise.
2337         * doc/options.texi (Option properties): Likewise.
2338         * doc/passes.texi (Tree-SSA passes): Likewise.
2339         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
2340         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
2341         (File Names and DBX): Likewise.
2342         * doc/trouble.texi (Incompatibilities): Likewise.
2343
2344 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
2345
2346         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
2347         instruction is correct.
2348
2349 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
2350
2351         Allow non-constant arguments to conversion intrinsics.
2352         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
2353         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
2354         * spu.c (print_operand): Handle 'v' and 'w'.
2355         (exp2_immediate_p, spu_gen_exp2): Define.
2356         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
2357         spu_convtf_1): Update parameter descriptions.
2358         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
2359         * constraints.md ('v', 'w'): New.
2360         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
2361         Remove.
2362         (i2f, I2F): New define_mode_attr.
2363         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
2364         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
2365         fixuns_truncv4sfv4si2):  Update to use mode attribute.
2366         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
2367         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
2368         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
2369         patterns for combine.
2370
2371 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
2372
2373         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
2374         (cprop, hoist, pre, store_motion): New debug counters.
2375         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
2376         is not an RTL pass anymore.
2377         (pass_profiling): Remove extern decl for pass removed in 2005.
2378         (pass_gcse, pass_jump_bypass): Remove.
2379         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
2380         to 0 for clean state.
2381         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
2382         * cse.c (gate_handle_cse_after_global_opts,
2383         rest_of_handle_cse_after_global_opts): New functions.
2384         (pass_cse_after_global_opts): New pass, does local CSE.
2385         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
2386         (TV_CPROP): New timevar.
2387         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
2388         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
2389         (gcse_main, recompute_all_luids): Remove.
2390         (compute_hash_table_work): Call max_reg_num instead of reading
2391         max_gcse_regno.
2392         (cprop_jump): Don't set run_jump_opt_after_gcse.
2393         (constprop_register): Always allow to alter jumps.
2394         (cprop_insn): Likewise.
2395         (do_local_cprop): Likewise.
2396         (local_cprop_pass): Likewise.  Return non-zero if something changed.
2397         (cprop): Remove function, fold interesting bits into one_cprop_pass.
2398         (find_implicit_sets): Add note about missed optimization opportunity.
2399         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
2400         pass_rtl_cprop execute function.
2401         Don't bother tracking the pass number, each pass gets its own dumpfile
2402         now anyway.
2403         Always allow to alter jumpsand bypass jumps.
2404         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
2405         will just find no suitable set.
2406         (pre_edge_insert): Fix dumping, this function is for PRE only.
2407         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
2408         pass_rtl_pre execute function.
2409         (hoist_code): Return non-zero if something changed.  Keep track of
2410         substitutions and insertions for statistics gathering similar to PRE.
2411         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
2412         called from the pass_rtl_hoist execute function.  Show pass statistics.
2413         (compute_store_table): Use max_reg_num directly instead of using the
2414         formerly global max_gcse_regno.
2415         (build_store_vectors): Likewise.
2416         (replace_store_insn): Fix dumping.
2417         (store_motion): Rename to ...
2418         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
2419         pass, called from the pass_rtl_store_motion execute function.  Keep
2420         track of substitutions and insertions for statistics gathering similar
2421         to PRE.
2422         (bypass_jumps): Remove, fold interesting bits into ...
2423         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
2424         from the pass_rtl_cprop execute function.
2425         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
2426         pass_jump_bypass): Remove.
2427         (gate_handle_gcse, rest_of_handle_gcse): Remove.
2428         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
2429         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
2430         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
2431         (gate_rtl_store_motion, execute_rtl_store_motion,
2432         pass_rtl_store_motion): New.
2433         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
2434         make it clear that -fcse-skip-blocks is a no-op for backward compat.
2435         * passes.c (init_optimization_passes): Remove pass_gcse and
2436         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
2437         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
2438         instead of pass_jump_bypass.
2439
2440 2009-04-27  Richard Guenther  <rguenther@suse.de>
2441
2442         PR middle-end/39928
2443         * gimplify.c (gimplify_expr): If we are required to create
2444         a temporary make sure it ends up as register.
2445
2446 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
2447
2448         PR target/39903
2449         * config/i386/i386.c (construct_container): Don't call
2450         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
2451         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
2452
2453 2009-04-27  Michael Matz  <matz@suse.de>
2454
2455         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
2456         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
2457         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
2458         (dump_replaceable_exprs): Take a bitmap.
2459         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
2460         array.
2461         (expand_gimple_basic_block): Likewise.
2462         * tree-ssa-ter.c (struct temp_expr_table_d): Make
2463         replaceable_expressions member a bitmap.
2464         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
2465         (mark_replaceable): Likewise.
2466         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
2467         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
2468
2469 2009-04-27  Richard Guenther  <rguenther@suse.de>
2470
2471         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
2472         (verify_stmts): Dispatch to gimple/type verification code.
2473         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
2474         issue with call argument types.
2475
2476 2009-04-27  Michael Matz  <matz@suse.de>
2477
2478         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
2479         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
2480         to above.
2481
2482 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
2483             Eric Botcazou  <ebotcazou@adacore.com>
2484
2485         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
2486         a label's basic block.
2487         (mark_target_live_regs): Tidy and rework obsolete comments.
2488         Change back DF problem to LIVE.  If a label starts a basic block,
2489         assume that all registers that used to be live then still are.
2490         (init_resource_info): If a label starts a basic block, set its
2491         BLOCK_FOR_INSN accordingly.
2492         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
2493
2494 2009-04-27  Richard Guenther  <rguenther@suse.de>
2495
2496         * tree-flow-inline.h (function_ann): Remove.
2497         (get_function_ann): Likewise.
2498         * tree-dfa.c (create_function_ann): Remove.
2499         * tree-flow.h (struct static_var_ann_d): Remove.
2500         (struct function_ann_d): Likewise.
2501         (union tree_ann_d): Remove fdecl member.
2502         (function_ann_t): Remove.
2503         (function_ann, get_function_ann, create_function_ann): Remove
2504         declarations.
2505
2506 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
2507
2508         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
2509
2510 2009-04-27  Jan Hubicka  <jh@suse.cz>
2511
2512         * ipa-pure-const.c (struct funct_state_d): New fields
2513         state_previously_known, looping_previously_known; remove
2514         state_set_in_source.
2515         (analyze_function): Use new fields.
2516         (propagate): Avoid assumption that state_set_in_source imply
2517         nonlooping.
2518
2519         * tree-ssa-loop-niter.c (finite_loop_p): New function.
2520         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
2521         * cfgloop.h (finite_loop_p): Declare.
2522
2523 2009-04-26  Michael Matz  <matz@suse.de>
2524
2525         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
2526
2527 2009-04-26  Michael Matz  <matz@suse.de>
2528
2529         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
2530         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
2531         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
2532         pass_mark_used_blocks): Remove.
2533         * tree-optimize.c (pass_free_datastructures,
2534         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
2535         * passes.c (init_optimization_passes): Don't call
2536         pass_mark_used_blocks, remove dead code.
2537
2538 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
2539
2540         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
2541         * tree-ssa-live.h (register_ssa_partition): Likewise.
2542
2543 2009-04-26  Michael Matz  <matz@suse.de>
2544
2545         Expand from SSA.
2546         * builtins.c (fold_builtin_next_arg): Handle SSA names.
2547         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
2548         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
2549         SSA names. 
2550         (compare_pairs): Swap cost comparison.
2551         (coalesce_ssa_name): Don't use change_partition_var.
2552         * tree-nrv.c (struct nrv_data): Add modified member.
2553         (finalize_nrv_r): Set it.
2554         (tree_nrv): Use it to update statements.
2555         (pass_nrv): Require PROP_ssa.
2556         * tree-mudflap.c (mf_decl_cache_locals,
2557         mf_build_check_statement_for): Use make_rename_temp.
2558         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
2559         * alias.c (find_base_decl): Handle SSA names.
2560         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
2561         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
2562         * rtl.h (set_reg_attrs_for_parm): Declare.
2563         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
2564         to "optimized", remove unused locals at finish.
2565         (execute_free_datastructures): Make global, call
2566         delete_tree_cfg_annotations.
2567         (execute_free_cfg_annotations): Don't call
2568         delete_tree_cfg_annotations.
2569
2570         * ssaexpand.h: New file.
2571         * expr.c (toplevel): Include ssaexpand.h.
2572         (expand_assignment): Handle SSA names the same as register variables.
2573         (expand_expr_real_1): Expand SSA names.
2574         * cfgexpand.c (toplevel): Include ssaexpand.h.
2575         (SA): New global variable.
2576         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
2577         (SSAVAR): New macro.
2578         (set_rtl): New helper function.
2579         (add_stack_var): Deal with SSA names, use set_rtl.
2580         (expand_one_stack_var_at): Likewise.
2581         (expand_one_stack_var): Deal with SSA names.
2582         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
2583         before unique numbers.
2584         (expand_stack_vars): Use set_rtl.
2585         (expand_one_var): Accept SSA names, add asserts for them, feed them
2586         to above subroutines.
2587         (expand_used_vars): Expand all partitions (without default defs),
2588         then only the local decls (ignoring those expanded already).
2589         (expand_gimple_cond): Remove edges when jumpif() expands an
2590         unconditional jump.
2591         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
2592         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
2593         SSA name.
2594         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
2595         members of SA; deal with PARM_DECL partitions here; expand
2596         all PHI nodes, free tree datastructures and SA.  Commit instructions
2597         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
2598         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
2599         info and statements at start, collect garbage at finish.
2600         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
2601         (VAR_ANN_PARTITION) Remove.
2602         (change_partition_var): Don't declare.
2603         (partition_to_var): Always return SSA names.
2604         (var_to_partition): Only accept SSA names.
2605         (register_ssa_partition): Only check argument.
2606         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
2607         member.
2608         (delete_var_map): Don't free it.
2609         (var_union): Only accept SSA names, simplify.
2610         (partition_view_init): Mark only useful SSA names as used.
2611         (partition_view_fini): Only deal with SSA names.
2612         (change_partition_var): Remove.
2613         (dump_var_map): Use ssa_name instead of partition_to_var member.
2614         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
2615         basic blocks.
2616         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
2617         (struct _elim_graph): New member const_dests; nodes member vector of
2618         ints.
2619         (set_location_for_edge): New static helper.
2620         (create_temp): Remove.
2621         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
2622         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
2623         (new_elim_graph): Allocate const_dests member.
2624         (clean_elim_graph): Truncate const_dests member.
2625         (delete_elim_graph): Free const_dests member.
2626         (elim_graph_size): Adapt to new type of nodes member.
2627         (elim_graph_add_node): Likewise.
2628         (eliminate_name): Likewise.
2629         (eliminate_build): Don't take basic block argument, deal only with
2630         partition numbers, not variables.
2631         (get_temp_reg): New static helper.
2632         (elim_create): Use it, deal with RTL temporaries instead of trees.
2633         (eliminate_phi): Adjust all calls to new signature.
2634         (assign_vars, replace_use_variable, replace_def_variable): Remove.
2635         (rewrite_trees): Only do checking.
2636         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
2637         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
2638         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
2639         contains_tree_r, MAX_STMTS_IN_LATCH,
2640         process_single_block_loop_latch, analyze_edges_for_bb,
2641         perform_edge_inserts): Remove.
2642         (expand_phi_nodes): New global function.
2643         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
2644         functions, initialize new parameter, remember partitions having a
2645         default def.
2646         (finish_out_of_ssa): New global function.
2647         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
2648         don't reset in_ssa_p here, don't disable TER when mudflap.
2649         (pass_del_ssa): Remove.
2650         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
2651         partition members.
2652         (execute_free_datastructures): Declare.
2653         * Makefile.in (SSAEXPAND_H): New variable.
2654         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
2655         * basic-block.h (commit_one_edge_insertion): Declare.
2656         * passes.c (init_optimization_passes): Move pass_nrv and
2657         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
2658         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
2659         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
2660         (redirect_branch_edge): Deal with super block when expanding, split
2661         out jump patching itself into ...
2662         (patch_jump_insn): ... here, new static helper.
2663
2664 2009-04-26  Michael Matz  <matz@suse.de>
2665
2666         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
2667         beyond num_ssa_names.
2668         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
2669         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
2670
2671 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
2672
2673         PR inline-asm/39543
2674         * fwprop.c (forward_propagate_asm): New function.
2675         (forward_propagate_and_simplify): Propagate also into __asm, if it
2676         doesn't increase the number of referenced registers.
2677
2678         PR c/39889
2679         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
2680
2681 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
2682
2683         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
2684         note_nonlocal_vla_type for nonlocal VLAs.
2685         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
2686         contains_remapped_vars, remap_vla_decls): New functions.
2687         (convert_nonlocal_reference_stmt): If not optimizing, call
2688         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
2689         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
2690         if it wasn't found in var_map.
2691         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
2692         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
2693         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
2694         declare_vars.
2695         * gimplify.c (nonlocal_vlas): New variable.
2696         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
2697         referenced VLAs.
2698         (gimplify_body): Create and destroy nonlocal_vlas.
2699
2700         * dwarf2out.c (loc_descr_plus_const): New function.
2701         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
2702         mem_loc_descriptor, loc_descriptor_from_tree_1,
2703         descr_info_loc, gen_variable_die): Use it.
2704
2705         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
2706         !TREE_STATIC VAR_DECLs.
2707         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
2708         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
2709         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
2710         DECL_BY_REFERENCE is valid.
2711         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
2712         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
2713         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
2714         Copy DECL_BY_REFERENCE.
2715         (struct nesting_copy_body_data): New type.
2716         (nesting_copy_decl): New function.
2717         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
2718         if they have variable length.
2719
2720 2009-04-26  Michael Matz  <matz@suse.de>
2721
2722         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
2723         mark new temporaries for renaming.
2724
2725 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
2726
2727         PR c/39581
2728         * c-decl.c (global_bindings_p): Return negative value.
2729         (c_variable_size): New.  Based on variable_size from
2730         stor-layout.c.
2731         (grokdeclarator): Call c_variable_size not variable_size.
2732
2733 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
2734
2735         * config/i386/i386.c (print_operand) ['z']: Fix typo.
2736
2737 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
2738
2739         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
2740         Redefine it to just use mingw/include.
2741         (ASM_SPEC): Rules for -m32 and -m64.
2742         (LINK_SPEC): Use Likewise.
2743         (SPEC_32): New define.
2744         (SPEC_64): Likewise.
2745         (SUB_LINK_SPEC): Likewise.
2746         (MULTILIB_DEFAULTS): New define.
2747         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
2748         Add multilib options.
2749         (MULTILIB_DIRNAMES): Likewise.
2750         (MULTILIB_OSDIRNAMES): Likewise.
2751         (LIBGCC): Likewise.
2752         (INSTALL_LIBGCC): Likewise.
2753
2754 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
2755
2756         PR c/39556
2757         * c-tree.h (enum c_inline_static_type): New.
2758         (record_inline_static): Declare.
2759         * c-decl.c (struct c_inline_static, c_inline_statics,
2760         record_inline_static, check_inline_statics): New.
2761         (pop_file_scope): Call check_inline_statics.
2762         (start_decl): Call record_inline_static instead of pedwarning
2763         directly for static in inline function.
2764         * c-typeck.c (build_external_ref): Call record_inline_static
2765         instead of pedwarning directly for static referenced in inline
2766         function.
2767
2768 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
2769
2770         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
2771         not new but only being rescanned.
2772         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
2773         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
2774         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
2775         record_set_info, compute_set, grealloc): Remove.
2776         (recompute_all_luids): New function.
2777         (gcse_main): Don't compute sets, and don't do related memory
2778         allocations/free-ing.  If something changed before the end of the
2779         pass, update LUIDs using recompute_all_luids.
2780         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
2781         (free_gcse_mem): Don't free it either.
2782         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
2783         Use the df insn LUIDs.
2784         (load_killed_in_block): Likewise.
2785         (compute_hash_table_work): Don't compute reg_set_in_block.
2786         (compute_transp): Use DF_REG_DEF_CHAINs.
2787         (local_cprop_pass): Don't use compute_sets and related functions.
2788         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
2789         Use get_max_uid() instead of max_cuid.
2790         (insert_insn_end_basic_block, pre_insert_copy_insn,
2791         update_ld_motion_stores): Don't try to
2792         keep reg_set tables up to date.
2793         (pre_insert_copies): Use df insn LUIDs.
2794         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
2795         (reg_set_info): Don't use extra bitmap argument.
2796         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
2797         information to compute regs_set_in_block.
2798         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
2799         (bypass_jumps): Don't use compute_sets and friends.
2800
2801 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2802
2803         PR testsuite/39710
2804         * opts.c (undocumented_msg): Do not leave blank even with
2805         ENABLE_CHECKING.
2806
2807 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
2808
2809         * c-decl.c (build_enumerator): Allow values folding to integer
2810         constants but not integer constant expressions with a pedwarn if
2811         pedantic.
2812
2813 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
2814
2815         PR c/39582
2816         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
2817         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
2818         type is an integer constant.
2819
2820 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
2821
2822         PR target/39897
2823         * config/i386/i386.c (print_operand) ['z']: Revert handling of
2824         HImode operands.
2825
2826 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
2827
2828         PR c/39564
2829         * c-decl.c (grokdeclarator): Diagnose declarations of functions
2830         with variably modified return type and no storage class
2831         specifiers, except for the case of nested functions.  Distinguish
2832         extern declarations of functions with variably modified return
2833         types from those of objects with variably modified types.
2834
2835 2009-04-25  Jan Hubicka  <jh@suse.cz>
2836
2837         * tree.c (list_equal_p): New function.
2838         * tree.h (list_equal_p): Declare.
2839         * coretypes.h (edge_def, edge, const_edge, basic_block_def
2840         basic_block_def, basic_block, const_basic_block): New.
2841         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
2842         (redirect_eh_edge): New function.
2843         (make_eh_edge_update_phi): EH edges are not abnormal.
2844         * except.c: Include tree-flow.h.
2845         (list_match): New function.
2846         (eh_region_replaceable_by_p): New function.
2847         (replace_region): New function.
2848         (hash_type_list): New function.
2849         (hash_eh_region): New function.
2850         (eh_regions_equal_p): New function.
2851         (merge_peers): New function.
2852         (remove_unreachable_regions): Verify EH tree when checking;
2853         merge peers.
2854         (copy_eh_region_1): New function.
2855         (copy_eh_region): New function.
2856         (push_reachable_handler): New function.
2857         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
2858         regions without label but with live RESX.
2859         * except.h (redirect_eh_edge_to_label): New.
2860         * tree-flow.h (redirect_eh_edge): New.
2861         * coretypes.h (edge_def, edge, const_edge, basic_block_def
2862         basic_block_def, basic_block, const_basic_block): Remove.
2863         * Makefile.in (except.o): Add dependency on tree-flow.h
2864         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
2865         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
2866         Remove.
2867
2868 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
2869
2870         PR bootstrap/39645
2871         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
2872         on the destination of memcpy.
2873
2874 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
2875
2876         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
2877         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
2878         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
2879
2880 2009-04-25  Jan Hubicka  <jh@suse.cz>
2881
2882         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
2883         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
2884         to be reached by different label than left.
2885         (update_eh_edges): Update comment; remove edge_to_remove if possible
2886         and return true if suceeded.
2887         (cleanup_empty_eh): Accept sharing map; handle shared regions.
2888         (cleanup_eh): Compute sharing map.
2889         * except.c (remove_eh_handler_and_replace): Add argument if we should
2890         update regions.
2891         (remove_unreachable_regions): Update for label sharing.
2892         (label_to_region_map): Likewise.
2893         (get_next_region_sharing_label): New function.
2894         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
2895         prev_try pointers.
2896         (remove_eh_handler): Update.
2897         (remove_eh_region_and_replace_by_outer_of): New function.
2898         * except.h (struct eh_region): Add next_region_sharing_label.
2899         (remove_eh_region_and_replace_by_outer_of,
2900         get_next_region_sharing_label): Declare.
2901         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
2902
2903 2009-04-25  Jan Hubicka  <jh@suse.cz>
2904
2905         * tree-cfg.c (split_critical_edges): Split also edges where we can't
2906         insert code even if they are not critical.
2907
2908 2009-04-25  Jan Hubicka  <jh@suse.cz>
2909
2910         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
2911         (gimple_can_remove_branch_p): EH edges won't remove branch by
2912         redirection.
2913         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
2914         updating of non-abnormal EH edges.
2915         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
2916         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
2917         (split_critical_edges): Split also edges where emitting code on them
2918         will lead to splitting later.
2919
2920 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
2921             H.J. Lu  <hongjiu.lu@intel.com>
2922
2923         PR target/39590
2924         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
2925         the configured assembler supports fildq and fistpq mnemonics.
2926         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
2927         * configure: Regenerated.
2928         * config.in: Ditto.
2929
2930         * config/i386/i386.c (print_operand): Handle 'Z'.
2931         ['z']: Remove handling of special fild/fist suffixes.
2932         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
2933         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
2934         suffix of fild insn.
2935         (*floatsi<mode>2_vector_mixed): Ditto.
2936         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
2937         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
2938         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
2939         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
2940         * config/i386/gas.h (GAS_MNEMONICS): Remove.
2941
2942 2009-04-25  Ben Elliston  <bje@au.ibm.com>
2943  
2944         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
2945         the source of a set operation.
2946
2947 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
2948
2949         * target.h (struct gcc_target): Add case_values_threshold field.
2950         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
2951         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
2952         * targhooks.c (default_case_values_threshold): New function.
2953         * targhooks.h (default_case_values_threshold): Declare function.
2954         * stmt.c (expand_case): Use case_values_threshold target hook.
2955         * expr.h (case_values_threshold): Remove declartation.
2956         * expr.c (case_values_threshold): Remove function.
2957         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
2958
2959         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
2960         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
2961         (avr_case_values_threshold): Declare as static.
2962         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
2963
2964         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
2965         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
2966         (mn10300_case_values_threshold): New function.
2967
2968 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
2969
2970         * ira.c (setup_cover_and_important_classes): Add enum cast.
2971
2972 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
2973
2974         * genpreds.c (write_enum_constraint_num): Output definition of
2975         CONSTRAINT_NUM_DEFINED_P macro.
2976         * ira.c (setup_cover_and_important_classes): Use
2977         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
2978         
2979 2009-04-24  DJ Delorie  <dj@redhat.com>
2980
2981         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
2982         __SH2A_SINGLE_ONLY__ also.
2983
2984 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
2985
2986         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
2987         (movdf_internal): Ditto.
2988         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
2989         SFmode and DFmode constants.
2990         (ia64_print_operand): Add 'G' format for printing
2991         floating point constants.
2992
2993 2009-04-24  Richard Guenther  <rguenther@suse.de>
2994
2995         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
2996         from unsigned additions.
2997
2998 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
2999
3000         * c-typeck.c (set_init_index): Allow array designators that are
3001         not integer constant expressions with a pedwarn if pedantic.
3002
3003 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
3004
3005         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
3006         zero if no overlap in nonzero bits between the operands.
3007
3008 2009-04-24  Ian Lance Taylor  <iant@google.com>
3009
3010         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
3011         (record_dead_and_set_regs): Likewise.
3012         * df.h (struct df_mw_hardreg): Change flags field to int.
3013         (struct df_base_ref): Likewise.
3014         (struct df): Change changeable_flags field to int.
3015         * df-scan.c (df_defs_record): Change clobber_flags to int.
3016         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
3017         constants rather than #define macros.
3018         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
3019         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
3020         (enum dwarf_calling_convention): Likewise.
3021         (enum dwarf_line_number_x_ops): Likewise.
3022         (enum dwarf_call_frame_info): Likewise.
3023         (enum dwarf_source_language): Likewise.
3024         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
3025         (add_calling_convention_attribute): Likewise.
3026         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
3027         (combine_comparisons): Change compcode to int.  Add cast to enum type.
3028         * genrecog.c (maybe_both_true_2): Change c to int.
3029         (write_switch): Likewise.  Add cast to enum type.
3030         * gimplify.c (gimplify_omp_for): Handle return values from
3031         gimplify_expr using MIN rather than bitwise or.
3032         (gimplify_expr): Add cast to enum type.
3033         * ipa-prop.c (update_jump_functions_after_inlining): Change
3034         IPA_BOTTOM to IPA_JF_UNKNOWN.
3035         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
3036         Add casts to enum type.
3037         (setup_cover_and_important_classes): Change cl to int.  Add casts
3038         to enum type.
3039         (setup_class_translate): Change cl and mode to int.
3040         (ira_init_once): Change mode to int.
3041         (free_register_move_costs): Likewise.
3042         (setup_prohibited_mode_move_regs): Add casts to enum type.
3043         * langhooks.c (add_builtin_function_common): Rework assertion that
3044         value fits bitfield.
3045         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
3046         * omega.c (omega_do_elimination): Avoid math on enum types.
3047         * optabs.c (expand_vec_shift_expr): Remove casts to int.
3048         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
3049         int local to handle integral_argment value.
3050         * regmove.c (try_auto_increment): Change PUT_MODE to
3051         PUT_REG_NOTE_KIND.
3052         * reload.c (push_secondary_reload): Add casts to enum type.
3053         (secondary_reload_class, find_valid_class): Likewise.
3054         * reload1.c (emit_input_reload_insns): Likewise.
3055         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
3056         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
3057         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
3058         constant.
3059         * tree.c (build_common_builtin_nodes): Add casts to enum type.
3060         * tree-complex.c (complex_lattice_t): Typedef to int rather than
3061         enum type.
3062         (expand_complex_libcall): Add casts to enum type.
3063         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
3064         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
3065         with ERROR_MARK, not NUM_TREE_CODES.
3066         (vect_create_epilog_for_reduction): Likewise.
3067         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
3068         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
3069         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
3070         enum machine_mode.
3071         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
3072         vect_unused_in_loop.  Change 0 to loop_vect.
3073         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
3074         * var-tracking.c (get_init_value): Change return type to enum
3075         var_init_status.
3076         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
3077         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
3078         arm_fp_model.
3079         (arm_override_options): Add casts to enum type.
3080         (arm_emit_tls_decoration): Likewise.
3081         * config/i386/i386.c (ix86_function_specific_restore): Add casts
3082         to enum type.
3083         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
3084         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
3085         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
3086         enum type.
3087         * config/s390/s390.c (code_for_builtin_64): Change to array of
3088         enum insn_code.
3089         (code_for_builtin_31): Likewise.
3090         (s390_expand_builtin): Change code_for_builtin to enum insn_code
3091         const *.
3092         * config/sparc/sparc.c (sparc_override_options): Change value
3093         field in struct code_model to enum cmodel.  In initializer change
3094         0 to NULL and add cast to enum type.
3095
3096         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
3097         Change all callers.  Issue a -Wc++-compat warning using
3098         lhs_origtype if necessary.
3099         (convert_for_assignment): Issue -Wc++-compat warnings about
3100         invalid conversions to enum type on assignment.
3101         * c-common.h (build_modify_expr): Update declaration.
3102
3103 2009-04-24  Nick Clifton  <nickc@redhat.com>
3104
3105         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
3106         (function_arg_advance): Likewise.
3107         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
3108         5th alternative.
3109
3110 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
3111
3112         * config/s390/constraints.md ('I', 'J'): Fix condition.
3113
3114 2009-04-24  Diego Novillo  <dnovillo@google.com>
3115
3116         * gengtype-parse.c (parse_error): Add newline after message.
3117
3118 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
3119
3120         * config/i386/sse.md (avxmodesuffixs): Removed.
3121         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
3122         (*avx_pinsr<ssevecsize>): This.
3123
3124 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
3125
3126         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
3127         follow chains of regs with a single definition, and allow expressions
3128         that are function_invariant_p.
3129         (simple_rhs_p): Allow expressions that are function_invariant_p.
3130
3131 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
3132
3133         PR middle-end/39867
3134         * fold-const.c (fold_cond_expr_with_comparison): When folding
3135         > and >= to MAX, make sure the MAX uses the same type as the
3136         comparison's operands.
3137
3138 2009-04-24  Nick Clifton  <nickc@redhat.com>
3139
3140         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
3141         addressing for DImode accesses.
3142         (frv_print_operand_address): Handle PLUS case.
3143         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
3144
3145 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
3146
3147         PR rtl-optimization/39794
3148         * alias.c (canon_true_dependence): Add x_addr argument.
3149         * rtl.h (canon_true_dependence): Adjust prototype.
3150         * cse.c (check_dependence): Adjust canon_true_dependence callers.
3151         * cselib.c (cselib_invalidate_mem): Likewise.
3152         * gcse.c (compute_transp): Likewise.
3153         * dse.c (scan_reads_nospill): Likewise.
3154         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
3155         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
3156         canon_base_addr of the group, plus optional offset.
3157         (struct group_info): Rename canon_base_mem to
3158         canon_base_addr.
3159         (get_group_info): Set canon_base_addr to canon_rtx of base, not
3160         canon_rtx of base_mem.
3161
3162 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
3163
3164         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
3165         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
3166
3167 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3168
3169         * config/spu/spu-builtins.h: Delete file.
3170
3171         * config/spu/spu.h (enum spu_builtin_type): Move here from
3172         spu-builtins.h.
3173         (struct spu_builtin_description): Likewise.  Add GTY marker.
3174         Do not use enum spu_function_code or enum insn_code.
3175         (spu_builtins): Add extern declaration.
3176
3177         * config/spu/spu.c: Do not include "spu-builtins.h".
3178         (enum spu_function_code, enum spu_builtin_type_index,
3179         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
3180         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
3181         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
3182         unsigned_V2DI_type_node): Move here from spu-builtins.h.
3183         (spu_builtin_types): Make static.  Add GTY marker.
3184         (spu_builtins): Add extern declaration with GTY marker.
3185         Include "gt-spu.h".
3186
3187         * config/spu/spu-c.c: Do not include "spu-builtins.h".
3188         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
3189         Check programmatically whether all parameters are scalar.
3190
3191         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
3192
3193 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
3194
3195         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
3196         assignment from the constructor either if the target is volatile.
3197
3198 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
3199
3200         * config/arm/arm.md (insv): Do not share operands[0].
3201
3202 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
3203
3204         * config/vxlib-tls.c (active_tls_threads): Delete.
3205         (delete_hook_installed): New.
3206         (tls_delete_hook): Don't delete the delete hook.
3207         (tls_destructor): Delete it here.
3208         (__gthread_set_specific): Adjust installing the delete hook.
3209         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
3210         __gthread_leave_tsd_dtor_context.
3211
3212 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
3213
3214         * c-format.c (gcc_tdiag_char_table): Add support for %E.
3215
3216 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
3217
3218         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
3219         enum type.
3220         (alpha_rtx_costs): Ditto.
3221         (emit_unlikely_jump): Use add_reg_note.
3222         (emit_frame_store_1): Ditto.
3223         (alpha_expand_prologue): Ditto.
3224         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
3225         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
3226
3227 2009-04-23  Nick Clifton  <nickc@redhat.com>
3228
3229         * config/v850/v850.md (epilogue): Remove suppressed code.
3230         (return): Rename to return_simple and remove test of frame size.
3231         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
3232         to gen_return_simple.
3233
3234 2009-04-22  Jing Yu  <jingyu@google.com>
3235
3236         PR testsuite/39781
3237         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
3238
3239 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3240
3241         PR C/31499
3242         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
3243         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
3244         value is a VECTOR_CST, the element type is the element type of the
3245         vector.
3246
3247 2009-04-22  DJ Delorie  <dj@redhat.com>
3248
3249         * config/m32c/m32c.h: Update GTY annotations to new syntax.
3250
3251 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
3252
3253         * alias.c (find_base_term): Move around LO_SUM case, so that
3254         CONST falls through into PLUS/MINUS handling.
3255
3256         PR c/39855
3257         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
3258         into 0, use omit_one_operand.
3259
3260 2009-04-23  Ben Elliston  <bje@au.ibm.com>
3261
3262         * config/rs6000/linux-unwind.h (get_regs): Remove type
3263         puns. Change the type of `pc' to an array of unsigned ints and
3264         update all users.  Constify frame24.
3265
3266 2009-04-22  DJ Delorie  <dj@redhat.com>
3267
3268         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
3269         declarations before code.
3270         (current_function_special_page_vector): Likewise.
3271         (m32c_expand_insv): Silence a warning.
3272
3273 2009-04-21  Taras Glek  <tglek@mozilla.com>
3274
3275         * alias.c: Update GTY annotations to new syntax.
3276         * basic-block.h: Likewise.
3277         * bitmap.h: Likewise.
3278         * c-common.h: Likewise.
3279         * c-decl.c: Likewise.
3280         * c-parser.c: Likewise.
3281         * c-pragma.c: Likewise.
3282         * c-tree.h: Likewise.
3283         * cfgloop.h: Likewise.
3284         * cgraph.h: Likewise.
3285         * config/alpha/alpha.c: Likewise.
3286         * config/arm/arm.h: Likewise.
3287         * config/avr/avr.h: Likewise.
3288         * config/bfin/bfin.c: Likewise.
3289         * config/cris/cris.c: Likewise.
3290         * config/darwin.c: Likewise.
3291         * config/frv/frv.c: Likewise.
3292         * config/i386/i386.c: Likewise.
3293         * config/i386/i386.h: Likewise.
3294         * config/i386/winnt.c: Likewise.
3295         * config/ia64/ia64.h: Likewise.
3296         * config/iq2000/iq2000.c: Likewise.
3297         * config/mips/mips.c: Likewise.
3298         * config/mmix/mmix.h: Likewise.
3299         * config/pa/pa.c: Likewise.
3300         * config/pa/pa.h: Likewise.
3301         * config/rs6000/rs6000.c: Likewise.
3302         * config/s390/s390.c: Likewise.
3303         * config/sparc/sparc.c: Likewise.
3304         * config/xtensa/xtensa.c: Likewise.
3305         * cselib.h: Likewise.
3306         * dbxout.c: Likewise.
3307         * dwarf2out.c: Likewise.
3308         * except.c: Likewise.
3309         * except.h: Likewise.
3310         * fixed-value.h: Likewise.
3311         * function.c: Likewise.
3312         * function.h: Likewise.
3313         * gimple.h: Likewise.
3314         * integrate.c: Likewise.
3315         * optabs.c: Likewise.
3316         * output.h: Likewise.
3317         * real.h: Likewise.
3318         * rtl.h: Likewise.
3319         * stringpool.c: Likewise.
3320         * tree-data-ref.c: Likewise.
3321         * tree-flow.h: Likewise.
3322         * tree-scalar-evolution.c: Likewise.
3323         * tree-ssa-address.c: Likewise.
3324         * tree-ssa-alias.h: Likewise.
3325         * tree-ssa-operands.h: Likewise.
3326         * tree.c: Likewise.
3327         * tree.h: Likewise.
3328         * varasm.c: Likewise.
3329         * varray.h: Likewise.
3330         * vec.h: Likewise.
3331         * coretypes.h: Do not define GTY macro if it is already defined.
3332         * doc/gty.texi: Update GTY documentation to new syntax.
3333         * gengtype-lex.l: Enforce attribute-like syntax for GTY
3334         annotations on structs.
3335         * gengtype-parse.c: Likewise.
3336
3337 2009-04-22  Mark Heffernan  <meheff@google.com>
3338
3339         * gcc.c&nbs