OSDN Git Service

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