OSDN Git Service

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