OSDN Git Service

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