OSDN Git Service

* cfgexpand (n_stack_vars_conflict): New static variable.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-11-26  Bernd Schmidt  <bernd.schmidt@analog.com>
2
3         * cfgexpand (n_stack_vars_conflict): New static variable.
4         (triangular_index): Reduce likelyhood of overflow by performing
5         the division before the multiplication.
6         (resize_stack_vars_conflict): Call fatal_error if overflow
7         occurred in triangular_index.  Update n_stack_vars_conflict.
8
9         PR rtl-opt/38582
10         * regrename.c (struct du_chain): Remove member earlyclobber.
11         (scan_rtx_reg): Don't set it.  Remove argument earlyclobber,
12         all callers changed.
13         (scan_rtx): Remove argument earlyclobber, all callers changed.
14         (hide_operands, restore_operands, record_out_operands): New functions,
15         broken out of build_def_use.
16         (build_def_use): Call them as necessary.
17
18         * regrename.c (struct du_head): New members id, conflicts,
19         hard_conflicts and cannot_rename.
20         (enum scan_actions): Remove terminate_all_read and
21         terminate_overlapping_read; add mark_all_read.
22         (scan_actions_name): Likewise.
23         (du_head_p): New typedef.  Define a vector type for it.
24         (id_to_chain): New static variable.
25         (note_sets, clear_dead_regs): Delete functions.
26         (free_chain_data): New function.
27         (merge_overlapping_regs): Simply walk the conflicts bitmap.
28         Remove argument B, all callers changed.
29         (regrename_optimize): Allocate id_to_chain.  Ignore chains that have
30         the cannot_rename bit set.  Update regno and nregs of a renamed chain.
31         Call free_chain_data when done.
32         (do_replace): Remove death notes when the renamed reg is set in the
33         last insn; add them if not.
34         (mark_conflict, note_sets_clobbers): New static function.
35         (fail_current_block, current_id, open_chains_set, live_hard_regs): New
36         static variables.
37         (scan_rtx_reg): Keep track of conflicts between chains, and between
38         chains and hard regs.  Don't terminate chains when we find a read we
39         can't handle, mark it unrenameable instead.  For terminate_write,
40         terminate chains that are written with an exact match or a superset
41         of registers.  Set fail_current_block if multi-word lifetimes are too
42         complex to handle.
43         (scan_rtx_address): Use mark_all_read instead of terminate_all_read.
44         (build_def_use): Initialize current_id, live_chains and live_hard_regs;
45         free memory for them when done.
46         Rearrange the steps so that earlyclobbers are noted before reads
47         are processed.  Add new steps to keep track of hard register lifetimes
48         outside insn operands.
49
50 2009-11-26  Richard Guenther  <rguenther@suse.de>
51
52         * tree-ssa-dce.c (nr_walks): New variable.
53         (mark_aliased_reaching_defs_necessary): Adjust oracle cut-off.
54         (perform_tree_ssa_dce): Init nr_walks.
55
56 2009-11-26  Michael Matz  <matz@suse.de>
57
58         PR tree-optimization/41905
59         * tree-eh.c (lower_eh_constructs_2): Don't add assignments
60         below statements that can't fall thru.
61
62 2009-11-26  Michael Matz  <matz@suse.de>
63
64         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
65         expand_builtin_sprintf): Remove.
66         (expand_builtin): Don't call them.
67
68 2009-11-26  Richard Guenther  <rguenther@suse.de>
69
70         * tree-ssa-dce.c (perform_tree_ssa_dce): Allocate visited bitmap.
71
72 2009-11-26  Nick Clifton  <nickc@redhat.com>
73
74         * config/rx/rx.c (rx_expand_epilogue): Add checks for sibcalls
75         being used incorrectly.
76         (rx_function_ok_for_sibcall): New function.  Do not allow indirect
77         sibcalls, or sibcalls from interrupt functions.
78         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
79         * config/rx/rx.md (sibcall): Convert to a define_expand.  Check
80         for a MEM inside a MEM.
81         (sibcall_value): Likewise.
82         (sibcall_internal): New pattern containing old sibcall pattern.
83         (sibcall_value_internal): Likewise.
84
85 2009-11-25  Richard Henderson  <rth@redhat.com>
86
87         * config/i386/i386-builtin-types.awk (DEF_VECTOR_TYPE): Allow an
88         optional 3rd argument to define the mode.
89         * config/i386/i386-builtin-types.def (UQI, UHI, USI, UDI): New.
90         (V2UDI, V4USI, V8UHI, V16UQI): New.
91         (V4SF_FTYPE_V4SF_V4SF_V4SI, V2UDI_FTYPE_V2UDI_V2UDI_V2UDI,
92         V4USI_FTYPE_V4USI_V4USI_V4USI, V8UHI_FTYPE_V8UHI_V8UHI_V8UHI,
93         V16UQI_FTYPE_V16UQI_V16UQI_V16UQI): New.
94         * config/i386/i386-modes.def: Rearrange for double-wide AVX.
95         * config/i386/i386-protos.h (ix86_expand_vec_extract_even_odd): New.
96         * config/i386/i386.c (IX86_BUILTIN_VEC_PERM_*): New.
97         (bdesc_args): Add the builtin definitions to match.
98         (ix86_expand_builtin): Expand them.
99         (ix86_builtin_vectorization_cost): Rename from
100         x86_builtin_vectorization_cost.
101         (ix86_vectorize_builtin_vec_perm, struct expand_vec_perm_d,
102         doublesize_vector_mode, expand_vselect, expand_vselect_vconcat,
103         expand_vec_perm_blend, expand_vec_perm_vpermil,
104         expand_vec_perm_pshufb, expand_vec_perm_1,
105         expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
106         expand_vec_perm_interleave2, expand_vec_perm_pshufb2,
107         expand_vec_perm_even_odd_1, expand_vec_perm_even_odd,
108         ix86_expand_vec_perm_builtin_1, extract_vec_perm_cst,
109         ix86_expand_vec_perm_builtin, ix86_vectorize_builtin_vec_perm_ok,
110         ix86_expand_vec_extract_even_odd, TARGET_VECTORIZE_BUILTIN_VEC_PERM,
111         TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
112         * sse.md (SSEMODE_EO): New.
113         (vec_extract_even<mode>): Use SSEMODE_EO and
114         ix86_expand_vec_extract_even_odd.
115         (vec_extract_odd<mode>): Likewise.
116         (mulv16qi3, vec_pack_trunc_v8hi, vec_pack_trunc_v4si,
117         vec_pack_trunc_v2di): Use ix86_expand_vec_extract_even_odd.
118
119 2009-11-25  Richard Henderson  <rth@redhat.com>
120
121         * target.h (targetm.vectorize.builtin_vec_perm_ok): New.
122         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
123         * hooks.h, hooks.c (hook_bool_tree_tree_true): New.
124         * tree-vect-slp.c (vect_create_mask_and_perm): Don't create
125         the vector constant here...
126         (vect_transform_slp_perm_load): ... do it here instead.  Validate
127         that the permutation vector is implementable by the target.
128
129 2009-11-25  Jakub Jelinek  <jakub@redhat.com>
130
131         * config/rs6000/sysv4.opt (mregnames): Change Var to rs6000_regnames.
132         * config/rs6000/sysv4.h (TARGET_REGNAMES): Define.
133
134         * print-rtl.c (print_rtx): When printing newline, append
135         print_rtx_head and indentation after the newline.
136
137         PR target/42165
138         * config/i386/i386.c (print_operand): For 32-byte memory use
139         YMMWORD in -masm=intel mode.  Use TBYTE instead of XWORD.
140         * config/i386/i386.md (crc32modesuffix): Expand to nothing
141         in -masm=intel mode.
142         (sse4_2_crc32di): Print just crc32 instead of crc32q in
143         -masm=intel mode.
144         * config/i386/mmx.md (*mmx_pinsrw): Print correct size of
145         memory operand in -masm=intel mode.
146         * config/i386/sse.md (*avx_pinsr<ssevecsize>, *sse4_1_pinsrb,
147         *sse2_pinsrw): Likewise.
148         (sse_cvtss2siq, sse_cvtss2siq_2, sse_cvttss2siq): Don't print
149         q suffix in -masm=intel mode.
150
151 2009-11-25  Eric Botcazou  <ebotcazou@adacore.com>
152
153         PR target/10127
154         PR ada/20548
155         PR middle-end/42004
156         * dwarf2out.c (dwarf2out_args_size_adjust): Rename to...
157         (dwarf2out_stack_adjust): ...this.  Do not adjust the arg size for
158         ACCUMULATE_OUTGOING_ARGS targets.  Rename former version to...
159         (dwarf2out_notice_stack_adjust): ...this.  Adjust for above renaming.
160         (dwarf2out_frame_debug_expr): Revert previous change and adjust for
161         above renaming.
162         (dwarf2out_frame_debug): Add ??? comment.  Adjust for above renaming.
163
164 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
165
166         * config/i386/predicates.md (emms_operation): New predicate.
167         (vzeroupper_operation): Ditto.
168         (vzeroall_operation): Improve pattern recognition.
169         * config/i386/sse.md (avx_vzeroupper_rex64): Remove insn pattern.
170         (avx_vzeroupper): Change insn pattern to expander.
171         (*avx_vzeroupper): New insn pattern.  Use vzeroupper_operation
172         predicate.
173         (*avx_vzeroall): Remove operands 1 and 2.
174         * config/i386/mmx.md (mmx_emms): Change insn pattern to expander.
175         (mmx_femms): Ditto.
176         (*mmx_emms): New insn pattern.  Use emms_operation predicate.
177         (*mmx_femms): Ditto.
178         * config/i386/i386.c (enum ix86_builtins)
179         <IX86_BUILTIN_VZEROUPPER_REX64>: Remove.
180         (struct builtin_description) <CODE_FOR_avx_vzeroupper_rex64>:
181         Remove initailization.
182         <CODE_FOR_avx_vzeroupper>: Unconditionally initialize here.
183         
184 2009-11-25  Paul Brook  <paul@codesourcery.com>
185
186         * config/arm/arm.md (consttable_4): Handle (high ...).
187
188 2009-11-25  Robert Nelson  <robert.nelson@digikey.com>
189             Richard Earnshaw  <rearnsha@arm.com>
190
191         * arm.h (enum vfp_reg_type): Add VFP_NONE.
192         * arm.c (all_fpus): Use it for floating point units that aren't based
193         on the VFP architecture.
194         (aapcs_vfp_is_call_or_return_candidate): Make base_mode a pointer to
195         enum machine_mode.
196
197 2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
198
199         * alias.c: Remove trailing white spaces.
200         * alloc-pool.c: Likewise.
201         * alloc-pool.h: Likewise.
202         * attribs.c: Likewise.
203         * auto-inc-dec.c: Likewise.
204         * basic-block.h: Likewise.
205         * bb-reorder.c: Likewise.
206         * bt-load.c: Likewise.
207         * builtins.c: Likewise.
208         * builtins.def: Likewise.
209         * c-common.c: Likewise.
210         * c-common.h: Likewise.
211         * c-cppbuiltin.c: Likewise.
212         * c-decl.c: Likewise.
213         * c-format.c: Likewise.
214         * c-lex.c: Likewise.
215         * c-omp.c: Likewise.
216         * c-opts.c: Likewise.
217         * c-parser.c: Likewise.
218         * c-pretty-print.c: Likewise.
219         * c-tree.h: Likewise.
220         * c-typeck.c: Likewise.
221         * caller-save.c: Likewise.
222         * calls.c: Likewise.
223         * cfg.c: Likewise.
224         * cfganal.c: Likewise.
225         * cfgexpand.c: Likewise.
226         * cfghooks.c: Likewise.
227         * cfghooks.h: Likewise.
228         * cfglayout.c: Likewise.
229         * cfgloop.c: Likewise.
230         * cfgloop.h: Likewise.
231         * cfgloopmanip.c: Likewise.
232         * cfgrtl.c: Likewise.
233         * cgraph.c: Likewise.
234         * cgraph.h: Likewise.
235         * cgraphbuild.c: Likewise.
236         * cgraphunit.c: Likewise.
237         * cif-code.def: Likewise.
238         * collect2.c: Likewise.
239         * combine.c: Likewise.
240         * convert.c: Likewise.
241         * coverage.c: Likewise.
242         * crtstuff.c: Likewise.
243         * cse.c: Likewise.
244         * cselib.c: Likewise.
245         * dbgcnt.c: Likewise.
246         * dbgcnt.def: Likewise.
247         * dbgcnt.h: Likewise.
248         * dbxout.c: Likewise.
249         * dce.c: Likewise.
250         * ddg.c: Likewise.
251         * ddg.h: Likewise.
252         * defaults.h: Likewise.
253         * df-byte-scan.c: Likewise.
254         * df-core.c: Likewise.
255         * df-problems.c: Likewise.
256         * df-scan.c: Likewise.
257         * df.h: Likewise.
258         * dfp.c: Likewise.
259         * diagnostic.c: Likewise.
260         * diagnostic.h: Likewise.
261         * dominance.c: Likewise.
262         * domwalk.c: Likewise.
263         * double-int.c: Likewise.
264         * double-int.h: Likewise.
265         * dse.c: Likewise.
266         * dwarf2asm.c: Likewise.
267         * dwarf2asm.h: Likewise.
268         * dwarf2out.c: Likewise.
269         * ebitmap.c: Likewise.
270         * ebitmap.h: Likewise.
271         * emit-rtl.c: Likewise.
272         * et-forest.c: Likewise.
273         * except.c: Likewise.
274         * except.h: Likewise.
275         * expmed.c: Likewise.
276         * expr.c: Likewise.
277         * expr.h: Likewise.
278         * final.c: Likewise.
279         * flags.h: Likewise.
280         * fold-const.c: Likewise.
281         * function.c: Likewise.
282         * function.h: Likewise.
283         * fwprop.c: Likewise.
284         * gcc.c: Likewise.
285         * gcov-dump.c: Likewise.
286         * gcov-io.c: Likewise.
287         * gcov-io.h: Likewise.
288         * gcov.c: Likewise.
289         * gcse.c: Likewise.
290         * genattr.c: Likewise.
291         * genattrtab.c: Likewise.
292         * genautomata.c: Likewise.
293         * genchecksum.c: Likewise.
294         * genconfig.c: Likewise.
295         * genflags.c: Likewise.
296         * gengtype-parse.c: Likewise.
297         * gengtype.c: Likewise.
298         * gengtype.h: Likewise.
299         * genmddeps.c: Likewise.
300         * genmodes.c: Likewise.
301         * genopinit.c: Likewise.
302         * genpreds.c: Likewise.
303         * gensupport.c: Likewise.
304         * ggc-common.c: Likewise.
305         * ggc-page.c: Likewise.
306         * ggc-zone.c: Likewise.
307         * ggc.h: Likewise.
308         * gimple-iterator.c: Likewise.
309         * gimple-low.c: Likewise.
310         * gimple-pretty-print.c: Likewise.
311         * gimple.c: Likewise.
312         * gimple.def: Likewise.
313         * gimple.h: Likewise.
314         * gimplify.c: Likewise.
315         * graphds.c: Likewise.
316         * graphite-clast-to-gimple.c: Likewise.
317         * gthr-nks.h: Likewise.
318         * gthr-posix.c: Likewise.
319         * gthr-posix.h: Likewise.
320         * gthr-posix95.h: Likewise.
321         * gthr-single.h: Likewise.
322         * gthr-tpf.h: Likewise.
323         * gthr-vxworks.h: Likewise.
324         * gthr.h: Likewise.
325         * haifa-sched.c: Likewise.
326         * hard-reg-set.h: Likewise.
327         * hooks.c: Likewise.
328         * hooks.h: Likewise.
329         * hosthooks.h: Likewise.
330         * hwint.h: Likewise.
331         * ifcvt.c: Likewise.
332         * incpath.c: Likewise.
333         * init-regs.c: Likewise.
334         * integrate.c: Likewise.
335         * ipa-cp.c: Likewise.
336         * ipa-inline.c: Likewise.
337         * ipa-prop.c: Likewise.
338         * ipa-pure-const.c: Likewise.
339         * ipa-reference.c: Likewise.
340         * ipa-struct-reorg.c: Likewise.
341         * ipa-struct-reorg.h: Likewise.
342         * ipa-type-escape.c: Likewise.
343         * ipa-type-escape.h: Likewise.
344         * ipa-utils.c: Likewise.
345         * ipa-utils.h: Likewise.
346         * ipa.c: Likewise.
347         * ira-build.c: Likewise.
348         * ira-color.c: Likewise.
349         * ira-conflicts.c: Likewise.
350         * ira-costs.c: Likewise.
351         * ira-emit.c: Likewise.
352         * ira-int.h: Likewise.
353         * ira-lives.c: Likewise.
354         * ira.c: Likewise.
355         * jump.c: Likewise.
356         * lambda-code.c: Likewise.
357         * lambda-mat.c: Likewise.
358         * lambda-trans.c: Likewise.
359         * lambda.h: Likewise.
360         * langhooks.c: Likewise.
361         * lcm.c: Likewise.
362         * libgcov.c: Likewise.
363         * lists.c: Likewise.
364         * loop-doloop.c: Likewise.
365         * loop-init.c: Likewise.
366         * loop-invariant.c: Likewise.
367         * loop-iv.c: Likewise.
368         * loop-unroll.c: Likewise.
369         * lower-subreg.c: Likewise.
370         * lto-cgraph.c: Likewise.
371         * lto-compress.c: Likewise.
372         * lto-opts.c: Likewise.
373         * lto-section-in.c: Likewise.
374         * lto-section-out.c: Likewise.
375         * lto-streamer-in.c: Likewise.
376         * lto-streamer-out.c: Likewise.
377         * lto-streamer.c: Likewise.
378         * lto-streamer.h: Likewise.
379         * lto-symtab.c: Likewise.
380         * lto-wpa-fixup.c: Likewise.
381         * matrix-reorg.c: Likewise.
382         * mcf.c: Likewise.
383         * mode-switching.c: Likewise.
384         * modulo-sched.c: Likewise.
385         * omega.c: Likewise.
386         * omega.h: Likewise.
387         * omp-low.c: Likewise.
388         * optabs.c: Likewise.
389         * optabs.h: Likewise.
390         * opts-common.c: Likewise.
391         * opts.c: Likewise.
392         * params.def: Likewise.
393         * params.h: Likewise.
394         * passes.c: Likewise.
395         * plugin.c: Likewise.
396         * postreload-gcse.c: Likewise.
397         * postreload.c: Likewise.
398         * predict.c: Likewise.
399         * predict.def: Likewise.
400         * pretty-print.c: Likewise.
401         * pretty-print.h: Likewise.
402         * print-rtl.c: Likewise.
403         * print-tree.c: Likewise.
404         * profile.c: Likewise.
405         * read-rtl.c: Likewise.
406         * real.c: Likewise.
407         * recog.c: Likewise.
408         * reg-stack.c: Likewise.
409         * regcprop.c: Likewise.
410         * reginfo.c: Likewise.
411         * regmove.c: Likewise.
412         * regrename.c: Likewise.
413         * regs.h: Likewise.
414         * regstat.c: Likewise.
415         * reload.c: Likewise.
416         * reload1.c: Likewise.
417         * resource.c: Likewise.
418         * rtl.c: Likewise.
419         * rtl.def: Likewise.
420         * rtl.h: Likewise.
421         * rtlanal.c: Likewise.
422         * sbitmap.c: Likewise.
423         * sched-deps.c: Likewise.
424         * sched-ebb.c: Likewise.
425         * sched-int.h: Likewise.
426         * sched-rgn.c: Likewise.
427         * sched-vis.c: Likewise.
428         * sdbout.c: Likewise.
429         * sel-sched-dump.c: Likewise.
430         * sel-sched-dump.h: Likewise.
431         * sel-sched-ir.c: Likewise.
432         * sel-sched-ir.h: Likewise.
433         * sel-sched.c: Likewise.
434         * sel-sched.h: Likewise.
435         * sese.c: Likewise.
436         * sese.h: Likewise.
437         * simplify-rtx.c: Likewise.
438         * stack-ptr-mod.c: Likewise.
439         * stmt.c: Likewise.
440         * stor-layout.c: Likewise.
441         * store-motion.c: Likewise.
442         * stringpool.c: Likewise.
443         * stub-objc.c: Likewise.
444         * sync-builtins.def: Likewise.
445         * target-def.h: Likewise.
446         * target.h: Likewise.
447         * targhooks.c: Likewise.
448         * targhooks.h: Likewise.
449         * timevar.c: Likewise.
450         * tlink.c: Likewise.
451         * toplev.c: Likewise.
452         * toplev.h: Likewise.
453         * tracer.c: Likewise.
454         * tree-affine.c: Likewise.
455         * tree-affine.h: Likewise.
456         * tree-browser.def: Likewise.
457         * tree-call-cdce.c: Likewise.
458         * tree-cfg.c: Likewise.
459         * tree-cfgcleanup.c: Likewise.
460         * tree-chrec.c: Likewise.
461         * tree-chrec.h: Likewise.
462         * tree-complex.c: Likewise.
463         * tree-data-ref.c: Likewise.
464         * tree-data-ref.h: Likewise.
465         * tree-dfa.c: Likewise.
466         * tree-dump.c: Likewise.
467         * tree-dump.h: Likewise.
468         * tree-eh.c: Likewise.
469         * tree-flow-inline.h: Likewise.
470         * tree-flow.h: Likewise.
471         * tree-if-conv.c: Likewise.
472         * tree-inline.c: Likewise.
473         * tree-into-ssa.c: Likewise.
474         * tree-loop-distribution.c: Likewise.
475         * tree-loop-linear.c: Likewise.
476         * tree-mudflap.c: Likewise.
477         * tree-nested.c: Likewise.
478         * tree-nomudflap.c: Likewise.
479         * tree-nrv.c: Likewise.
480         * tree-object-size.c: Likewise.
481         * tree-optimize.c: Likewise.
482         * tree-outof-ssa.c: Likewise.
483         * tree-parloops.c: Likewise.
484         * tree-pass.h: Likewise.
485         * tree-phinodes.c: Likewise.
486         * tree-predcom.c: Likewise.
487         * tree-pretty-print.c: Likewise.
488         * tree-profile.c: Likewise.
489         * tree-scalar-evolution.c: Likewise.
490         * tree-ssa-address.c: Likewise.
491         * tree-ssa-alias.c: Likewise.
492         * tree-ssa-ccp.c: Likewise.
493         * tree-ssa-coalesce.c: Likewise.
494         * tree-ssa-copy.c: Likewise.
495         * tree-ssa-copyrename.c: Likewise.
496         * tree-ssa-dce.c: Likewise.
497         * tree-ssa-dom.c: Likewise.
498         * tree-ssa-dse.c: Likewise.
499         * tree-ssa-forwprop.c: Likewise.
500         * tree-ssa-ifcombine.c: Likewise.
501         * tree-ssa-live.c: Likewise.
502         * tree-ssa-live.h: Likewise.
503         * tree-ssa-loop-ch.c: Likewise.
504         * tree-ssa-loop-im.c: Likewise.
505         * tree-ssa-loop-ivcanon.c: Likewise.
506         * tree-ssa-loop-ivopts.c: Likewise.
507         * tree-ssa-loop-manip.c: Likewise.
508         * tree-ssa-loop-niter.c: Likewise.
509         * tree-ssa-loop-prefetch.c: Likewise.
510         * tree-ssa-loop-unswitch.c: Likewise.
511         * tree-ssa-loop.c: Likewise.
512         * tree-ssa-math-opts.c: Likewise.
513         * tree-ssa-operands.c: Likewise.
514         * tree-ssa-operands.h: Likewise.
515         * tree-ssa-phiopt.c: Likewise.
516         * tree-ssa-phiprop.c: Likewise.
517         * tree-ssa-pre.c: Likewise.
518         * tree-ssa-propagate.c: Likewise.
519         * tree-ssa-reassoc.c: Likewise.
520         * tree-ssa-sccvn.c: Likewise.
521         * tree-ssa-sink.c: Likewise.
522         * tree-ssa-structalias.c: Likewise.
523         * tree-ssa-ter.c: Likewise.
524         * tree-ssa-threadedge.c: Likewise.
525         * tree-ssa-threadupdate.c: Likewise.
526         * tree-ssa-uncprop.c: Likewise.
527         * tree-ssa.c: Likewise.
528         * tree-ssanames.c: Likewise.
529         * tree-switch-conversion.c: Likewise.
530         * tree-tailcall.c: Likewise.
531         * tree-vect-data-refs.c: Likewise.
532         * tree-vect-generic.c: Likewise.
533         * tree-vect-loop-manip.c: Likewise.
534         * tree-vect-loop.c: Likewise.
535         * tree-vect-patterns.c: Likewise.
536         * tree-vect-slp.c: Likewise.
537         * tree-vect-stmts.c: Likewise.
538         * tree-vectorizer.c: Likewise.
539         * tree-vectorizer.h: Likewise.
540         * tree-vrp.c: Likewise.
541         * tree.c: Likewise.
542         * tree.def: Likewise.
543         * tree.h: Likewise.
544         * treestruct.def: Likewise.
545         * unwind-compat.c: Likewise.
546         * unwind-dw2-fde-glibc.c: Likewise.
547         * unwind-dw2.c: Likewise.
548         * value-prof.c: Likewise.
549         * value-prof.h: Likewise.
550         * var-tracking.c: Likewise.
551         * varasm.c: Likewise.
552         * varpool.c: Likewise.
553         * vec.c: Likewise.
554         * vec.h: Likewise.
555         * vmsdbgout.c: Likewise.
556         * web.c: Likewise.
557         * xcoffout.c: Likewise.
558
559 2009-11-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
560
561         * pa.c (output_call): Only use sr4 for long interspace calls if
562         call binds local and generating non PIC code.
563         (attr_length_call): Adjust length calculation for above.
564
565 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
566
567         * config/i386/i386.md (plusminus_carry_mnemonic): New code attribute.
568         (add<mode>3_carry): Change operand order of plus RTX.
569         (*add<mode>3_carry): Ditto.
570         (*addsi3_carry_zext): Ditto.
571         (*add<dwi>3_doubleword): Update for changed operand order.
572         (*negti2_1 splitter): Ditto.
573         (*negdi2_1 splitter): Ditto.
574         (<plusminus_insn><mode>3_carry): Macroize expander from
575         {add,sub}<mode>3_carry patterns using plusminus code iterator.
576         (*<plusminus_insn><mode>3_carry): Macroize insn from
577         *{add,sub}<mode>3_carry patetrns using plusminus code iterator.
578         (neg<mode>2): Macroize expander from neg{qi,hi,si,di,ti}2
579         patterns using SDWIM mode iterator.
580         (*neg<dwi>2_doubleword): New insn_and_split pattern.  Macroize
581         pattern from *neg{di,ti}2_1 patterns and corresponding splitters
582         using DWIH mode iterator.
583         (*neg<mode>2_1): Macroize insn from neg{qi,hi,si,di}2_1 patterns
584         using SWI mode iterator.
585         (*neg<mode>2_cmpz): Ditto from neg{qi,hi,si,di}2_cmpz patterns.
586         (one_cmpl<mode>2): Macroize expander from one_cmpl{qi,hi,si,di}2
587         patterns using SWIM mode iterator.
588         (*one_cmpl<mode>2_1): Macroize insn from one_cmpl{hi,si,di}2_1
589         patterns using SWI248 mode iterator.
590         (*one_cmpl<mode>2_2): Macroize insn from one_cmpl{qi,hi,si,di}2_2
591         patterns using SWI mode iterator.
592         (*one_cmpl<mode>2_2 splitter): Macroize splitter from
593         one_cmpl{qi,hi,si,di}2_2 splitter patterns using SWI mode iterator.
594
595 2009-11-24  Michael Matz  <matz@suse.de>
596
597         * expr.c (set_storage_via_libcall): Fix build_call_expr call.
598
599 2009-11-24  David Binderman  <dcb314@hotmail.com>
600
601         * expr.c (store_field): Remove set but not used local variable
602         width_mask.
603         (expand_expr_real_2): Remove treeop2.
604         * gcse.c (update_ld_motion_stores): Remove new_rtx.
605         * haifa-sched.c (max_issue): Remove points.
606         (sched_create_recovery_edges): Remove e.
607         * ira-costs.c (setup_allocno_cover_class_and_costs): Remove mode.
608
609 2009-11-24  Nick Clifton  <nickc@redhat.com>
610
611         * config/v850/v850.c (function_arg): Fix handling of zero-length
612         function arguments.
613
614 2009-11-24  Michael Matz  <matz@suse.de>
615
616         * tree.h (union tree_ann_d): Don't declare.
617         (tree_base): Remove ann field.
618         (struct var_ann_d): Declare forward.
619         (tree_result_decl, tree_parm_decl, tree_var_decl): Add ann field.
620         (DECL_VAR_ANN_PTR): New macro.
621         * tree-dfa.c (create_var_ann): Rewrite in terms of above macro,
622         accept only VAR, PARM or RESULT decls.
623         (create_tree_common_ann): Remove.
624         (remove_referenced_var): Use DECL_VAR_ANN_PTR.
625         * tree-eh.c (lookup_expr_eh_lp): Remove.
626         * tree-flow-inline.h (var_ann, get_var_ann): Rewrite in terms of
627         DECL_VAR_ANN_PTR.
628         (ann_type, tree_common_ann, get_tree_common_ann): Remove.
629         * tree-flow.h (enum tree_ann_type): Remove.
630         (struct tree_ann_common_d): Remove.
631         (struct var_ann_d): Remove common field.
632         (union tree_ann_d): Remove.
633         (tree_ann_t, tree_ann_common_t): Remove typedefs.
634         (tree_common_ann, get_tree_common_ann, ann_type,
635         create_tree_common_ann, lookup_expr_eh_lp): Don't declare.
636         * tree-ssa.c (delete_tree_ssa): Use DECL_VAR_ANN_PTR.
637         * tree.c (copy_node_stat): Use DECL_VAR_ANN_PTR.
638         * builtins.c (expand_builtin_memcpy): Use
639         currently_expanding_gimple_stmt instead of tree annotation.
640         (expand_builtin_memset_args): Ditto.
641         * cfgexpand.c (currently_expanding_gimple_stmt): Add global variable.
642         (expand_call_stmt): Don't set tree annotation.
643         (expand_gimple_basic_block): Set currently_expanding_gimple_stmt.
644         * expr.c (expand_expr_real): Don't call lookup_expr_eh_lp.
645         * gimple.h (currently_expanding_gimple_stmt): Declare.
646
647 2009-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
648
649         * dwarf2out.c (add_location_or_const_value_attribute): Remove
650         useless NOTE_VAR_LOCATION_STATUS call.
651         * cfgrtl.c (commit_one_edge_insertion): Remove useless loop, tidy.
652
653 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
654
655         * lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
656         being called recursively.
657
658 2009-11-24  Basile Starynkevitch  <basile@starynkevitch.net>
659
660         * Makefile.in (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
661         $(MD5_H) params.def params.h prefix.h tree-inline.h.
662
663 2009-11-24  Paul Brook  <paul@codesourcery.com>
664
665         * gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment
666         typo.
667
668 2009-11-24  Julian Brown  <julian@codesourcery.com>
669             Paul Brook  <paul@codesourcery.com>
670
671         * config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
672         (arm_dwarf_register_span): New function.
673         (arm_dbx_register_number): Add VFPv3 dwarf numbering.
674
675 2009-11-24  David Binderman  <dcb314@hotmail.com>
676
677         * cfgrtl.c (commit_one_edge_insertion): Remove set but not used
678         local variable bb_note.
679         * dominance.c (get_dominated_by): Likewise local var n.
680         (output_file_names): Likewise local var idx.
681         (add_location_or_const_value_attribute): Likewise local var status.
682         * dwarf2out.c (gen_variable_die): Likewise local var field.
683         * emit-rtl.c (no_line_numbers): Remove.
684         (init_emit_once): Remove line_numbers parameter.
685         * rtl.h (init_emit_once): Adjust prototype.
686         * toplev.c (backend_init): Adjust init_emit_once call.
687
688 2009-11-24  Richard Guenther  <rguenther@suse.de>
689
690         PR tree-optimization/42142
691         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
692         Handle iv-dependent (non-)kills properly.
693         (mark_aliased_reaching_defs_necessary): Pass the basic-block
694         of the reference statement to mark_aliased_reaching_defs_necessary_1.
695
696 2009-11-24  Martin Jambor  <mjambor@suse.cz>
697
698         PR tree-optimization/42154
699         * tree-sra.c (struct access): Added comments.
700         (sra_modify_expr): Build references to the old aggregate with
701         build_ref_for_offset instead of reusing access->expr.
702         (load_assign_lhs_subreplacements): Likewise.
703
704 2009-11-24  Uros Bizjak  <ubizjak@gmail.com>
705
706         * config/i386/i386.md (add<mode>3_carry): Change insn pattern
707         to expander.
708         (sub<mode>3_carry): Ditto.
709         (x86_mov<mode>cc_0_m1): Ditto.
710         (*add<mode>3_carry): New insn pattern.  Use VOIDmode match_operator
711         for ix86_carry_flag_operator operator predicate.
712         (*sub<mode>3_carry): Ditto.
713         (*x86_mov<mode>cc_0_m1): Ditto.
714         (*addsi3_carry_zext): Use VOIDmode match_operator for
715         ix86_carry_flag_operator operator predicate.
716         (*subsi3_carry_zext): Ditto.
717         (*x86_mov<mode>cc_0_m1_s): Ditto.
718         (*x86_mov<mode>cc_0_m1_neg): Ditto.
719         * config/i386/predocates.md (ix86_carry_flag_operator): Do not
720         check operator sub-expressions for FLAGS_REG and const0_rtx.
721         * config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
722         (ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
723         (ix86_expand_int_addcc): Update calls to
724         gen_{add,sub}{qi,hi,si,di}3_carry.  Do not set mode of compare_op.
725         (ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
726         Do not set mode of compare operation.
727
728 2009-11-23  Jan Hubicka  <jh@suse.cz>
729
730         PR middle-end/42151
731         * ipa-inline.c (inline_transform): Avoid ICE when transform is called
732         twice.
733
734 2009-11-23  Jan Hubicka  <jh@suse.cz>
735
736         * ipa-cp.c (ipcp_compute_node_scale): Work around completely
737         wrong profile updates.
738         * predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
739         having largest frequency.
740         * ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
741         used uninitalized warning.
742         * tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block
743         frequencies.
744
745 2009-11-23  Uros Bizjak  <ubizjak@gmail.com>
746
747         * config/alpha/alpha.md (*cmp_sadd_sidi): Use gen_lowpart instead
748         of gen_rtx_REG to generate operand 5.
749         (*cmp_ssub_sidi): Ditto.
750
751 2009-11-23  Richard Henderson  <rth@redhat.com>
752
753         * config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare
754         mismatch.
755
756 2009-11-23  Paul Brook  <paul@codesourcery.com>
757
758         * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
759         case for noreturn functions.
760         (arm_compute_save_reg_mask): Remove special noreturn handling.
761
762 2009-11-23  Richard Guenther  <rguenther@suse.de>
763
764         * tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
765         size for DECL bases.
766
767 2009-11-22  Richard Henderson  <rth@redhat.com>
768
769         * i386.c (avx_vpermilp_parallel): New function.
770         * i386-protos.h: Declare it.
771         * predicates.md (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
772         avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
773         * sse.md (AVXMODEFDP, AVXMODEFSP): New iterators.
774         (ssescalarnum, ssedoublesizemode): Add AVX modes.
775         (vpermilbits): Remove.
776         (avx_vpermil<mode>): Change insns to expanders.
777         (*avx_vpermil<mode>): New.  Use vec_select.
778
779 2009-11-22  Richard Earnshaw  <rearnsha@arm.com>
780
781         * opts.c (decode_options): Don't enable flag_schedule_insns
782         when optimizing for size.
783         * doc/invoke.texi: Document change.
784
785 2009-11-22  Uros Bizjak  <ubizjak@gmail.com>
786
787         PR target/42113
788         * config/alpha/alpha.md (*cmp_sadd_si): Change mode
789         of scratch register to SImode.
790         (*cmp_sadd_sidi): Ditto.
791         (*cmp_ssub_si): Ditto.
792         (*cmp_ssub_sidi): Ditto.
793
794 2009-11-21  Ian Lance Taylor  <iant@google.com>
795
796         * Makefile.in (HOST_LIBS): Move higher in file.
797         (LINKER, LINKER_FLAGS): If ENABLE_BUILD_WITH_CXX, but $(HOST_LIBS)
798         is not empty, set to $(CC) and $(CFLAGS).
799
800 2009-11-22  Martin Jambor  <mjambor@suse.cz>
801
802         * tree-cfg.c (verify_types_in_gimple_reference): Error out on
803         V_C_E of an SSA_NAME or an invariant if lvalue is required.
804         (verify_gimple_call): Verify LHS also with with
805         verify_types_in_gimple_reference.
806
807 2009-11-21  Martin Jambor  <mjambor@suse.cz>
808
809         PR middle-end/42025
810         * tree-sra.c (access_precludes_ipa_sra_p): New function.
811         (splice_param_accesses): Check all accesses by calling
812         access_precludes_ipa_sra_p.
813         (sra_ipa_modify_expr): Rename argument erite to dont_convert and do
814         not convert types if it is true.
815         (sra_ipa_modify_assign): Convert types in case of mismatch.
816
817 2009-11-21  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>
818
819         * config/sh/sh.md (cmpeqsi_t-1): Use logical_operand predicate
820         for operand 1.
821
822 2009-11-21  Adam Nemet  <adambnemet@gmail.com>
823
824         * config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
825         (mips_mulsidi3_gen_fn): Declare new function.
826         * config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
827         * config/mips/mips.md (<u>mulsidi3): Change condition to use
828         mips_mulsidi3_gen_fn.  Use mips_mulsidi3_gen_fn to generate the insn.
829         (<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
830         (mulsidi3_64bit_dmul): New define_insn.
831
832 2009-11-21  Ben Elliston  <bje@au.ibm.com>
833
834         * gengtype-lex.l: Enable noinput flex option.
835         (YY_NO_INPUT): Remove define.
836
837 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
838
839         * tree-ssa.c (find_released_ssa_name): Handle NULL wi.
840         (insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
841         (insert_debug_temps_for_defs): Handle PHI nodes.
842         * tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
843         SSA names.
844
845 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
846
847         * tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
848         after remove_phi_node.
849
850 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
851
852         PR tree-optimization/42078
853         * gimple.h (gimple_replace_lhs): New declaration.
854         * gimple.c (gimple_replace_lhs): New function.
855         * tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
856         modifying the call.
857
858 2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
859
860         * config/i386/sse.md (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
861         (xop_mulv2div2di3_low): Same.
862         (*xop_pmacsdqh_mem): Same.
863
864 2009-11-20  Richard Henderson  <rth@redhat.com>
865
866         * config/i386/i386-builtin-types.awk: New file.
867         * config/i386/i386-builtin-types.def: New file.
868         * config/i386/t-i386: Use them to build i386-builtin-types.inc.
869         * config/i386/i386.c: Include it.
870         (ix86_builtin_type_tab, ix86_get_builtin_type): New.
871         (ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
872         (struct builtin_isa): Remove GTY marker.  Replace tree type with
873         ix86_builtin_func_type; add set_and_not_built_p.
874         (def_builtin): Change type parameter to tcode; use
875         ix86_get_builtin_func_type; update all callers.  Accept zero mask
876         to mean the builtin is unconditionally available.
877         (ix86_add_new_builtins): Use set_and_not_built_p instead of type
878         being set to NULL.
879         (enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
880         Update some users to rationalized enumeration codes from new include.
881         (enum multi_arg_type): Remove.  Replace all enumeration values
882         with defines to new ix86_builtin_func_type.
883         (ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
884         all type resolution to def_builtin.
885         (ix86_init_builtin_types): Split out from ...
886         (ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.
887
888 2009-11-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
889
890         PR target/41787
891         * config/rs6000/rs6000.c (struct machine_function): Revert
892         2009-10-23 change to set VRSAVE to non-0 if we use VSX.
893         (rs6000_expand_to_rtl_hook): Ditto.
894         (rs6000_check_vector_mode): Ditto.
895         (compute_vrsave_mask): Ditto.
896
897 2009-11-20  Paul Brook  <paul@codesourcery.com>
898
899         * doc/invoke.texi: Document ARM -mcpu=cortex-a5.
900         * config/arm/arm-cores.def: Add cortex-a5.
901         * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
902         * config/arm/arm-tune.md: Regenerate.
903
904 2009-11-20 Olga Golovanevsky <olga@il.ibm.com>
905
906         PR middle-end/39960
907         * ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
908         (ref_pos): New field in structure.
909         (insert_new_var_in_stmt): New function.
910
911
912 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
913
914         * config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
915         * config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
916         (INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE): Define.
917         (UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
918         (INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
919         INT_LEAST64_TYPE): Define.
920         (UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
921         UINT_LEAST64_TYPE): Define.
922         (INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
923         INT_FAST64_TYPE): Define.
924         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
925         UINT_FAST64_TYPE): Define.
926         (INTPTR_TYPE, UINTPTR_TYPE): Define.
927
928 2009-11-20  Julian Brown  <julian@codesourcery.com>
929
930         * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
931         specially for Thumb-1.
932         (ASM_OUTPUT_REG_POP): Likewise.
933
934 2009-11-19  Jason Merrill  <jason@redhat.com>
935
936         * dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
937
938 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
939             Rafael Avila de Espindola  <espindola@google.com>
940
941         * doc/plugins.texi (Plugin initialization): Added advices for
942         retrieving the version of GCC at plugin compilation and loading times.
943
944 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
945
946         * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
947         (dump_active_plugins): output to file everything. Use
948         internationalized dump & FMT_FOR_PLUGIN_EVENT.
949
950 2009-11-19  Richard Guenther  <rguenther@suse.de>
951
952         * gimple.c (canonicalize_cond_expr_cond): Strip conversions
953         around truth-valued expressions.
954         * tree.c (free_lang_data): Untangle check for LTO frontend.
955
956 2009-11-19  Jakub Jelinek  <jakub@redhat.com>
957
958         * tree.c (need_assembler_name_p): Use cgraph_get_node instead
959         of cgraph_node_for_decl.
960         * cgraph.h (cgraph_node_for_decl): Remove prototype.
961         * cgraph.c (cgraph_node_for_decl): Remove.
962         (cgraph_get_node): Just return NULL if !cgraph_hash.
963
964 2009-11-19  Paul Brook  <paul@codesourcery.com>
965
966         * config.gcc: Add new ARM --with-fpu options.
967         * doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
968         * config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
969
970 2009-11-18  Richard Guenther  <rguenther@suse.de>
971
972         * gimple.h (union gimple_statement_d): Add gsmembase member.
973         (gimple_vuse_op): Use gsmembase for access.
974         (gimple_vdef_op): Likewise.
975         (gimple_vuse): Likewise.
976         (gimple_vdef): Likewise.
977         (gimple_vuse_ptr): Likewise.
978         (gimple_vdef_ptr): Likewise.
979         (gimple_set_vuse): Likewise.
980         (gimple_set_vdef): Likewise.
981         * gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
982
983 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
984
985         * doc/arm-neon-intrinsics.texi: Regenerated.
986
987 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
988
989         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle alternatives.
990
991 2009-11-18  Paul Brook  <paul@codesourcery.com>
992             Daniel Jacobowitz  <dan@codesourcery.com>
993
994         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
995         (arm_arch7em): New variable.
996         (all_architectures): Add armv7e-m.
997         (arm_override_options): Set arm_arch7em.
998         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
999         Include arm_arch7em.
1000         (arm_arch7em): Declare.
1001
1002 2009-11-18  Richard Guenther  <rguenther@suse.de>
1003
1004         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
1005         a valid field decl if checking is enabled.
1006
1007 2009-11-18  Martin Jambor  <mjambor@suse.cz>
1008
1009         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
1010         (lto_ipa_fixup_call_notes): Declare.
1011         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
1012         (update_call_notes_after_inlining): Copy call stmt uid to the new
1013         edge.
1014         (ipa_write_param_call_note): New function.
1015         (ipa_read_param_call_note): New function
1016         (ipa_write_node_info): Write also param call notes.  Removed a bogus
1017         comment, reformatted to fit 80 columns.
1018         (ipa_read_node_info): Read also param call notes. Removed a bogus
1019         comment.  Remove ipa_edge_args_vector growth.
1020         (lto_ipa_fixup_call_notes): New function.
1021         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
1022         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
1023         inlining regardless of flag_wpa.
1024         (cgraph_decide_inlining_of_small_functions): Likewise.
1025         (cgraph_decide_inlining): Likewise.
1026         (inline_read_summary): Likewise.
1027
1028 2009-11-18  Jan Hubicka  <jh@suse.cz>
1029
1030         * predict.c (compute_function_frequency): Export.
1031         * predict.h (compute_function_frequency): Declare.
1032         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
1033
1034 2009-11-18  Martin Jambor  <mjambor@suse.cz>
1035
1036         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
1037         on all nodes we write summaries for.
1038
1039 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
1040
1041         PR middle-end/22201
1042         * params.def (PARAM_INLINE_UNIT_GROWTH, PARAM_IPCP_UNIT_GROWTH)
1043         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
1044         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
1045         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
1046         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
1047         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
1048         (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
1049         description string.
1050
1051 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
1052
1053         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
1054         unnecessarily.
1055         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
1056
1057         PR c++/3187
1058         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
1059         fields.
1060         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
1061         prototypes.
1062         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
1063         cgraph_materialize_all_clones): Handle same_body aliases.
1064         * cgraph.c (cgraph_allocate_node): New function.
1065         (cgraph_create_node): Use it.
1066         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
1067         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
1068         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
1069         functions.
1070         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
1071         (input_node): Stream in same_body aliases.
1072         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
1073         for same_body aliases.
1074         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
1075
1076 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
1077
1078         PR other/39888
1079         * config/darwin.h: Use the extension stub libraries to access
1080         current libgcc_s features.
1081
1082 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1083
1084         PR debug/41926
1085         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
1086         (vect_transform_loop): Call it.
1087
1088 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1089
1090         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
1091         released SSA names.
1092
1093 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1094
1095         PR debug/41888
1096         PR debug/41886
1097         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
1098         are ok.
1099         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
1100         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
1101         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
1102         (sese_bad_liveouts_use): New.
1103         (sese_reset_debug_liveouts_bb): New.
1104         (sese_build_liveouts): Use it.
1105         (rename_variables_in_stmt): Reset debug stmts rather than creating
1106         new vars for them.
1107         (expand_scalar_variable_stmt): Likewise.
1108
1109 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1110
1111         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
1112         (df_ref_remove): Likewise.
1113
1114 2009-11-17  Jan Hubicka  <jh@suse.cz>
1115
1116         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
1117         info.
1118
1119 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
1120
1121         * toplev.c (process_options): Remove dead code.
1122         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
1123
1124 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
1125
1126         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
1127         nodes.
1128
1129 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1130
1131         PR tree-optimization/41857
1132         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
1133         TYPE's address space instead of pointer to TYPE.
1134
1135 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1136
1137         * reload.c (find_reloads_address): Fix typo.
1138
1139 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1140
1141         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
1142         registers in leaf functions if possible.
1143
1144 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
1145
1146         * config/m68k/m68k-devices.def: Add MCF5441x family.
1147
1148 2009-11-17  Jan Hubicka  <jh@suse.cz>
1149
1150         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
1151         removed node.
1152         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
1153
1154 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
1155
1156         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
1157         nest ior expressions.
1158         (x86_64_szext_nonmemory_operand): Ditto.
1159         (call_insn_operand): Ditto.
1160
1161 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
1162
1163         * stmt.c (expand_asm_stmt): Get locus from stmt.
1164
1165 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
1166
1167         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
1168         Create the decl label for the new dest block on demand.  Require
1169         a fallthrough edge if no asm labels were redirected.
1170
1171 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
1172
1173         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
1174         operand 1 predicate.
1175         (cstoresi4): Ditto for operand 2.
1176         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
1177         patterns using SDWIM mode iterator.
1178         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
1179         using SWIM mode iterator.
1180         (cmpdi_1): Rename from cmpdi_1_rex64.
1181         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
1182         SWI48 mode iterator.
1183         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn patterns
1184         using SWI mode iterator.
1185         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
1186         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
1187         (*cmpqi_ext_3_insn): Make private.
1188         (*cmpqi_ext_3_insn_rex64): Make private.
1189         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
1190         * config/i386/predicates.md (cmpsi_operand): Remove.
1191
1192 2009-11-16  Paul Brook  <paul@codesourcery.com>
1193
1194         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
1195         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
1196
1197 2009-11-14  Jan Hubicka  <jh@suse.cz>
1198
1199         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
1200         ENTRY_BLOCK_PTR.
1201         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
1202         zero out all callees.
1203         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
1204         frequency and count match.
1205         * ipa-inline.c (update_noncloned_frequencies): New function.
1206         (cgraph_clone_inlined_nodes): Use it.
1207         * tree-inline.c (copy_bb): Fix frequency scaling; output
1208         diagnostic on frequency mismatches to dump file.
1209         (initialize_cfun): Do not scale frequency; fix count scaling;
1210         initialize entry and exit block frequencies; copy profile info.
1211         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
1212         (copy_body): Use frequency_scale as argument.
1213         (expand_call_inline): Compute frequency scale and output diagnostic
1214         to dump file.
1215         (delete_unreachable_blocks_update_callgrah): Remove checking that
1216         has to be done after edge redirection.
1217         (tree_function_versioning): Update initialize_cfun and copy_body call.
1218
1219 2009-11-14  Jan Hubicka  <jh@suse.cz>
1220
1221         * cgraph.c (cgraph_release_function_body): Update use of
1222         ipa_transforms_to_apply.
1223         (cgraph_remove_node): Remove ipa_transforms_to_apply.
1224         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
1225         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
1226         copied body.
1227         (cgraph_materialize_clone): Remove original if dead.
1228         * lto-streamer-in.c (lto_read_body): Remove FIXME and
1229         ipa_transforms_to_apply hack.
1230         * function.h (struct function): Add ipa_transforms_to_apply.
1231         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
1232         * tree-inline.c (copy_bb): Update sanity check.
1233         (initialize_cfun): Do not copy ipa_transforms_to_apply.
1234         (expand_call_inline): remove dead clone originals.
1235         (tree_function_versioning): Merge transformation queues.
1236         * passes.c (add_ipa_transform_pass): Remove.
1237         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
1238         tracking.
1239         (execute_all_ipa_transforms): Update.
1240         (execute_one_pass): Update.
1241
1242 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1243
1244         PR target/21078, 21080
1245         * config/avr/avr.c (avr_return_addr_rtx): New function for
1246         builtin_return_address.
1247         (expand_prologue): Calculate stack usage.
1248         (avr_asm_function_end_prologue): Output stack size and offset label.
1249         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
1250         (machine_function): Add stack_usage.
1251         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
1252
1253 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
1254
1255         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
1256         new 'outgoing' argument.
1257         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
1258         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1259         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
1260         iq2000_function_value_regno_p.
1261         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1262         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
1263         Declare.
1264
1265 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
1266
1267         PR target/42031
1268         * arm.md (adddi_sesidi_di): Place tied contraint first.
1269         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
1270         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
1271         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
1272         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
1273         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
1274         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
1275         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
1276         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
1277         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
1278
1279 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
1280
1281         * config/i386/predicates.md (call_register_no_elim_operand):
1282         New predicate.  Reject stack register as valid call operand
1283         for 32bit targets.
1284         (call_insn_operand): Use call_register_no_elim_operand.
1285
1286 2009-11-13  Richard Henderson  <rth@redhat.com>
1287
1288         * function.c (stack_protect_prologue): Don't bypass expand_expr
1289         for stack_protect_guard and guard_decl.
1290         (stack_protect_epilogue): Likewise.
1291
1292 2009-11-13  Jan Hubicka  <jh@suse.cz>
1293
1294         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
1295         when to PUBLIC is set.
1296
1297 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
1298
1299         PR middle-end/42029
1300         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
1301         tmp_load if needed.
1302
1303 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1304
1305         PR target/41900
1306         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
1307         *call_value_1): Use "lsm" as operand 1 constraint.
1308         * config/i386/predicates.md (call_insn_operand): Depend on
1309         index_register_operand to avoid %esp register.
1310
1311 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1312
1313         Revert:
1314         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1315
1316         PR target/41900
1317         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
1318         (TARGET_CALL_ESP): New define.
1319         * config/i386/i386.c (initial_ix86_tune_features): Initialize
1320         X86_ARCH_CALL_ESP.
1321         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
1322         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
1323         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
1324         TARGET_CALL_ESP.
1325         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
1326         New patterns, use "lsm" as operand 1 constraint.
1327         * config/i386/predicates.md (call_insn_operand): Depend on
1328         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
1329
1330 2009-11-13  Jason Merrill  <jason@redhat.com>
1331
1332         PR debug/26965
1333         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
1334         Don't emit a second declaration at any scope.
1335
1336 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
1337
1338         PR rtl-optimization/41697
1339         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
1340         a conditional jump has a single successor.
1341
1342 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
1343
1344         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
1345         allocate reg_last when in case lazy_reg_last is true.
1346         (init_deps_reg_last): New.
1347         (free_deps): When max_reg is 0, this context is already freed.
1348         * sched-int.h (init_deps_reg_last): Export.
1349         (init_deps): Update prototype.
1350         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
1351         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
1352         * ddg.c (build_intra_loop_deps): Likewise.
1353         * sel-sched-ir.c (copy_deps_context, create_deps_context,
1354         reset_deps_context, deps_init_id): Likewise.
1355         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
1356         (free_data_for_scheduled_insn): New, break down from ...
1357         (free_first_time_insn_data): ... here.
1358         (has_dependence_p): Allocate reg_last now, when it is needed.
1359         (extend_insn_data): When maximal LUID is big enough, allocate
1360         per-insn data in smaller chunks.
1361         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
1362         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
1363         in scheduled insn.
1364
1365 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1366
1367         * config/i386/i386.md (call_value): Fix comment.
1368         (sibcall_value): Ditto.
1369
1370 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
1371
1372         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
1373         (MD_FROB_UPDATE_CONTEXT): Define.
1374
1375 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
1376             Laurent GUERBY  <laurent@guerby.net>
1377
1378         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
1379         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
1380         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
1381
1382 2009-11-12  Jan Hubicka  <jh@suse.cz>
1383
1384         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
1385         and clear DECL_COMMON on localized declarations.
1386
1387 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
1388
1389         PR rtl-opt/38582
1390         * regrename.c (struct du_head): New structure; some elements moved
1391         from...
1392         (struct du_chain): ... this one.
1393         (open_chains, closed_chains): Now of type struct du_head *.
1394         (do_replace): Accept du_head argument, not du_chain.  All callers
1395         changed.  Modified code to match new data structures.
1396         (build_def_use): Return a list of du_head structures.  Modified code
1397         to match new data structures.
1398         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
1399         callers changed.  Modified code to match new data structures.
1400         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
1401         callers changed.  Modified code to match new data structures.
1402         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
1403         Allocate a du_head structure as well as a du_chain when creating a
1404         new chain.  Modified other code to match new data structures.
1405
1406 2009-11-12  Jan Hubicka  <jh@suse.cz>
1407
1408         * cgraph.h (varpool_node_name): Declare.
1409         * cgraphunit.c (process_function_and_variable_attributes): Set
1410         force_output flag on used variables.
1411         * ipa.c (function_and_variable_visibility): Dump externally visible
1412         and needed variables.
1413         * varpool.c (varpool_node_name): Export.
1414         (decide_is_variable_needed): Check COMDAT for externally visible vars;
1415         ignore needed flag.
1416
1417 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
1418
1419         PR middle-end/41930
1420         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
1421         processing if XEXP (x, i) is NULL.
1422
1423 2009-11-12  Jan Hubicka  <jh@suse.cz>
1424
1425         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
1426         imply PUBLIC || EXTERNAL.
1427
1428 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1429
1430         PR middle-end/41440
1431         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
1432         single successor block, ending with jump created by RTL expander.
1433
1434 2009-11-11  Jan Hubicka  <jh@suse.cz>
1435
1436         PR middle-end/41729
1437         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
1438         and WEAK variables at -fwhole-program.
1439
1440         PR middle-end/41735
1441         * ipa.c (whole_program_function_and_variable_visility): COMDAT
1442         functions/variables are not needed even if they are externally visible.
1443
1444 2009-11-11  Jan Hubicka  <jh@suse.cz>
1445
1446         (patch by Richard Guenther)
1447         * lto-streamer-out.c (output_function): Output head of argument list
1448         earlier.
1449         * lto-streamer-in.c (input_function): Re-map arguments into merged
1450         declaration.
1451
1452 2009-11-11  Jan Hubicka  <jh@suse.cz>
1453
1454         * lto-cgraph.c: Include gcov-io.h
1455         (output_profile_summary): New function.
1456         (output_cgraph): Use it.
1457         (input_profile_summary): New function.
1458         (input_cgraph): Use it.
1459         * coverage.c (build_ctr_info_value): Use varpool; initalize
1460         DECL_ASSEMBLER_NAME.
1461         (create_coverage): Likewise.
1462         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
1463         (tree_init_edge_profiler): Likewise.
1464         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
1465
1466 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
1467
1468         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
1469         * c-pragma.c (def_pragma_macro_value): Likewise.
1470         (def_pragma_macro): Likewise.
1471         (pushed_macro_table): Likewise.
1472         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
1473         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
1474
1475 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
1476
1477         * doc/plugins.texi (Registering custom attributes): section
1478         renamed as (Registering custom attributes or pragmas).
1479         Mentions custom attributes & pragmas, and c_register_pragma, with
1480         a small example.
1481         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
1482         pragmas.
1483         * doc/extend.texi (Function Attributes): Mentions that plugin can
1484         provide their attributes.
1485
1486 2009-11-11  Jon Beniston  <jon@beniston.com>
1487
1488         * config.gcc: Add lm32 elf and uclinux targets.
1489         * config/lm32: New directory.
1490         * config/lm32/lm32.c: New file.
1491         * config/lm32/lm32.h: New file.
1492         * config/lm32/lm32.md: New file.
1493         * config/lm32/lm32.opt: New file.
1494         * config/lm32/lm32-protos.h: New file.
1495         * config/lm32/constraints.md: New file.
1496         * config/lm32/predicates.md: New file.
1497         * config/lm32/sfp-machine.h: New file.
1498         * config/lm32/t-fprules-softfp: New file.
1499         * config/lm32/uclinux-elf.h: New file.
1500         * doc/invoke.texi: Document lm32 options.
1501         * doc/contrib.texi: Document lm32 porter.
1502         * doc/install.texi: Document lm32 targets.
1503
1504 2009-11-11  Martin Jambor  <mjambor@suse.cz>
1505
1506         PR lto/41932
1507         * ipa-prop.c (ipa_update_after_lto_read): Call
1508         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
1509         call ipa_initialize_node_params instead of ipa_populate_param_decls.
1510
1511 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
1512
1513         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
1514         (neon_expand_vector_init): Use them.  Also handle non-constant
1515         vectors with identical elements and vectors with only one
1516         non-constant element.
1517         (arm_print_operand): Handle 'y' modifier.
1518         * config/arm/arm-protos.h (neon_make_constant): Declare.
1519         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
1520         patterns.  Use VX instead of VDQW for the first one.  Allow
1521         a VFP alternative and V32 modes for the second one.
1522         * config/arm/neon.ml (shape_elt): Add Alternatives.
1523         (ops): Use Alternatives for vdup lane instructions.
1524         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
1525         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
1526
1527 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
1528
1529         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
1530         operands.
1531         (movti, mov<mode>): Call force_reg on one operand if required.
1532         * config/arm/vec-common.md (mov<mode>): Likewise.
1533
1534 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
1535
1536         * config/arm/arm.c (arm_override_options): Enable scheduling for
1537         Thumb-2.
1538
1539 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
1540
1541         PR target/10127
1542         PR ada/20548
1543         * expr.h (anti_adjust_stack_and_probe): Declare.
1544         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
1545         parameter and rewrite head comment.
1546         (allocate_dynamic_stack_space): Adjust call to above function.
1547         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
1548
1549         * tree.h (dwarf2out_args_size): Delete.
1550         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
1551         (dwarf2out_args_size_adjust): Delete prototype and move around.
1552         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
1553         ACCUMULATE_OUTGOING_ARGS targets.
1554
1555 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
1556
1557         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
1558         DECL_SIZE of DECL_RESULT before evaluating it.
1559
1560 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1561
1562         PR tree-optimization/41987
1563         * fold-const.c (const_binop): Avoid using fold_buildN().
1564
1565 2009-11-10  Martin Jambor  <mjambor@suse.cz>
1566
1567         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
1568         (execute_all_ipa_stmt_fixups): Declare.
1569         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
1570         * ipa-inline.c (pass_ipa_inline): Likewise.
1571         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
1572         * ipa-reference.c (pass_ipa_reference): Likewise.
1573         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
1574         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
1575         (pass_ipa_lto_finish_out): Likewise.
1576         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
1577         * passes.c (execute_ipa_stmt_fixups): New function.
1578         (execute_all_ipa_stmt_fixups): New function.
1579         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
1580
1581 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
1582
1583         PR ada/20548
1584         * explow.c (probe_stack_range): Fix typo.
1585         * config/sparc/sparc.md (probe_stack): New expander.
1586
1587 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
1588
1589         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
1590
1591 2009-11-09  Jason Merrill  <jason@redhat.com>
1592
1593         * gdbinit.in (pgq): New function for printing gimple sequence.
1594
1595 2009-11-09  Paul Brook  <paul@codesourcery.com>
1596             Daniel Jacobowitz  <dan@codesourcery.com>
1597             Sandra Loosemore  <sandra@codesourcery.com>
1598
1599         * doc/extend.texi (Half-Precision): Update wording to reflect
1600         that there are now multiple -mfpu options that enable fp16
1601         hardware support.
1602         * doc/invoke.texi: Update list of ARM -mfpu= options.
1603         * config.gcc: Update ARM --with-fpu option list.
1604         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
1605         vfpv3xd and vfpv3xd-fp16.
1606         (use_vfp_abi): New function.
1607         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
1608         when undesirable.
1609         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
1610         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
1611         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
1612         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
1613         provides them.
1614         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
1615         NEON.
1616         (arm_print_operand): Handle 'p' modifier.
1617         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
1618         TARGET_FP16.
1619         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
1620         (TARGET_FP16): Define.
1621         * config/arm/vfp.md: Disable double-precision patterns if the FPU
1622         does not provide them.
1623         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
1624         double-precision values on a single-precision FPU.
1625         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
1626         double-precision constants.
1627         (movhf_vfp_neon): New pattern (was movhf_vfp).
1628         (movhf_vfp): Remove NEON instructions.
1629         * config/arm/constraints.md: Add new "Dy" constraint for
1630         double-precision constants.  Update description of "Dv".
1631         * config/arm/arm.md: Disable double-precision patterns if the FPU
1632         does not provide them
1633
1634 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
1635
1636         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
1637         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
1638         diagnostics.
1639
1640 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
1641
1642         * collect2.c (main): Search PLUGIN_LD for plugin linker.
1643
1644         * configure.ac (--with-plugin-ld): New.  Default to ld.
1645         * configure: Regenerated.
1646         * config.in: Likewise.
1647
1648         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
1649         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
1650
1651 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
1652
1653         * config/openbsd-stdint.h: Change to reflect what
1654         c_common_nodes_and_builtins expects.
1655
1656 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
1657
1658         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
1659
1660 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
1661
1662         PR target/41985
1663         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
1664         function contains at least one local dynamic name.
1665         (print_operand) <case '&'>: Instead output operand lossage diagnostics
1666         here if that happens.
1667
1668 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
1669             Joern Rennecke  <amylaar@spamcop.net>
1670
1671         * cfgrtl.c (pass_free_cfg): Add pass name.
1672         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
1673         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
1674         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
1675         * df-core.c (pass_df_initialize_no_opt): Likewise.
1676         * except.c (pass_rtl_eh): Likewise.
1677         * function.c (pass_init_function, pass_leaf_regs): Likewise.
1678         * gcse.c (pass_rtl_pre): Change pass name.
1679         * passes.c (pass_postreload): Add pass name.
1680         (make_pass_instance): Don't use duplicate-tracking logic for
1681         names starting with '*'.
1682         (next_pass_1): Assert that pass has a name.
1683         (register_one_dump_file): If there is an space in the name,
1684         skip past it.
1685         * predict.c (pass_strip_predict_hints): Add pass name.
1686         * reg-stack.c (pass_stack_regs): Likewise.
1687         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
1688         * tree-cfg.c (pass_warn_function_return,
1689         pass_warn_function_noreturn): Add pass name.
1690         * tree-dfa.c (pass_referenced_vars): Likewise.
1691         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
1692         Fix whitespace before comment.
1693         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
1694         (pass_init_datastructures): Add pass name.
1695         * tree-ssa-loop.c (pass_record_bounds): Likewise.
1696         * tree-ssa.c (pass_early_warn_uninitialized,
1697         pass_late_warn_uninitialized): Likewise.
1698         * tree.c (pass_ipa_free_lang_data): Likewise.
1699         * doc/passes.texi (pass manager): Document how to disambiguate
1700         pass names.
1701
1702 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
1703
1704         * df-problems.c: Fix documentation for forward simulation of LR.
1705         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
1706         (df_simulate_finalize_forwards): Remove.
1707         * df.h (df_simulate_finalize_forwards): Remove.
1708
1709 2009-11-08  Richard Guenther  <rguenther@suse.de>
1710
1711         * tree-ssa-structalias.c (build_succ_graph): Properly make
1712         variables escape if they are stored to anything.
1713
1714 2009-11-08  Richard Guenther  <rguenther@suse.de>
1715
1716         PR rtl-optimization/41928
1717         * loop-invariant.c (free_loop_data): If we didn't allocate
1718         loop data do not try to free it.
1719
1720 2009-11-07  Jason Merrill  <jason@redhat.com>
1721
1722         * tree.c (reconstruct_complex_type): Preserve attributes.
1723
1724 2009-11-07  Richard Guenther  <rguenther@suse.de>
1725
1726         * tree-ssa-structalias.c (build_succ_graph): Feed stores
1727         to anything only to variables that can take pointers.
1728         (get_constraint_for_ssa_var): Properly exclude full
1729         variables from expanding.
1730         (first_vi_for_offset): Avoid overflow in arithmetic.
1731         (first_or_preceding_vi_for_offset): Likewise.
1732         (count_num_arguments): Fix implementation.
1733         (gate_ipa_pta): Do not run when not optimizing.
1734
1735 2009-11-07  David Binderman <dcb314@hotmail.com>
1736
1737         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
1738         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
1739         set but not used variables.
1740         (apply_args_reg_offset): Comment out as unused.
1741         * calls.c (flags_from_decl_or_type): Likewise.
1742         * genautomata.c (check_regexp_units_distribution): Likewise.
1743
1744 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
1745
1746         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
1747         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
1748         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
1749         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
1750         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
1751         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
1752         operand alternatives.
1753
1754 2009-11-06  Michael Matz  <matz@suse.de>
1755
1756         PR middle-end/41963
1757         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
1758         of a potential reciprocal to really be reciprocals.
1759
1760 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
1761
1762         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
1763         lwpintrin.h after immintrin.h.
1764         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
1765         typedefs.
1766
1767         PR middle-end/41935
1768         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
1769         or non-constant index, allow index one past the last element and
1770         allow exceeding array bound in arrays that might be used as flexible
1771         array members.
1772
1773 2009-11-05  Richard Henderson  <rth@redhat.com>
1774
1775         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
1776
1777 2009-11-05  Paul Brook  <paul@codesourcery.com>
1778
1779         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
1780         (arm_fpu_desc): New.
1781         (all_fpus): Add FPU details.
1782         (fp_model_for_fpu): Remove.
1783         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
1784         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
1785         (arm_file_start): Use arm_fpu_desc.
1786         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
1787         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
1788         arm_fpu_desc.
1789         (TARGET_FPA_EMU2): Define.
1790         (arm_fp_model, fputype, arm_fpu_tune): Remove.
1791         (vfp_reg_type, arm_fpu_desc): New.
1792         * config/arm/arm.md (attr fpu): Simplify.
1793         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
1794         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
1795         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
1796         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
1797         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
1798
1799 2009-11-05  Michael Matz  <matz@suse.de>
1800
1801         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
1802         on TARGET_RECIP.
1803         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
1804         for 1/sqrtf.
1805
1806 2009-11-04  Jason Merrill  <jason@redhat.com>
1807
1808         PR c++/36912
1809         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
1810         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
1811         (output_constant): Avoid crash after error.
1812
1813 2009-11-05  Martin Jambor  <mjambor@suse.cz>
1814
1815         * tree-sra.c (struct access): Changed comment of next_sibling field.
1816         (analyze_modified_params): Loop over accesses of a group rather than
1817         over all with the ame base, pass a common bitmap to
1818         walk_aliased_vdefs.
1819         (unmodified_by_ref_scalar_representative): Build link lists of
1820         accesses of a group.
1821         (splice_param_accesses): Likewise.
1822
1823 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
1824
1825         * df-scan.c (df-uses-record): Add case zero_extract of mem.
1826
1827 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
1828
1829         PR target/10127
1830         PR ada/20548
1831         * config/i386/i386.md (probe_stack): New expander.
1832         (logical operation peepholes): Do not split stack checking probes.
1833
1834 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
1835             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1836
1837         * doc/invoke.texi (-mlwp): Add documentation.
1838         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
1839         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
1840         (x86_64-*-*): Ditto.
1841         * config/i386/lwpintrin.h: New file, provide x86 compiler
1842         intrinisics for LWP.
1843         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
1844         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
1845         * config/i386/i386-c.c (ix86_target_macros_internal): Check
1846         ISA_FLAG for LWP.
1847         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
1848         * config/i386/i386.opt (-mlwp): New switch for LWP support.
1849         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
1850         (OPTION_MASK_ISA_LWP_UNSET): New.
1851         (ix86_handle_option): Handle -mlwp.
1852         (isa_opts): Handle -mlwp.
1853         (enum pta_flags): Add PTA_LWP.
1854         (override_options): Add LWP support.
1855         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
1856         (IX86_BUILTIN_LLWPCB32): Ditto.
1857         (IX86_BUILTIN_LLWPCB64): Ditto.
1858         (IX86_BUILTIN_SLWPCB16): Ditto.
1859         (IX86_BUILTIN_SLWPCB32): Ditto.
1860         (IX86_BUILTIN_SLWPCB64): Ditto.
1861         (IX86_BUILTIN_LWPVAL16): Ditto.
1862         (IX86_BUILTIN_LWPVAL32): Ditto.
1863         (IX86_BUILTIN_LWPVAL64): Ditto.
1864         (IX86_BUILTIN_LWPINS16): Ditto.
1865         (IX86_BUILTIN_LWPINS32): Ditto.
1866         (IX86_BUILTIN_LWPINS64): Ditto.
1867         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
1868         (builtin_description): Ditto.
1869         (ix86_init_mmx_sse_builtins): Ditto.
1870         (ix86_expand_special_args_builtin): Ditto.
1871         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
1872         LWP support.
1873         (UNSPEC_SLWP_INTRINSIC): Ditto.
1874         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
1875         (UNSPECV_LWPINS_INTRINSIC): Ditto.
1876         (lwp_llwpcbhi1): New lwp pattern.
1877         (lwp_llwpcbsi1): Ditto.
1878         (lwp_llwpcbdi1): Ditto.
1879         (lwp_slwpcbhi1): Ditto.
1880         (lwp_slwpcbsi1): Ditto.
1881         (lwp_slwpcbdi1): Ditto.
1882         (lwp_lwpvalhi3): Ditto.
1883         (lwp_lwpvalsi3): Ditto.
1884         (lwp_lwpvaldi3): Ditto.
1885         (lwp_lwpinshi3): Ditto.
1886         (lwp_lwpinssi3): Ditto.
1887         (lwp_lwpinsdi3): Ditto.
1888
1889 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1890             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1891
1892         PR rtl-opt/41833
1893         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
1894         a vec_duplicate.
1895
1896 2009-11-04  Richard Guenther  <rguenther@suse.de>
1897             Rafael Avila de Espindola  <espindola@google.com>
1898
1899         * gcc.c (process_command): Handle arguments name@offset.
1900
1901 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
1902             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1903
1904         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
1905         (x86_64-*-*): Ditto.
1906         * config/i386/xopintrin.h: New file, provide common x86 compiler
1907         intrinisics for XOP.
1908         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
1909         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
1910         * config/i386/i386-c.c(ix86_target_macros_internal): Check
1911         ISA_FLAG for XOP.
1912         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
1913         * config/i386/i386.opt (-mxop): New switch for XOP support.
1914         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
1915         (UNSPEC_XOP_TRUEFALSE)
1916         (UNSPEC_XOP_PERMUTE)
1917         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
1918         (PPERM_*): New constants for vpperm instruction.
1919         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
1920         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
1921         (OPTION_MASK_ISA_XOP_UNSET): New.
1922         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
1923         (ix86_handle_option): Handle -mxop.
1924         (isa_opts): Handle -mxop.
1925         (enum pta_flags): Add PTA_XOP.
1926         (override_options): Add XOP support.
1927         (print_operand): Add code for XOP compare instructions.
1928         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
1929         (ix86_expand_int_vcond): Extend for XOP compare instruction.
1930
1931         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
1932         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
1933         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
1934         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
1935         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
1936         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
1937         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
1938
1939         (IX86_BUILTIN_VPCMOV256): Ditto.
1940         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
1941         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
1942         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
1943         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
1944         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
1945         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
1946
1947         (IX86_BUILTIN_VPPERM): Ditto.
1948
1949         (IX86_BUILTIN_VPMACSSWW): Ditto.
1950         (IX86_BUILTIN_VPMACSWW): Ditto.
1951         (IX86_BUILTIN_VPMACSSWD): Ditto.
1952         (IX86_BUILTIN_VPMACSWD): Ditto.
1953         (IX86_BUILTIN_VPMACSSDD): Ditto.
1954         (IX86_BUILTIN_VPMACSDD): Ditto.
1955         (IX86_BUILTIN_VPMACSSDQL): Ditto.
1956         (IX86_BUILTIN_VPMACSSDQH): Ditto.
1957         (IX86_BUILTIN_VPMACSDQL): Ditto.
1958         (IX86_BUILTIN_VPMACSDQH): Ditto.
1959         (IX86_BUILTIN_VPMADCSSWD): Ditto.
1960         (IX86_BUILTIN_VPMADCSWD): Ditto.
1961
1962         (IX86_BUILTIN_VPHADDBW): Ditto.
1963         (IX86_BUILTIN_VPHADDBD): Ditto.
1964         (IX86_BUILTIN_VPHADDBQ): Ditto.
1965         (IX86_BUILTIN_VPHADDWD): Ditto.
1966         (IX86_BUILTIN_VPHADDWQ): Ditto.
1967         (IX86_BUILTIN_VPHADDDQ): Ditto.
1968         (IX86_BUILTIN_VPHADDUBW): Ditto.
1969         (IX86_BUILTIN_VPHADDUBD): Ditto.
1970         (IX86_BUILTIN_VPHADDUBQ): Ditto.
1971         (IX86_BUILTIN_VPHADDUWD): Ditto.
1972         (IX86_BUILTIN_VPHADDUWQ): Ditto.
1973         (IX86_BUILTIN_VPHADDUDQ): Ditto.
1974         (IX86_BUILTIN_VPHSUBBW): Ditto.
1975         (IX86_BUILTIN_VPHSUBWD): Ditto.
1976         (IX86_BUILTIN_VPHSUBDQ): Ditto.
1977
1978         (IX86_BUILTIN_VPROTB): Ditto.
1979         (IX86_BUILTIN_VPROTW): Ditto.
1980         (IX86_BUILTIN_VPROTD): Ditto.
1981         (IX86_BUILTIN_VPROTQ): Ditto.
1982         (IX86_BUILTIN_VPROTB_IMM): Ditto.
1983         (IX86_BUILTIN_VPROTW_IMM): Ditto.
1984         (IX86_BUILTIN_VPROTD_IMM): Ditto.
1985         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
1986
1987         (IX86_BUILTIN_VPSHLB): Ditto.
1988         (IX86_BUILTIN_VPSHLW): Ditto.
1989         (IX86_BUILTIN_VPSHLD): Ditto.
1990         (IX86_BUILTIN_VPSHLQ): Ditto.
1991         (IX86_BUILTIN_VPSHAB): Ditto.
1992         (IX86_BUILTIN_VPSHAW): Ditto.
1993         (IX86_BUILTIN_VPSHAD): Ditto.
1994         (IX86_BUILTIN_VPSHAQ): Ditto.
1995
1996         (IX86_BUILTIN_VFRCZSS): Ditto.
1997         (IX86_BUILTIN_VFRCZSD): Ditto.
1998         (IX86_BUILTIN_VFRCZPS): Ditto.
1999         (IX86_BUILTIN_VFRCZPD): Ditto.
2000         (IX86_BUILTIN_VFRCZPS256): Ditto.
2001         (IX86_BUILTIN_VFRCZPD256): Ditto.
2002
2003         (IX86_BUILTIN_VPCOMEQUB): Ditto.
2004         (IX86_BUILTIN_VPCOMNEUB): Ditto.
2005         (IX86_BUILTIN_VPCOMLTUB): Ditto.
2006         (IX86_BUILTIN_VPCOMLEUB): Ditto.
2007         (IX86_BUILTIN_VPCOMGTUB): Ditto.
2008         (IX86_BUILTIN_VPCOMGEUB): Ditto.
2009         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
2010         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
2011
2012         (IX86_BUILTIN_VPCOMEQUW): Ditto.
2013         (IX86_BUILTIN_VPCOMNEUW): Ditto.
2014         (IX86_BUILTIN_VPCOMLTUW): Ditto.
2015         (IX86_BUILTIN_VPCOMLEUW): Ditto.
2016         (IX86_BUILTIN_VPCOMGTUW): Ditto.
2017         (IX86_BUILTIN_VPCOMGEUW): Ditto.
2018         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
2019         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
2020
2021         (IX86_BUILTIN_VPCOMEQUD): Ditto.
2022         (IX86_BUILTIN_VPCOMNEUD): Ditto.
2023         (IX86_BUILTIN_VPCOMLTUD): Ditto.
2024         (IX86_BUILTIN_VPCOMLEUD): Ditto.
2025         (IX86_BUILTIN_VPCOMGTUD): Ditto.
2026         (IX86_BUILTIN_VPCOMGEUD): Ditto.
2027         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
2028         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
2029
2030         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
2031         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
2032         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
2033         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
2034         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
2035         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
2036         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
2037         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
2038
2039         (IX86_BUILTIN_VPCOMEQB): Ditto.
2040         (IX86_BUILTIN_VPCOMNEB): Ditto.
2041         (IX86_BUILTIN_VPCOMLTB): Ditto.
2042         (IX86_BUILTIN_VPCOMLEB): Ditto.
2043         (IX86_BUILTIN_VPCOMGTB): Ditto.
2044         (IX86_BUILTIN_VPCOMGEB): Ditto.
2045         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
2046         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
2047
2048         (IX86_BUILTIN_VPCOMEQW): Ditto.
2049         (IX86_BUILTIN_VPCOMNEW): Ditto.
2050         (IX86_BUILTIN_VPCOMLTW): Ditto.
2051         (IX86_BUILTIN_VPCOMLEW): Ditto.
2052         (IX86_BUILTIN_VPCOMGTW): Ditto.
2053         (IX86_BUILTIN_VPCOMGEW): Ditto.
2054         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
2055         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
2056
2057         (IX86_BUILTIN_VPCOMEQD): Ditto.
2058         (IX86_BUILTIN_VPCOMNED): Ditto.
2059         (IX86_BUILTIN_VPCOMLTD): Ditto.
2060         (IX86_BUILTIN_VPCOMLED): Ditto.
2061         (IX86_BUILTIN_VPCOMGTD): Ditto.
2062         (IX86_BUILTIN_VPCOMGED): Ditto.
2063         (IX86_BUILTIN_VPCOMFALSED): Ditto.
2064         (IX86_BUILTIN_VPCOMTRUED): Ditto.
2065
2066         (IX86_BUILTIN_VPCOMEQQ): Ditto.
2067         (IX86_BUILTIN_VPCOMNEQ): Ditto.
2068         (IX86_BUILTIN_VPCOMLTQ): Ditto.
2069         (IX86_BUILTIN_VPCOMLEQ): Ditto.
2070         (IX86_BUILTIN_VPCOMGTQ): Ditto.
2071         (IX86_BUILTIN_VPCOMGEQ): Ditto.
2072         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
2073         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
2074
2075         (enum multi_arg_type): New enum for describing the various XOP
2076         intrinsic argument types.
2077         (bdesc_multi_arg): New table for XOP intrinsics.
2078         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
2079         (ix86_expand_multi_arg_builtin): New function for creating XOP
2080         intrinsics.
2081
2082         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
2083         (xop_pmacsww): Ditto.
2084         (xop_pmacssww): Ditto.
2085         (xop_pmacsdd): Ditto.
2086         (xop_pmacssdd): Ditto.
2087         (xop_pmacssdql): Ditto.
2088         (xop_pmacssdqh): Ditto.
2089         (xop_pmacsdql): Ditto.
2090         (xop_pmacsdql_mem): Ditto.
2091         (xop_mulv2div2di3_low): Ditto.
2092         (xop_pmacsdqh): Ditto.
2093         (xop_pmacsdqh_mem): Ditto.
2094         (xop_mulv2div2di3_high): Ditto.
2095         (xop_pmacsswd): Ditto.
2096         (xop_pmacswd): Ditto.
2097         (xop_pmadcsswd): Ditto.
2098         (xop_pmadcswd): Ditto.
2099         (xop_pcmov_<mode>): Ditto.
2100         (xop_pcmov_<mode>256): Ditto.
2101         (xop_phaddbw): Ditto.
2102         (xop_phaddbd): Ditto.
2103         (xop_phaddbq): Ditto.
2104         (xop_phaddwd): Ditto.
2105         (xop_phaddwq): Ditto.
2106         (xop_phadddq): Ditto.
2107         (xop_phaddubw): Ditto.
2108         (xop_phaddubd): Ditto.
2109         (xop_phaddubq): Ditto.
2110         (xop_phadduwd): Ditto.
2111         (xop_phadduwq): Ditto.
2112         (xop_phaddudq): Ditto.
2113         (xop_phsubbw): Ditto.
2114         (xop_phsubwd): Ditto.
2115         (xop_phsubdq): Ditto.
2116         (xop_pperm): Ditto.
2117         (rotl<mode>3): Ditto.
2118         (rotr<mode>3): Ditto.
2119         (xop_rotl<mode>3): Ditto.
2120         (xop_rotr<mode>3): Ditto.
2121         (vrotr<mode>3): Ditto.
2122         (vrotl<mode>3): Ditto.
2123         (xop_vrotl<mode>3): Ditto.
2124         (vlshr<mode>3): Ditto.
2125         (vashr<mode>3): Ditto.
2126         (vashl<mode>3
2127         (xop_ashl<mode>3): Ditto.
2128         (xop_lshl<mode>3): Ditto.
2129         (ashlv16qi3): Ditto.
2130         (lshlv16qi3): Ditto.
2131         (ashrv16qi3): Ditto.
2132         (ashrv2di3): Ditto.
2133         (xop_frcz<mode>2): Ditto.
2134         (xop_vmfrcz<mode>2): Ditto.
2135         (xop_frcz<mode>2256): Ditto.
2136         (xop_maskcmp<mode>3): Ditto.
2137         (xop_maskcmp_uns<mode>3): Ditto.
2138         (xop_maskcmp_uns2<mode>3): Ditto.
2139         (xop_pcom_tf<mode>3): Ditto.
2140
2141         * doc/invoke.texi (-mxop): Add documentation.
2142         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
2143
2144 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
2145
2146         PR driver/11810
2147         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
2148         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
2149         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
2150
2151 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
2152
2153         PR target/40835
2154         * arm.md (peephole2 patterns for move and compare): New.
2155
2156 2009-11-04  Nick Clifton  <nickc@redhat.com>
2157
2158         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
2159         Make sure that it does not allow CONST_DOUBLEs.
2160         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
2161         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
2162         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
2163         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
2164         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
2165         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
2166         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
2167         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
2168         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
2169         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
2170         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
2171         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
2172         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
2173         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
2174         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
2175
2176 2009-11-04  Richard Guenther  <rguenther@suse.de>
2177
2178         PR tree-optimization/41919
2179         * tree-vrp.c (test_for_singularity): Properly compare values.
2180
2181 2009-11-04  Revital Eres  <eres@il.ibm.com>
2182
2183         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
2184         Consider peeling for alignment only for stores and remove
2185         redundant assignment.
2186
2187 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
2188
2189         PR target/41302
2190         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
2191         (m68k_ok_for_sibcall_p): Handle different result return locations.
2192
2193 2009-11-04  Richard Guenther  <rguenther@suse.de>
2194
2195         * c-opts.c (c_common_post_options): Move LTO option processing
2196         code ...
2197         * opts.c (decode_options): ... here.
2198
2199 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
2200
2201         * c-common.c (fold_offsetof_1): Use %wd instead of
2202         HOST_WIDE_INT_PRINT_DEC.
2203
2204 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
2205
2206         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
2207         __pic__ or __PIC__.
2208
2209 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
2210
2211         * config.gcc (vax-*-linux*): Keep the original contents of
2212         tmake_file while adding vax/t-linux.
2213
2214 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
2215
2216         PR target/10127
2217         PR ada/20548
2218         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
2219         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
2220         (STACK_CHECK_MOVING_SP): Likewise.
2221         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
2222         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
2223         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
2224         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
2225         Document PROBE_STACK.
2226         * explow.c (anti_adjust_stack_and_probe): New function.
2227         (allocate_dynamic_stack_space): Do not directly allocate space if
2228         STACK_CHECK_MOVING_SP, instead invoke above function.
2229         (emit_stack_probe): Handle probe_stack insn.
2230         (PROBE_INTERVAL): New macro.
2231         (STACK_GROW_OPTAB): Likewise.
2232         (STACK_GROW_OFF): Likewise.
2233         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
2234         loop condition in the small constant case.  Rewrite in the general
2235         case to be immune to wraparounds.  Make sure the address of probes
2236         is valid.  Try to use [base + disp] addressing mode if possible.
2237         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
2238         checking is enabled and STACK_CHECK_MOVING_SP.
2239         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
2240         return 1 for volatile references to the stack pointer.
2241         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
2242         __builtin_alloca if stack checking is enabled.
2243         * unwind-dw2.c (uw_identify_context): Take into account whether the
2244         context is that of a signal frame or not.
2245         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
2246         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
2247
2248 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
2249
2250         PR rtl-optimization/41917
2251         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
2252         operand isn't known to be 0, return 1.
2253
2254 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
2255
2256         * config/mips/mips.md: Fix typos.
2257
2258 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
2259
2260         * doc/invoke.texi: Fix typo.
2261
2262 2009-11-03  Paul Brook  <paul@codesourcery.com>
2263
2264         * config/arm/neon.ml (vectype): Add T_floatSF.
2265         (string_of_vectype): Ditto.
2266         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
2267         (deftypes): Use float for float32_t.
2268         * config/arm/arm_neon.h: Regenerate.
2269
2270 2009-11-03  Nick Clifton  <nickc@redhat.com>
2271             Kevin Buettner  <kevinb@redhat.com>
2272
2273         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
2274         order of expected registers.
2275         (rx_load_multiple_vector): Likewise.
2276         (rx_rtsd_vector): Likewise.
2277         * config/rx/rx.c (rx_cpu_type): New variable.
2278         (rx_print_operand): Fix bug printing 64-bit constant values.
2279         (rx_emit_stack_pushm): Reverse order of pushed registers.
2280         (gen_rx_store_vector): Likewise.
2281         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
2282         attribute name.
2283         (is_exception_func): Rename to is_interrupt_func and only accept
2284         "interrupt" as the attribute name.
2285         (rx_get_stack_layout): Use new function name.
2286         (rx_func_attr_inlinable): Likewise.
2287         (rx_attribute_table): Remove "exception".
2288         (rx_expand_prologue): If necessary push the accumulator register
2289         in the prologue of interrupt functions.
2290         (rx_expand_epilogue): If necessary pop the accumulator.
2291         (rx_builtins): Add RX_BUILTIN_MVTIPL.
2292         (rx_expand_builtin_stz): Remove.
2293         (rx_expand_builtin_mvtipl): New function.
2294         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
2295         (rx_expand_builtin): Likewise.
2296         (rx_enable_fpu): New variable.
2297         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
2298         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
2299         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
2300         (enum rx_cpu_types): Define.
2301         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
2302         (INCOMING_FRAME_SP_OFFSET): Define.
2303         (ARG_POINTER_CFA_OFFSET): Define.
2304         (FRAME_POINTER_CFA_OFFSET): Define.
2305         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
2306         (ALLOW_RX_FPU_INSNS): Define.
2307         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
2308         fast_math_flags_set_p.
2309         (UNSPEC_BUILTIN_MVTIPL): Define.
2310         (revl): Rename to bswapsi2.
2311         (bswaphi2): New pattern.
2312         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
2313         (mvtaclo): Likewise.
2314         (racw): Likewise.
2315         (mvtc): Remove clobber of cc0.
2316         (mvtcp): Delete.
2317         (opecp): Delete.
2318         * config/rx/rx.opt (mieee): Remove.
2319         (fpu): Add.
2320         (nofpu): Add.
2321         (mcpu=): Add.
2322         (patch=): Add.
2323         (msave-acc-in-interrupts): Add.
2324         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
2325         (MULTILIB_DIRS): Likewise.
2326         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
2327         * doc/extend.texi: Remove description of "exception" function
2328         attribute.
2329         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
2330         -msave-acc-in-interrupts options.
2331
2332 2009-11-03  Richard Guenther  <rguenther@suse.de>
2333
2334         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
2335
2336 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
2337
2338         PR c++/38699
2339         * c-common.c (fold_offsetof_1): Issue errors when the member
2340         designator of the offsetof expression is not legitimate.
2341
2342 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2343
2344         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
2345         names instead of numerical constants.
2346         (sse_prologue_save): Ditto.
2347         (*sse_prologue_save_insn): Ditto.
2348
2349 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2350
2351         PR target/41900
2352         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
2353         (TARGET_CALL_ESP): New define.
2354         * config/i386/i386.c (initial_ix86_tune_features): Initialize
2355         X86_ARCH_CALL_ESP.
2356         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
2357         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
2358         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
2359         TARGET_CALL_ESP.
2360         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
2361         New patterns, use "lsm" as operand 1 constraint.
2362         * config/i386/predicates.md (call_insn_operand): Depend on
2363         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
2364
2365 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2366
2367         PR tree-optimization/41857
2368         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
2369         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
2370         to create_mem_ref.
2371         * tree-ssa-address.c (move_hint_to_base): New function.
2372         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
2373         address space associated with TYPE.
2374         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
2375         most_expensive_mult_to_index.  Call move_hint_to_base.
2376         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
2377         TYPE to addr_to_parts.
2378
2379 2009-11-02  Martin Jambor  <mjambor@suse.cz>
2380
2381         PR tree-optimization/41750
2382         * tree-sra.c (analyze_modified_params): Loop over all
2383         representatives of components of a parameter.
2384
2385 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
2386
2387         PR tree-optimization/41841
2388         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
2389         local variables of not yet materialized clones.
2390
2391         PR debug/41893
2392         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
2393         for a VOIDmode variable.
2394
2395         PR c++/41774
2396         * c-pragma.c (visstack): Change into vector of ints rather than
2397         enum symbol_visibility.
2398         (push_visibility): Add kind argument, push default_visibility together
2399         with kind.
2400         (pop_visibility): Add kind argument, return true if successful, fail
2401         if visibility stack is empty or if stack top is of different kind.
2402         (handle_pragma_visibility): Don't check length of visstack, instead
2403         call pop_visibility and issue diagnostics if it failed.  Pass 0
2404         as last argument to push_visibility and pop_visibility.
2405         * c-pragma.h (push_visibility): Add kind argument.
2406         (pop_visibility): Likewise.  Return bool instead of void.
2407
2408 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
2409
2410         * tree.def (TARGET_MEM_REF): Update comment.
2411         * alias.c (get_alias_set): Retrieve the original memory reference for
2412         a TARGET_MEM_REF before proceeding.
2413
2414 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
2415
2416         * config/frv/frv.c (frv_function_value, frv_libcall_value,
2417         frv_function_value_regno_p): New functions.
2418         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2419         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2420         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
2421         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
2422
2423 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
2424
2425         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
2426         new 'outgoing' argument.
2427         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
2428         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2429         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
2430         LIBCALL_VALUE): Remove.
2431         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
2432         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
2433         (mh10300_function_value_regno_p): Declare.
2434
2435 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2436
2437         * config/arm/cortex-a9.md: New - integer pipeline description.
2438
2439 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
2440
2441         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
2442         aborting if the sizes of the two references don't match.
2443
2444 2009-10-31  Toon Moene  <toon@moene.org>
2445
2446         * ipa-inline.c (cgraph_decide_inlining):
2447         Include reason for not inlining called-once functions in dump file.
2448
2449 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
2450
2451         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
2452         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
2453         (LINK_SPEC): BE_LINK_SPEC added.
2454
2455 2009-10-30  Richard Guenther  <rguenther@suse.de>
2456
2457         PR lto/41858
2458         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
2459
2460 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
2461
2462         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
2463         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
2464         label.
2465
2466 2009-10-30  Martin Jambor  <mjambor@suse.cz>
2467
2468         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
2469
2470 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
2471
2472         PR target/40838
2473         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
2474         first.  Move assert on stack_alignment_estimated just before
2475         setting stack_realign_needed.
2476         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
2477         Don't call update_stack_boundary.
2478
2479         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
2480         (verride_options): Don't check ix86_force_align_arg_pointer here.
2481         (ix86_function_ok_for_sibcall): Use it.
2482         (ix86_update_stack_boundary): Likewise.
2483
2484         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
2485
2486 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
2487
2488         * arm.md (QHSI): New mode iterator.
2489         (movqi): If generating for thumb, then truncate any immediate to
2490         8 bits.
2491         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
2492         with...
2493         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
2494         version.
2495
2496 2009-10-29  Cary Coutant  <ccoutant@google.com>
2497
2498         PR debug/41700
2499         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
2500         locations in the source).
2501         (store_vcall_insn): New function.
2502         (lookup_vcall_insn): New function.
2503         (dwarf2out_virtual_call_token): Use store_vcall_insn.
2504         (dwarf2out_copy_call_info): New function.
2505         (dwarf2out_virtual_call): Use lookup_vcall_insn.
2506         * emit-rtl.c (try_split): Call copy_call_info debug hook.
2507         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
2508         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
2509         (debug_nothing_rtx_rtx): New dummy hook.
2510         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
2511         (xcoff_debug_hooks): Likewise.
2512         * sdbout.c (sdb_debug_hooks): Likewise.
2513         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
2514
2515 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
2516
2517         * doc/invoke.texi (mmcount-ra-address): Document new command line
2518         option.
2519         * config/mips/mips.opt (mmcount-ra-address): New option.
2520         * config/mips/mips-protos.h (mips_function_profiler): Declare new
2521         function.
2522         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
2523         member.
2524         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
2525         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
2526         rewritten.
2527         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
2528         mips_function_profiler.
2529
2530 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
2531
2532         PR middle-end/37565
2533         PR target/38018
2534         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
2535         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
2536         * optc-gen.awk (cl_target_option_restore): Include call to
2537         targetm.override_options_after_change.
2538         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
2539         * target.h (override_options_after_change): New.
2540         * c-common.c (parse_optimize_options): Call
2541         targetm.override_options_after_change.
2542         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
2543         (ia64_override_options_after_change): New.
2544         (ia64_override_options) Add call to above.
2545
2546 2009-10-29  Michael Matz  <matz@suse.de>
2547
2548         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
2549         (gate_convert_to_rsqrt): Ditto.
2550         (pass_convert_to_rsqrt): Ditto.
2551         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
2552         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
2553         to pass list.
2554
2555         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
2556
2557 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2558
2559         * config/arm/arm.c (find_best_start): Fix type of remainder to be
2560         unsigned.
2561
2562 2009-10-29  Martin Jambor  <mjambor@suse.cz>
2563
2564         PR tree-optimization/41775
2565         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
2566         (generate_subtree_copies): Do not unshare agg.
2567         (load_assign_lhs_subreplacements): Do not unshare rhs.
2568         (sra_modify_assign): Do not unshare exprs.
2569         (propagate_subacesses_accross_link): Renamed to
2570         propagate_subaccesses_across_link.
2571
2572 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
2573
2574         * arm.c (count_insns_for_constant): Rework to support counting for
2575         thumb2 immediates as well.
2576         (find_best_start): Split out from arm_gen_constant.
2577         (arm_gen_constant): Rework to support XOR with immediate.
2578
2579 2009-10-29  Chao-ying Fu  <fu@mips.com>
2580
2581         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
2582         functions.
2583         (mips_expand_synci_loop):  Use the length rtx to control the
2584         synci loop from the begin rtx that points to the first byte of
2585         the cache line.
2586
2587 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
2588
2589         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
2590
2591 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
2592
2593         * dbxout.c (dbxout_common_check): Accept non public trees.
2594         * dwarf2out.c (fortran_common): Accept non public trees.
2595
2596 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
2597
2598         * common.opt (fuse-linker-plugin): New option.
2599         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
2600         fuse-linker-plugin.
2601         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
2602
2603 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2604
2605         PR rtl-optimization/39715
2606         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
2607         (gen_cstoresi_ltu_thumb1): New splitter.
2608
2609 2009-10-28  Richard Guenther  <rguenther@suse.de>
2610
2611         PR lto/41808
2612         PR lto/41839
2613         * tree-ssa.c (useless_type_conversion_p): Do not treat
2614         conversions to pointers to incomplete types as useless.
2615         * gimple.c (gimple_types_compatible_p): Compare struct tags,
2616         not typedef names.
2617
2618 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
2619
2620         * var-tracking.c (emit_note_insn_var_location): Don't call the second
2621         vt_expand_loc unnecessarily when location is not a register nor
2622         memory.
2623
2624         PR middle-end/41837
2625         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
2626         fields don't have DECL_NAME.
2627
2628         PR debug/41801
2629         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
2630         call convert_memory_address on addr.
2631
2632         PR target/41762
2633         * config/i386/i386.c (ix86_pic_register_p): Don't call
2634         rtx_equal_for_cselib_p for VALUEs discarded as useless.
2635
2636 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
2637
2638         * var-tracking.c (emit_note_insn_var_location): Get the mode of
2639         a variable part from its REG, MEM or VALUE.
2640
2641 2009-10-28  Richard Guenther  <rguenther@suse.de>
2642
2643         * gimple.c (gimple_get_alias_set): Fix comment typo.
2644
2645 2009-10-28  Richard Guenther  <rguenther@suse.de>
2646
2647         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
2648         (free_lang_data): Unconditionally compute alias sets for all
2649         standard integer types.  Bail out if gate bailed out previously.
2650         Do not reset the types_compatible_p langhook.
2651         (gate_free_lang_data): Remove.
2652         (struct pass_ipa_free_lang_data): Enable unconditionally.
2653         * gimple.c (gimple_get_alias_set): Use the same alias-set for
2654         all pointer types.
2655
2656 2009-10-28  Richard Guenther  <rguenther@suse.de>
2657
2658         PR middle-end/41855
2659         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
2660         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
2661         (call_may_clobber_ref_p_1): Likewise.
2662         * tree-ssa-structalias.c (find_func_aliases): Likewise.
2663         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
2664
2665 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2666
2667         PR rtl-optimization/41812
2668
2669         Revert:
2670         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2671
2672         * df-problems.c (df_md_scratch): New.
2673         (df_md_alloc, df_md_free): Allocate/free it.
2674         (df_md_local_compute): Only include live registers in init.
2675         (df_md_transfer_function): Prune the in-set computed by
2676         the confluence function, and the gen-set too.
2677
2678 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2679
2680         PR rtl-optimization/39715
2681         * combine.c (simplify_comparison): Use extensions to
2682         widen comparisons.  Try an ANDing first.
2683
2684 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2685
2686         PR rtl-optimization/40741
2687         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
2688         a small constant is cheap.
2689         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
2690         force_reg on the LHS.
2691         (xorsi3): Likewise, and split the XOR if the constant is complex
2692         and not in Thumb mode.
2693
2694 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2695
2696         * expmed.c (emit_store_flag): Check costs before
2697         transforming to the opposite representation.
2698
2699 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2700
2701         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
2702         cstore result to DImode.
2703
2704 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
2705
2706         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
2707         inside the unspec vector.
2708
2709 2009-10-27  Richard Henderson  <rth@redhat.com>
2710
2711         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
2712
2713 2009-10-27  Richard Henderson  <rth@redhat.com>
2714
2715         PR c++/41819
2716         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
2717         eh_region_may_contain_throw; update users.
2718         (eh_region_may_contain_throw): New function.
2719         (lower_catch): Check flag_exceptions before creating exception region.
2720         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
2721         (lower_cleanup): Tidy existing flag_exceptions check to match.
2722
2723 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
2724
2725         PR/41799
2726         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
2727         * config/i386/mingw.opt: Add fset-stack-executable.
2728         * config/i386/i386.c (ix86_trampoline_init): Make call to
2729         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
2730         defined and its value is not zero.
2731         * doc/invoke.texi
2732
2733 2009-10-27  Richard Guenther  <rguenther@suse.de>
2734
2735         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
2736         handle calls to externally visible functions like in regular mode.
2737         (create_variable_info_for): Do not create function infos here.
2738         (have_alias_info): Remove write-only variable.
2739         (solve_constraints): New function split out from common code
2740         in compute_points_to_sets and ipa_pta_execute.
2741         (compute_points_to_sets): Adjust.
2742         (ipa_pta_execute): Likewise.  Handle clones and externally visible
2743         functions like in non-IPA mode.
2744
2745 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
2746
2747         PR c/41842
2748         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
2749         error_mark_node.
2750
2751 2009-10-27  Richard Guenther  <rguenther@suse.de>
2752
2753         * tree-complex.c (expand_complex_div_wide): Check for
2754         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
2755
2756 2009-10-27  Revital Eres  <eres@il.ibm.com>
2757
2758         PR tree-optimization/40648
2759         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
2760         Change decision of when to peel for alignment.
2761
2762 2009-10-27  Richard Guenther  <rguenther@suse.de>
2763
2764         PR lto/41821
2765         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
2766
2767 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
2768
2769         PR bootstrap/41451
2770         * fold-const.c (fold_binary_loc): Do not call
2771         protected_set_expr_location.
2772
2773 2009-10-27  Wei Guozhi  <carrot@google.com>
2774
2775         PR target/41705
2776         * target.h (have_conditional_execution): Add a new target hook
2777         function.
2778         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
2779         * targhooks.h (default_have_conditional_execution): Likewise.
2780         * targhooks.c (default_have_conditional_execution): Likewise.
2781         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
2782         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
2783         (arm_have_conditional_execution): New function.
2784         * ifcvt.c (noce_process_if_block, find_if_header,
2785         cond_exec_find_if_block, dead_or_predicable): Change the usage of
2786         macro HAVE_conditional_execution to a target hook call.
2787         * recog.c (peephole2_optimize): Likewise.
2788         * sched-rgn.c (add_branch_dependences): Likewise.
2789         * final.c (asm_insn_count, final_scan_insn): Likewise.
2790         * bb-reorder.c (HAVE_conditional_execution): Remove it.
2791
2792 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2793             Michael Meissner  <meissner@linux.vnet.ibm.com>
2794             Ulrich Weigand  <uweigand@de.ibm.com>
2795
2796         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
2797         * config/spu/spu_cache.h: New file.
2798
2799         * config/spu/cachemgr.c: New file.
2800         * config/spu/cache.S: New file.
2801
2802         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
2803         (ADDR_SPACE_EA): Define.
2804         (TARGET_ADDR_SPACE_KEYWORDS): Define.
2805         * config/spu/spu.c (EAmode): New macro.
2806         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
2807         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2808         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
2809         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
2810         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
2811         (TARGET_ADDR_SPACE_CONVERT): Likewise.
2812         (TARGET_ASM_SELECT_SECTION): Likewise.
2813         (TARGET_ASM_UNIQUE_SECTION): Likewise.
2814         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
2815         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
2816         (ea_symbol_ref): New function.
2817         (spu_legitimate_constant_p): Handle __ea qualified addresses.
2818         (spu_addr_space_legitimate_address_p): New function.
2819         (spu_addr_space_legitimize_address): Likewise.
2820         (cache_fetch): New global.
2821         (cache_fetch_dirty): Likewise.
2822         (ea_alias_set): Likewise.
2823         (ea_load_store): New function.
2824         (ea_load_store_inline): Likewise.
2825         (expand_ea_mem): Likewise.
2826         (spu_expand_mov): Handle __ea qualified memory references.
2827         (spu_addr_space_pointer_mode): New function.
2828         (spu_addr_space_address_mode): Likewise.
2829         (spu_addr_space_subset_p): Likewise.
2830         (spu_addr_space_convert): Likewise.
2831         (spu_section_type_flags): Handle "._ea" section.
2832         (spu_select_section): New function.
2833         (spu_unique_section): Likewise.
2834         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
2835         and __EA64__ predefined macros.
2836         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
2837         -matomic-updates switches.
2838
2839         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
2840         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
2841         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
2842         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
2843         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
2844         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
2845         $(T)cache128k.o): Likewise.
2846         ($(T)libgcc_%.a): Likewise.
2847
2848         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
2849         * config/spu/spu.opt (-mea32/-mea64): Add switches.
2850         (-maddress-space-conversion): Likewise.
2851         (-mcache-size=): Likewise.
2852         (-matomic-updates): Likewise.
2853         * doc/invoke.texi (-mea32/-mea64): Document.
2854         (-maddress-space-conversion): Likewise.
2855         (-mcache-size=): Likewise.
2856         (-matomic-updates): Likewise.
2857
2858 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2859             Michael Meissner  <meissner@linux.vnet.ibm.com>
2860             Ulrich Weigand  <uweigand@de.ibm.com>
2861
2862         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
2863
2864         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
2865         defined, add the named address space keywords.
2866         (c_addr_space_name): New function.
2867         (complete_array_type): Preserve named address space.
2868         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
2869         instead of targetm.valid_pointer_mode.
2870
2871         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
2872         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
2873         (ADDR_SPACE_KEYWORD): New macro.
2874         (c_addr_space_name): Add prototype.
2875
2876         * c-tree.h (struct c_declspecs): Add address_space member.
2877         (declspecs_add_addrspace): Add prototype.
2878
2879         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
2880
2881         * c-parser.c (c_parse_init): Add assertion.
2882         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
2883         (c_lex_one_token): Handle address space keywords.
2884         (c_token_starts_typename): Likewise.
2885         (c_token_starts_declspecs): Likewise.
2886         (c_parser_declspecs): Likewise.
2887         (c_parser_postfix_expression_after_paren_type): Diagnose compound
2888         literal within function qualified with named address space.
2889
2890         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
2891         address space qualifiers.
2892         (shadow_tag_warned): Warn about useless address space qualifiers.
2893         (quals_from_declspecs): Handle address space qualifiers.
2894         (grokdeclarator): Likewise.
2895         (build_null_declspecs): Likewise.
2896         (declspecs_add_addrspace): New function.
2897
2898         * c-typeck.c (addr_space_superset): New function.
2899         (qualify_type): Handle named address spaces.
2900         (composite_type): Likewise.
2901         (common_pointer_type): Likewise.
2902         (comp_target_types): Likewise.
2903         (build_conditional_expr): Likewise.
2904         (handle_warn_cast_qual): Likewise.
2905         (build_c_cast): Likewise.
2906         (convert_for_assignment): Likewise.
2907         (build_binary_op): Likewise.
2908         (pointer_diff): Handle named address spaces.  Use intermediate
2909         integer type of sufficient size if required.
2910
2911 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2912             Michael Meissner  <meissner@linux.vnet.ibm.com>
2913             Ulrich Weigand  <uweigand@de.ibm.com>
2914
2915         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
2916         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2917         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
2918
2919         * target.h (struct target_def): Add pointer_mode, address_mode,
2920         and valid_pointer_mode to addr_space substructure.
2921         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
2922         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2923         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
2924         (TARGET_ADDR_SPACE_HOOKS): Add them.
2925         * targhooks.c (target_default_pointer_address_modes_p): New function.
2926         * target.h (target_default_pointer_address_modes_p): Add prototype.
2927         * targhooks.c (default_addr_space_pointer_mode): New function.
2928         (default_addr_space_address_mode): Likewise.
2929         (default_addr_space_valid_pointer_mode): Likewise.
2930         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
2931         (default_addr_space_address_mode): Likewise.
2932         (default_addr_space_valid_pointer_mode): Likewise.
2933         * output.h (default_valid_pointer_mode): Move to ...
2934         * targhooks.h (default_valid_pointer_mode): ... here.
2935         * varasm.c (default_valid_pointer_mode): Move to ...
2936         * targhooks.c (default_valid_pointer_mode): ... here.
2937
2938         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
2939         instead of targetm.valid_pointer_mode.
2940
2941         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
2942         * tree.c (integer_pow2p): Likewise.
2943         (tree_log2): Likewise.
2944         (tree_floor_log2): Likewise.
2945         (signed_or_unsigned_type_for): Support pointer type of different size.
2946         (int_or_pointer_precision): New function.
2947         * tree.h (int_or_pointer_precision): Add prototype.
2948         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
2949         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
2950         incoming pointer type instead of POINTER_SIZE.
2951
2952         * tree.c (build_pointer_type): Use appropriate pointer mode
2953         instead of ptr_mode.
2954         (build_reference_type): Likewise.
2955         * expr.c (store_expr): Likewise.
2956         (expand_expr_addr_expr): Likewise.
2957         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
2958         * cfgexpand.c (expand_debug_expr): Likewise.
2959
2960         * auto-inc-dec.c: Include "target.h".
2961         (try_merge): Use appropriate address mode instead of Pmode.
2962         (find_inc): Likewise.
2963         * combine.c (find_split_point): Likewise.
2964         * cselib.c (cselib_record_sets): Likewise.
2965         * dse.c (replace_inc_dec): Likewise.
2966         (canon_address): Likewise.
2967         * var-tracking.c (replace_expr_with_values): Likewise.
2968         (count_uses): Likewise.
2969         (add_uses): Likewise.
2970         (add_stores): Likewise.
2971         * emit-rtl.c: Include "target.h".
2972         (adjust_address_1): Use appropriate address mode instead of Pmode.
2973         (offset_address): Likewise.
2974         * explow.c (break_out_memory_refs): Likewise.
2975         (memory_address_addr_space): Likewise.
2976         (promote_mode): Likewise.
2977         * expr.c (move_by_pieces): Likewise.
2978         (emit_block_move_via_loop): Likewise.
2979         (store_by_pieces): Likewise.
2980         (store_by_pieces_1): Likewise.
2981         (expand_assignment): Likewise.
2982         (store_constructor): Likewise.
2983         (expand_expr_addr_expr): Likewise.
2984         (expand_expr_real_1): Likewise.
2985         * cfgexpand.c (expand_debug_expr): Likewise.
2986         * ifcvt.c (noce_try_cmove_arith): Likewise.
2987         * regcprop.c (kill_autoinc_value): Likewise.
2988         * regmove.c (try_auto_increment): Likewise.
2989         * reload.c (find_reloads): Likewise.
2990         (find_reloads_address): Likewise.
2991         (find_reloads_address_1): Likewise.
2992         * sched-deps.c: Include "target.h".
2993         (sched_analyze_1): Use appropriate address mode instead of Pmode.
2994         (sched_analyze_2): Likewise.
2995         * sel-sched-dump.c: Include "target.h".
2996         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
2997         * stor-layout.c (layout_type): Likewise.
2998         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
2999         (multiplier_allowed_in_address_p): Likewise.
3000         (get_address_cost): Likewise.
3001         * varasm.c (make_decl_rtl): Likewise.
3002
3003         * expr.c (expand_assignment): Always convert offsets to appropriate
3004         address mode.
3005         (store_expr): Likewise.
3006         (store_constructor): Likewise.
3007         (expand_expr_real_1): Likewise.
3008
3009         * reload.h (form_sum): Add MODE argument.
3010         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
3011         Update recursive calls.
3012         (subst_indexed_address): Update calls to form_sum.
3013
3014         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
3015         * tree-ssa-address.c: Include "target.h".
3016         (templates): Replace by ...
3017         (mem_addr_template_list): ... this new vector.
3018         (TEMPL_IDX): Handle address space numbers.
3019         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
3020         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
3021         instead of global cache.  Update call to gen_addr_rtx.
3022         (valid_mem_ref_p): Update call to addr_for_mem_ref.
3023         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
3024
3025         * rtl.h (convert_memory_address_addr_space): Add prototype.
3026         (convert_memory_address): Define as macro.
3027         * explow.c (convert_memory_address): Rename to ...
3028         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
3029         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
3030         Update recursive calls.
3031         (memory_address_addr_space): Call convert_memory_address_addr_space.
3032         * expmed.c (make_tree): Likewise.
3033         * expr.c (expand_assignment): Likewise.
3034         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
3035         (expand_expr_addr_expr): Likewise.  Also, update call.
3036
3037         * alias.c (find_base_value): Guard pointer size optimizations.
3038         (find_base_term): Likewise.
3039         * rtlanal.c (nonzero_bits1): Likewise.
3040         (num_sign_bit_copies1): Likewise.
3041         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
3042
3043         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
3044         (emit-rtl.o): Likewise.
3045         (auto-inc-dec.o): Likewise.
3046         (sched-deps.o): Likewise.
3047
3048 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3049             Michael Meissner  <meissner@linux.vnet.ibm.com>
3050             Ulrich Weigand  <uweigand@de.ibm.com>
3051
3052         * doc/extend.texi (Named Address Spaces): New section.
3053         * coretypes.h (addr_space_t): New type.
3054         (ADDR_SPACE_GENERIC): New define.
3055         (ADDR_SPACE_GENERIC_P): New macro.
3056
3057         * doc/tm.texi (Named Address Spaces): New section.
3058         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
3059         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
3060         (TARGET_ADDR_SPACE_SUBSET_P): Document.
3061         (TARGET_ADDR_SPACE_CONVERT): Document.
3062         * target.h (struct gcc_target): Add addr_space substructure.
3063         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
3064         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
3065         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
3066         (TARGET_ADDR_SPACE_CONVERT): Likewise.
3067         (TARGET_ADDR_SPACE_HOOKS): Likewise.
3068         (TARGET_INITIALIZER): Initialize addr_space hooks.
3069         * targhooks.c (default_addr_space_legitimate_address_p): New function.
3070         (default_addr_space_legitimize_address): Likewise.
3071         (default_addr_space_subset_p): Likewise.
3072         (default_addr_space_convert): Likewise.
3073         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
3074         (default_addr_space_legitimize_address): Likewise.
3075         (default_addr_space_subset_p): Likewise.
3076         (default_addr_space_convert): Likewise.
3077
3078         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
3079         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
3080         (MEM_ADDR_SPACE): New macro.
3081         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
3082         address space memory attribute.
3083         (mem_attrs_htab_hash): Handle address space memory attribute.
3084         (mem_attrs_htab_eq): Likewise.
3085         (set_mem_attributes_minus_bitpos): Likewise.
3086         (set_mem_alias_set): Likewise.
3087         (set_mem_align): Likewise.
3088         (set_mem_expr): Likewise.
3089         (set_mem_offset): Likewise.
3090         (set_mem_size): Likewise.
3091         (adjust_address_1): Likewise.
3092         (offset_address): Likewise.
3093         (widen_memoy_address): Likewise.
3094         (get_spill_slot_decl): Likewise.
3095         (set_mem_attrs_for_spill): Likewise.
3096         (set_mem_addr_space): New function.
3097         * emit-rtl.h (set_mem_addr_space): Add prototype.
3098         * print-rtl.c (print_rtx): Print address space memory attribute.
3099         * expr.c (expand_assignment): Set address space memory attribute
3100         of generated MEM RTXes as appropriate.
3101         (expand_expr_real_1): Likewise.
3102         * cfgexpand.c (expand_debug_expr): Likewise.
3103         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
3104
3105         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
3106         size of "spare" bitfield.
3107         (TYPE_ADDR_SPACE): New macro.
3108         (ENCODE_QUAL_ADDR_SPACE): Likewise.
3109         (DECODE_QUAL_ADDR_SPACE): Likewise.
3110         (CLEAR_QUAL_ADDR_SPACE): Likewise.
3111         (KEEP_QUAL_ADDR_SPACE): Likewise.
3112         (TYPE_QUALS): Encode type address space.
3113         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
3114         * tree.c (set_type_quals): Set type address space.
3115         (build_array_type): Inherit array address space from element type.
3116         * print-tree.c (print_node_brief): Print type address space.
3117         (print_node): Likewise.
3118         * tree-pretty-print.c (dump_generic_node): Likewise.
3119
3120         * explow.c (memory_address): Rename to ...
3121         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
3122         Use address-space aware variants of memory address routines.
3123         * recog.c (memory_address_p): Rename to ...
3124         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3125         Use address-space aware variants of memory address routines.
3126         (offsettable_address_p): Rename to ...
3127         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
3128         Use address-space aware variants of memory address routines.
3129         * reload.c (strict_memory_address_p): Rename to ...
3130         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3131         Use address-space aware variants of memory address routines.
3132         (maybe_memory_address_p): Rename to ...
3133         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3134         Use address-space aware variants of memory address routines.
3135         * expr.h (memory_address_addr_space): Add prototype.
3136         (memory_address): Define as macro.
3137         * recog.h (memory_address_addr_space_p): Add prototype.
3138         (memory_address_p): Define as macro.
3139         (offsettable_address_addr_space_p): Add prototype.
3140         (offsettable_address_p): Define as macro.
3141         (strict_memory_address_addr_space_p): Add prototype.
3142         (strict_memory_address_p): Define as macro.
3143
3144         * combine.c (find_split_point): Use address-space aware variants
3145         of memory address routines.
3146         * emit-rtl.c (operand_subword): Likewise.
3147         (change_address_1): Likewise.
3148         (adjust_address_1): Likewise.
3149         (offset_address): Likewise.
3150         * expr.c (emit_move_insn): Likewise.
3151         (expand_assignment): Likewise.
3152         (expand_expr_real_1): Likewise.
3153         * recog.c (verify_changes): Likewise.
3154         (general_operand): Likewise.
3155         (offsettable_memref_p): Likewise.
3156         (offsettable_nonstrict_memref_p): Likewise.
3157         (constrain_operands): Likewise.
3158         * reload.c (get_secondary_mem): Likewise.
3159         (find_reloads_toplev): Likewise.
3160         (find_reloads_address): Likewise.
3161         (find_reloads_subreg_address): Likewise.
3162         * reload1.c (reload): Likewise.
3163         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
3164         * rtl.h (address_cost): Add ADDRSPACE argument.
3165         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
3166         aware variant of memory address routines.
3167         * loop-invariant.c (create_new_invariant): Update address_cost call.
3168         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
3169         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
3170         Use address-space aware variant of memory address routines.
3171         (propagate_rtx_1): Update call to should_replace_address.
3172         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
3173         argument.
3174         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
3175         ADDRSPACE argument.  Use per-address-space instead of global cache.
3176         Use address-space aware variant of memory address routines.
3177         (get_address_cost): Likewise.
3178         (get_computation_cost_at): Update calls.
3179         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
3180         Use address-space aware variant of memory address routines.
3181         (create_mem_ref_raw): Update call to valid_mem_ref_p.
3182         (most_expensive_mult_to_index): Update call to
3183         multiplier_allowed_in_address_p.
3184
3185         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
3186         attribute to indicate named address spaces.
3187
3188         * varasm.c (get_variable_section): DECLs in named address spaces
3189         cannot be "common".
3190
3191         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
3192         for addresses in a non-generic address space.
3193
3194         * expr.c (emit_block_move_hints): Do not use libcalls for
3195         memory in non-generic address spaces.
3196         (clear_storage_hints): Likewise.
3197         (expand_assignment): Likewise.
3198
3199         * fold-const.c (operand_equal_p): Expressions refering to different
3200         address spaces are not equivalent.
3201
3202         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
3203         spaces are not equivalent.
3204         (rtx_equal_p): Likewise.
3205         * cse.c (exp_equiv_p): Likewise.
3206         * jump.c (rtx_renumbered_equal_p): Likewise.
3207         * reload.c (operands_match_p): Likewise.
3208
3209         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
3210         address spaces may alias.
3211         (true_dependence): Likewise.
3212         (canon_true_dependence): Likewise.
3213         (write_dependence_p): Likewise.
3214
3215         * dse.c (canon_address): Handle named address spaces.
3216         * ifcvt.c (noce_try_cmove_arith): Likewise.
3217
3218         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
3219         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
3220         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
3221         to handle conversions between different address spaces.
3222         * fold-const.c (fold_convert_loc): Likewise.
3223         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
3224         * tree-pretty-print.c (dump_generic_node): Likewise.
3225         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
3226         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
3227         * tree-inline.c (estimate_operator_cost): Likewise.
3228         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
3229         to different address spaces are not useless.
3230
3231 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
3232
3233         PR bootstrap/41345
3234         * cfgcleanup.c (trivially_empty_bb_p): New function.
3235         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
3236
3237         PR debug/41828
3238         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
3239         add_name_and_src_coords_attributes, gen_namespace_die,
3240         dwarf2out_set_name): Handle dwarf2_name returning NULL.
3241
3242 2009-10-26  Nick Clifton  <nickc@redhat.com>
3243
3244         * config.gcc: Add support for RX target.
3245         * config/rx: New directory.
3246         * config/rx/constraints.md: New file.
3247         * config/rx/predicates.md: New file.
3248         * config/rx/rx.c: New file.
3249         * config/rx/rx.h: New file.
3250         * config/rx/rx.md: New file.
3251         * config/rx/rx.opt: New file.
3252         * config/rx/rx-protos.h: New file.
3253         * config/rx/t-rx: New file.
3254         * doc/extend.texi: Document RX function attributes.
3255         * doc/invoke.texi: Document RX specific command line options.
3256         * doc/contrib.texi: Document RX contribution.
3257         * doc/md.texi: Document RX constraints.
3258         * doc/install.texi: Document RX support.
3259
3260 2009-10-26  Michael Matz  <matz@suse.de>
3261
3262         PR tree-optimization/41783
3263         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
3264         case for simple diamonds.
3265         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
3266         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
3267         argument, use alias oracle to skip some vdefs.
3268         (phi_translate_1): Change call to above, don't allocate new
3269         value ids if they can stay the same.
3270         (compute_avail): Allow vuse walking when looking up references.
3271
3272 2009-10-26  Richard Guenther  <rguenther@suse.de>
3273
3274         PR tree-optimization/41826
3275         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
3276         access to re-allocated vector fields.
3277
3278 2009-10-26  Richard Guenther  <rguenther@suse.de>
3279
3280         * graphite-sese-to-poly.c (check_poly_representation): Fix
3281         compile without checking.
3282
3283 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
3284
3285         PR fortran/41714
3286         * gimple.h (tree_annotate_all_with_location): Remove prototype.
3287         * gimplify.c (tree_should_carry_location_p,
3288         tree_annotate_one_with_location,tree_annotate_all_with_location):
3289         Remove obsolete functions.
3290
3291 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
3292
3293         PR target/41813
3294         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
3295
3296 2009-10-25  Richard Guenther  <rguenther@suse.de>
3297
3298         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
3299         Stream DECL_RESTRICTED_P.
3300         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
3301
3302 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
3303
3304         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
3305         a note when expanding to nothing.
3306
3307 2009-10-25  Richard Guenther  <rguenther@suse.de>
3308
3309         PR middle-end/41814
3310         * tree.c (find_decls_types_r): Deal with Java overloading
3311         BINFO_VIRTUALS for its own purpose.
3312
3313 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
3314
3315         * config/mips/predicates.md (hilo_operand): New predicate.
3316         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
3317         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
3318         splitter part from here ...:
3319         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
3320         op0 and op4 to match the DINS case.
3321         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
3322
3323 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
3324
3325         PR middle-end/19154
3326         * avr.md (QIDI): Add new mode iterator.
3327         (sbrx_branch<mode>): Create new zero extract bit, test and jump
3328         patterns for all QI thru DI modes combinations.
3329         (sbrx_and_branch<mode>): Create new and based bit test and jump
3330         patterns for QI thru SI modes.
3331         avr.c (avr_out_sbxx_branch): Use only bit number.
3332
3333 2009-10-24  Jan Hubicka  <jh@suse.cz>
3334
3335         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
3336         to memory.
3337         (analyze_function): When analyzing noreturn nothrow call, do not
3338         compute written stats; free bitmaps of vars early if possible.
3339         (generate_summary): Only update bitmaps if computed.
3340         (propagate): Only dump bitmaps if computed.
3341         (ipa_reference_read_summary): Fix pasto.
3342
3343 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
3344
3345         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
3346         (aliasing_component_refs_p): ...this.  Return true if there is no
3347         common base and the base access types have the same alias set.
3348         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
3349         (indirect_refs_may_alias_p): Likewise.
3350
3351 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
3352
3353         PR c/40033
3354         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
3355         a C_MAYBE_CONST_EXPR.
3356
3357 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
3358
3359         PR target/41787
3360         * config/rs6000/rs6000.c (struct machine_function): Add
3361         vsx_or_altivec_used_p to record if vector types are used.
3362         (rs6000_expand_to_rtl_hook): Rename from
3363         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
3364         any vector operations, so if there are, we can set VRSAVE to
3365         non-zero when only floating point vector registers are used.
3366         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
3367         (rs6000_check_vector_mode): Inner function to check if vector
3368         types are used in the code.
3369         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
3370         vector instructions are used.
3371
3372         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
3373         Indicate that VSX registers which overlap floating point
3374         registers, can't be used across a call, since the ABI only states
3375         the scalar part of the register will be saved and restored.
3376
3377 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
3378
3379         PR c/41673
3380         * alias.c (get_alias_set): Call langhook before returning 0 for
3381         types with structural equality.
3382         * c-common.c (c_common_get_alias_set): Use alias set of element
3383         type for arrays with structural comparison.
3384
3385 2009-10-23  Richard Guenther  <rguenther@suse.de>
3386
3387         PR middle-end/41805
3388         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
3389         gimple_call_nothrow_p.
3390
3391 2009-10-23  Richard Guenther  <rguenther@suse.de>
3392
3393         PR tree-optimization/41778
3394         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
3395         redundancy along a path in the CFG we want to optimize for speed
3396         is going to be removed.
3397         (execute_pre): Do partial-PRE only if the function is to be
3398         optimized for speed.
3399         (gate_pre): Do not turn off all of PRE when not optimizing a
3400         function for speed.
3401
3402 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3403
3404         * builtins.c (fold_builtin_cabs): Use validate_arg().
3405         (fold_builtin_cexp): Fix if-logic.
3406         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
3407
3408 2009-10-22  Jeff Law  <law@redhat.com>
3409
3410         * ira-lives.c (process_single_reg_class_operands): Update the
3411         hard reg costs for all the hard registers desired by the
3412         single reg class operand.
3413
3414 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
3415
3416         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
3417         for rtxes that aren't handled specially.
3418
3419 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
3420
3421         * rtl.h (shallow_copy_rtvec): Declare.
3422         * rtl.c (shallow_copy_rtvec): New function.
3423         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
3424         rtx field if the subrtx has changed.
3425
3426 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
3427
3428         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
3429         (m32c_function_value): Make static, add new 'outgoing' argument.
3430         (m32c_libcall_value): Make static, add new 'fun' argument.
3431         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3432         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3433         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
3434         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
3435         (m32c_function_value, m32c_libcall_value): Delete declaration.
3436
3437 2009-10-22  Diego Novillo  <dnovillo@google.com>
3438
3439         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
3440
3441 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
3442
3443         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
3444         space.
3445
3446 2009-10-22  Richard Guenther  <rguenther@suse.de>
3447
3448         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
3449         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
3450         (lto_symtab_merge): Do not merge cgraph nodes here.
3451         (lto_symtab_resolve_can_prevail_p): Simplify.
3452         (lto_symtab_resolve_symbols): Store cgraph node.
3453         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
3454         functions from the symtab.
3455         (lto_symtab_merge_cgraph_nodes_1): New function.
3456         (lto_symtab_merge_cgraph_nodes): Likewise.
3457
3458 2009-10-22  Richard Guenther  <rguenther@suse.de>
3459
3460         PR lto/41791
3461         * lto-streamer-out.c (lto_output_location): Stream the
3462         system header flag.
3463         * lto-streamer-in.c (lto_input_location): Likewise.
3464
3465 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
3466
3467         * cfgloopmanip.c (duplicate_subloops): Export.
3468         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
3469         (transform_to_exit_first_loop): Duplicate bbs starting from
3470         header up to loop->latch instead of exit->src.
3471         Initialize control variable to the correct number of iterations.
3472         (gather_scalar_reductions): Do not register double reductions.
3473         (parallelize_loops): Dump which loop is tested.
3474         Indicate whether the parallelized loop is inner or not.
3475         Remove the innermost-loop requirement.
3476         * cfgloop.h (duplicate_subloops): Export.
3477         * tree-cfg.c (add_phi_args_after_redirect): New function.
3478         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
3479         Call duplicate_subloops.
3480         Update number of iterations at the exit condition.
3481         Don't redirect nexits always to the loop exit.
3482         Redirect copied edges from latch to the loop exit.
3483
3484 2009-10-22  Jan Hubicka  <jh@suse.cz>
3485
3486         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
3487         flag_ltrans check.
3488         * ipa-inline.c (cgraph_mark_inline_edge,
3489         cgraph_decide_inlining_of_small_function,
3490         cgraph_decide_inlining, inline_read_summary): Disable indirect
3491         inlining for WPA for time being.
3492
3493         PR tree-optimize/40556
3494         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
3495
3496 2009-10-22  Richard Guenther  <rguenther@suse.de>
3497
3498         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
3499         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
3500
3501 2009-10-22  Jan Hubicka  <jh@suse.cz>
3502
3503         PR lto/41730
3504         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
3505         global vars.
3506         (check_call): Handle only indirect calls.
3507         (propagate_bits): Update comment.
3508         (write_node_summary_p): Turn bogus check to assert.
3509         (ipa_reference_write_summary): Stream calls_read_all properly.
3510         (ipa_reference_read_summary): Stream in calls_read_all properly.
3511         (read_write_all_from_decl): New function.
3512         (propagate): Handle OVERWRITABLE nodes and external calls here.
3513         * ipa-pre-const.c (check_call): In IPA mode handle indirect
3514         calls only.
3515         (analyze_function): Do not check visibility here.
3516         (add_new_function): We summary OVERWRITABLE too.
3517         (generate_summary): Stream OVERWRITABLE nodes too.
3518         (propagate): Handle external calls and OVERWRITABLE nodes here.
3519         (local_pure_const): Check visibility here.
3520
3521 2009-10-22  Jan Hubicka  <jh@suse.cz>
3522
3523         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
3524         (pass_ipa_cp): Register them.
3525         (ipcp_init_stage): Analyze all functions for whopr/lto.
3526         (ipcp_propagate_stage): Skip external calls.
3527         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
3528         * ipa-reference.c (write_node_summary_p): Fix thinko about
3529         availability.
3530         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
3531         when in ltrans, skip executing of ipa passes since everything
3532         should've been done.
3533         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
3534         (inline_generate_summary): Likewise.
3535         (inline_read_summary): New function.
3536         (inline_write_summary): New function.
3537         (pass_ipa_inline): Register new hooks.
3538         * ipa-prop.c: Inlcude lto-streamer.h
3539         (ipa_edge_args_vector): Update declaration.
3540         (ipa_count_arguments, ipa_compute_jump_functions,
3541         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
3542         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
3543         ipa_read_node_info): New static functions.
3544         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
3545         (duplicate_array): Use xmalloc.
3546         (duplicate_ggc_array): New.
3547         (ipa_edge_duplication_hook): Use it.
3548         (ipa_update_after_lto_read): New function.
3549         * ipa-prop.h (ipa_prop_write_jump_functions,
3550         ipa_prop_read_jump_functions): Declare.
3551         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
3552         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
3553         (ipa_edge_args_vector): Move into GGC.
3554         (ipa_check_create_edge_args): Update.
3555         (ipa_update_after_lto_read): New.
3556         * passes.c (ipa_write_summaries_1): When in wpa, do not write
3557         summaries.
3558         (ipa_read_summaries): When in ltrans, so not read summaries.
3559         * lto-streamer.c (lto_get_section_name): Add
3560         LTO_section_jump_functions.
3561         * lto-streamer.h (LTO_section_jump_functions): New section.
3562         (produce_asm): Declare.
3563         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
3564         * lto-streamer-out.c (produce_asm): Export.
3565         * lto-streamer-in.c: Include tree-pass.h
3566         (input_function): Free dominance info when done.
3567         (lto_read_body): Push ipa_inline in ltrans stage.
3568         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
3569         * Makefile.in (GTFILES): Add ipa-prop.h
3570
3571 2009-10-22  Matthias Klose  <doko@ubuntu.com>
3572
3573         * doc/install.texi: Document --enable-browser-plugin.
3574
3575 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
3576
3577         * doc/invoke.texi (fira-loop-pressure): Update default value.
3578         * opts.c (decode_options): Remove default value setting for
3579         flag_ira_loop_pressure.
3580         * config/ia64/ia64.c (ia64_override_options): Set
3581         flag_ira_loop_pressure up for -O3.
3582         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
3583
3584 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
3585
3586         PR tree-optimization/41497
3587         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
3588         chrec_dont_know if the evolution function returned by follow_ssa_edge
3589         is constant in the analyzed loop and is not compatible with the
3590         initial value before the loop.
3591         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
3592
3593 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
3594
3595         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
3596
3597 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
3598
3599         PR other/25507
3600         * doc/invoke.texi: Document -print-multi-os-directory.
3601
3602 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
3603
3604         PR c++/41313
3605         * gcc/config/darwin10.h: Use default_emit_unwind_label.
3606         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
3607         when darwin_emit_unwind_label is used.
3608
3609 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
3610
3611         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
3612         order of checks.
3613
3614 2009-10-20  Richard Henderson  <rth@redhat.com>
3615
3616         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
3617         before emit_post_landing_pad.
3618
3619 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
3620
3621         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
3622         Use when calling rtx_costs.
3623         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
3624         global optimize_size.  Pass speed to mips_binary_cost.
3625
3626 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
3627
3628         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
3629         of TREE_CONSTANT.
3630
3631 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
3632
3633         * rtl.h (simplify_replace_fn_rtx): Declare.
3634         (wrap_constant, unwrap_constant): Delete.
3635         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
3636         (expand_debug_expr): Don't call wrap_constant.
3637         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
3638         (auto_adjust_pair): Fold into...
3639         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
3640         Just return a new value.
3641         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
3642         otherwise use simplify_replace_rtx.
3643         * cselib.c (wrap_constant): Reinstate old definition.
3644         (cselib_expand_value_rtx_1): Don't wrap constants.
3645         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
3646         simplify_replace_rtx.
3647         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
3648         * reload1.c (reload): Skip all uses for an insn before adjusting it.
3649         Use simplify_replace_rtx.
3650         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
3651         adapted from...
3652         (simplify_replace_rtx): ...here.  Turn into a wrapper for
3653         simplify_replace_fn_rtx.
3654         (simplify_unary_operation): Don't unwrap CONSTs.
3655         * var-tracking.c (check_wrap_constant): Delete.
3656         (vt_expand_loc_callback): Don't call it.
3657         (vt_expand_loc): Likewise.
3658
3659 2009-10-20  Pascal Obry  <obry@adacore.com>
3660             Eric Botcazou  <ebotcazou@adacore.com>
3661
3662         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
3663
3664 2009-10-20  Michael Matz  <matz@suse.de>
3665
3666         * loop-invariant.c (create_new_invariant): Use different magic number.
3667
3668 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
3669
3670         PR target/39247
3671         * arm.c (arm_override_options): Forcibly disable hot/cold block
3672         partitioning.
3673
3674 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
3675
3676         PR debug/41739
3677         * haifa-sched.c (try_ready): Skip debug deps updating speculation
3678         status.
3679
3680 2009-10-20  Richard Guenther  <rguenther@suse.de>
3681
3682         * ggc-page.c: Include cfgloop.h.
3683         (struct max_alignment): Drop long double, add void *.
3684         (extra_order_size_table): Add low non-power-of-two multiples
3685         of MAX_ALIGNMENT.  Drop small type-based entries, add
3686         tree_type, cgraph_node and loop.
3687         * alloc-pool.c (struct allocation_object_def): Drop long double
3688         aligning element.
3689
3690 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
3691
3692         PR debug/41340
3693         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
3694         referenced just in DEBUG_INSNs.
3695
3696 2009-10-20  Richard Guenther  <rguenther@suse.de>
3697
3698         PR lto/41761
3699         * gimple.c (gimple_register_type): Make sure we register
3700         the types main variant first.
3701
3702 2009-10-20  Richard Guenther  <rguenther@suse.de>
3703
3704         * gimple.c (gimple_types_compatible_p): Simplify.  Move
3705         cheap checks before hashtable queries.  Add checks for
3706         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
3707
3708 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
3709
3710         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
3711         without size or with size that can't be represented as a host integer.
3712
3713 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
3714
3715         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
3716         the removal of a debug stmt as a significant change.
3717
3718 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
3719
3720         * config/s390/s390.md: Added agen condition to operand
3721         forwarding bypasses.  Added bypass for early address generation
3722         use of int results.  Updated comments.
3723
3724 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
3725
3726         * config/i386/i386.c: Remove signal.h #include.
3727
3728 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
3729
3730         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
3731         * doc/rtl.texi: Document ss_abs.
3732
3733 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3734
3735         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
3736         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
3737         instead of C_LEX_RAW_STRINGS.
3738         (lex_string): Handle CPP_UTF8STRING.
3739         * c-parser.c (c_parser_postfix_expression): Likewise.
3740         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
3741         (C_LEX_STRING_NO_JOIN): ... this.
3742
3743 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
3744
3745         * config/cris/cris.c (cris_function_value, cris_libcall_value,
3746         cris_function_value_regno_p): New functions.
3747         (cris_promote_function_mode): Update comment.
3748         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3749         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3750         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
3751         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
3752
3753 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3754
3755         * unwind-dw2.c (execute_stack_op): Fix operand order for
3756         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
3757
3758 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
3759
3760         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
3761         (lower_stmt) <GIMPLE_BIND>: Add comment.
3762         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
3763         and return.
3764         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
3765         Otherwise lower it and set cannot_fallthru to true.
3766         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
3767         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
3768         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
3769         to true for a noreturn call.  Do not remove statements.
3770         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
3771         Set cannot_fallthru to false on function exit.
3772         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
3773         <GIMPLE_ASSIGN>: Remove.
3774
3775 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3776
3777         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
3778
3779 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3780
3781         * config/s390/s390.c (s390_z10_optimize_cmp): Use
3782         next/prev_active_insn to skip DEBUG_INSNs as well.
3783
3784 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
3785
3786         * config/arm/arm.c (output_move_neon): Use DImode in call to
3787         adjust_address.
3788
3789 2009-10-19  Matthias Klose  <doko@ubuntu.com>
3790
3791         PR target/40134
3792         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
3793
3794 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3795
3796         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
3797
3798 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
3799
3800         PR middle-end/41738
3801         * optabs.c (expand_binop): Make mode of shift count expression mode
3802         of shift count not target.
3803         Remove indent nit.
3804
3805 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3806
3807         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
3808         case.  Force using values to replace references within the statement.
3809         (convert_local_reference_stmt): Likewise.
3810
3811 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3812
3813         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
3814         remove a subsequent GOTO or RETURN statement.
3815
3816 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
3817
3818         * config/avr.md (*movqi): Add zero as equally preferable constraint
3819         as general register.
3820         (*movhi): Ditto.
3821
3822 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3823
3824         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
3825
3826 2009-10-17  Richard Guenther  <rguenther@suse.de>
3827
3828         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
3829
3830 2009-10-17  Richard Guenther  <rguenther@suse.de>
3831
3832         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
3833         operands in COMPONENT_REFs.
3834
3835 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
3836
3837         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
3838         if not defined. Change type of second argument to const_rtx.
3839         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
3840         macro not defined.
3841         * targhooks.h (default_libcall_value): Update prototype.
3842         * target.h (struct gcc_target): Change type of second argument of
3843         libcall_value to const_rtx.
3844         * config/arm/arm.c (arm_libcall_value): Change type of second argument
3845         to const_rtx.
3846         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
3847         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
3848
3849 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
3850
3851         PR debug/40521
3852         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
3853         * cgraphunit.c (cgraph_optimize): Call it.
3854         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
3855         (dwarf2out_assembly_start): ... here.  New hook.
3856         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
3857         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
3858         hook.
3859         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
3860         * sdbout.c (sdb_debug_hooks): Likewise.
3861         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
3862         (vmsdbgout_assembly_start): New hook.
3863
3864 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3865
3866         * rtl.h (RTL_LOCATION): Fix typo.
3867
3868 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3869
3870         * print-rtl.c (print_rtx): Print locators in asm_operands
3871         and asm_input.
3872
3873 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3874
3875         PR debug/41535
3876         * sched-deps.c (depl_on_debug_p): New.
3877         (attach_dep_link): Reject debug deps before nondebug deps.
3878         (add_to_deps_list): Insert debug deps after nondebug deps.
3879         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
3880         deps.
3881         (sd_add_dep): Do not reject debug deps.
3882         (add_insn_mem_dependence): Don't count debug deps.
3883         (remove_from_deps): Likewise.
3884         (sched_analyze_2): Set up mem deps on debug insns.
3885         (sched_analyze_insn): Record reg uses for deps on debug insns.
3886         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
3887         try_ready nondebug insn after debug insn.
3888         * ddg.c (create_ddg_dep_from_intra_loop_link,
3889         create_ddg_dep_no_link): Don't reject debug deps.
3890
3891 2009-10-16  Richard Guenther  <rguenther@suse.de>
3892
3893         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
3894         (maybe_merge_incomplete_and_complete_type): Likewise.
3895         (lto_symtab_merge): Do not call them.  Do not warn for
3896         complete vs. incomplete compatible types.
3897         (lto_symtab_merge_decls_2): Simplify.
3898         * gimple.c (gimple_force_type_merge): Remove.
3899         (gimple_types_compatible_p): Make it static.
3900         * gimple.h (gimple_force_type_merge): Remove.
3901         (gimple_types_compatible_p): Likewise.
3902
3903 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
3904
3905         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
3906         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
3907
3908 2009-10-16  Richard Guenther  <rguenther@suse.de>
3909
3910         PR tree-optimization/41728
3911         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
3912         if fold_stmt did anything.
3913
3914 2009-10-16  Richard Guenther  <rguenther@suse.de>
3915
3916         PR lto/41715
3917         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
3918         (maybe_fixup_handled_component): New function.
3919         (input_gimple_stmt): Fixup mismatched decl replacements.
3920
3921 2009-10-16  Richard Guenther  <rguenther@suse.de>
3922
3923         PR lto/41713
3924         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
3925         the same as VAR_DECL.
3926
3927 2009-10-16  Richard Guenther  <rguenther@suse.de>
3928
3929         * gimple.c (iterative_hash_gimple_type): For integer types
3930         also hash their minimum and maximum values and the string flag.
3931         For array types hash their domain and the string flag.
3932
3933 2009-10-16  Richard Guenther  <rguenther@suse.de>
3934
3935         * gimple.c (gimple_types_compatible_p): Restrict completing
3936         types to record or unions.  Simplify completion.
3937         Do not merge records or unions with different
3938         TYPE_STRUCTURAL_EQUALITY_P tag.
3939         (iterative_hash_gimple_type): Restrict non-recursing into
3940         pointer targets for records and unions.
3941
3942 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
3943
3944         PR debug/41717
3945         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
3946         * dwarf2out.c (mem_loc_descriptor): Don't handle
3947         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
3948         punt if it is not lowpart subreg or if inner mode isn't
3949         MODE_INT.
3950
3951 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3952
3953         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
3954         investigating previous or next insns.
3955
3956 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
3957
3958         * tree-sra.c (build_ref_for_offset_1): Update comment.
3959
3960 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
3961
3962         * config/s390/s390.md (atype): Added missing values.
3963
3964 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3965
3966         PR target/41702
3967         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
3968         (casesi64p): Update pattern to reflect above.
3969
3970 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
3971
3972         PR rtl-optimization/41697
3973         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
3974
3975 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
3976
3977         PR target/23983
3978         * config/rs6000/predicates.md: Update copyright year.
3979         * config/rs6000/altivec.md: Ditto.
3980
3981         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
3982         (MD_INCLUDES): Add a2.md.
3983
3984         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
3985         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
3986         (builtin_classify): New static vector to classify various builtins
3987         to get the tree attributes correct.
3988         (def_builtin): Set the attributes of builtins based on what the
3989         builtin does (i.e. memory operation, floating point, saturation
3990         need special attributes, others are pure functions).
3991
3992         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
3993         the builtins.
3994         (enum rs6000_builtins): Include rs6000-builtin.def to define the
3995         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
3996         RS6000_BUILTIN_COUNT.
3997         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
3998         MAX_RS6000_BUILTINS.
3999
4000         * config/rs6000/rs6000-builtin.def: New file that combines the
4001         builtin enumeration name and attributes.
4002
4003 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
4004
4005         * config/i386/linux.h (ASM_SPEC): Add --32.
4006
4007 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4008
4009         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
4010         and DW_TAG_template_alias.
4011         (dwarf_attr_name): Handle DW_AT_main_subprogram,
4012         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
4013         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
4014         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
4015         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
4016         and DW_AT_GNU_odr_signature.
4017         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
4018         DW_FORM_flag_present and DW_FORM_ref_sig8.
4019         (output_signature): Only print name on the first byte.
4020         (output_die): Likewise for dw_val_class_data8.
4021
4022 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
4023
4024         * doc/invoke.texi: Clarify that most optimizations are not enabled
4025         without -O.
4026
4027 2009-10-15  Richard Guenther  <rguenther@suse.de>
4028
4029         PR lto/41668
4030         * gimple.c (compare_type_names_p): Handle anonymous names
4031         differently based on new mode argument.
4032         (gimple_types_compatible_p): For structs also compare the tags.
4033         (iterative_hash_type_name): Rename to ...
4034         (iterative_hash_name): ... this.  Hash all names.
4035         (iterative_hash_gimple_type): Fix hashing the struct tag of
4036         pointer targets.  Hash field decl names.
4037
4038 2009-10-15  Richard Guenther  <rguenther@suse.de>
4039
4040         PR lto/41669
4041         * gimple.c (gimple_get_alias_set): Avoid recursing on
4042         invalid type topology.
4043
4044 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4045
4046         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
4047
4048 2009-10-15  Richard Guenther  <rguenther@suse.de>
4049
4050         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
4051
4052 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4053
4054         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
4055         add --with-tune{,-32,-64} configured default for -mtune if explicit
4056         -mcpu is used.
4057
4058 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
4059
4060         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
4061
4062 2009-10-14  DJ Delorie  <dj@redhat.com>
4063
4064         * config/h8300/h8300.c (F): New.
4065         (Fpa): New.
4066         (h8300_emit_stack_adjustment): Call them.
4067         (push): Likewise.
4068         (h8300_push_pop): Likewise.
4069         (h8300_expand_prologue): Likewise.
4070         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
4071         (MUST_USE_SJLJ_EXCEPTIONS): Define.
4072         (INCOMING_RETURN_ADDR_RTX): Define.
4073         (INCOMING_FRAME_SP_OFFSET): Define.
4074         (DWARF_CIE_DATA_ALIGNMENT): Define.
4075
4076 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4077
4078         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
4079         fields in builtin structs.
4080         (finalize_record_size): Likewise.
4081
4082 2009-10-14  Richard Guenther  <rguenther@suse.de>
4083
4084         * gimple.c (gtc_ob): New global.
4085         (struct type_pair_d): Replace pointers with type UIDs.
4086         (type_pair_hash): Adjust.
4087         (type_pair_eq): Likewise.
4088         (lookup_type_pair): Likewise.  Allocate from an obstack.
4089         (gimple_force_type_merge): Adjust.
4090         (gimple_types_compatible_p): Likewise.
4091         (free_gimple_type_tables): Free the obstack.
4092
4093 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4094
4095         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
4096         stmts setting DEBUG_EXPR_DECLs.
4097
4098         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
4099         Don't crash if mode1 is VOIDmode.
4100
4101 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
4102
4103         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
4104         * params.h (IRA_LOOP_RESERVED_REGS): New.
4105         * tree-pass.h (pass_subregs_of_mode_init,
4106         pass_subregs_of_mode_finish): Remove.
4107         * passes.c (pass_subregs_of_mode_init,
4108         pass_subregs_of_mode_finish): Remove.
4109         (pass_reginfo_init): Move before loop optimizations.
4110         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
4111         * common.opt (fira-loop-pressure): New.
4112         * toplev.h (flag_ira_loop_pressure): New.
4113         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
4114         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
4115         Make external and void type functions.
4116         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
4117         pass_subregs_of_mode_finish): Remove.
4118         * ira-costs.c (init_costs): Call init_subregs_of_mode.
4119         * regmove.c: Include ira.h.
4120         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
4121         register pressure calculation in loops.
4122         * loop-invariant.c: Include REGS_H and ira.h.
4123         (struct loop_data): New members max_reg_pressure, regs_ref, and
4124         regs_live.
4125         (struct invariant): New member orig_regno.
4126         (curr_loop): New variable.
4127         (find_exits): Initialize regs_ref and regs_live.
4128         (create_new_invariant): Initialize orig_regno.
4129         (get_cover_class_and_nregs): New.
4130         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
4131         array.  Add code for flag_ira_loop_pressure.
4132         (gain_for_invariant): Make new_regs an array.  Add code for
4133         flag_ira_loop_pressure.
4134         (best_gain_for_invariant): Ditto.
4135         (set_move_mark): New parameter gain.  Use it for debugging output.
4136         (find_invariants_to_move): Make regs_needed and new_regs an array.
4137         Add code for flag_ira_loop_pressure.
4138         (move_invariant_reg): Set up orig_regno.
4139         (move_invariants): Set up reg classes for pseudos for
4140         flag_ira_loop_pressure.
4141         (free_loop_data): Clear regs_ref and regs_live.
4142         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
4143         get_regno_cover_class, change_pressure, mark_regno_live,
4144         mark_regno_death, mark_reg_store, mark_reg_clobber,
4145         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
4146         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
4147         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
4148         register pressure calculation in loops if new regs were added.
4149         Call finish_subregs_of_mode.
4150         * opts.c (decode_options): Set up flag_ira_loop_pressure.
4151         * Makefile.in (loop-invariant.o): Add ira.h.
4152         (regmove.o): Ditto.
4153         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
4154         Describe.
4155         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
4156
4157 2009-10-14  Richard Guenther  <rguenther@suse.de>
4158
4159         * lto-symtab.c (lto_symtab_compatible): Fold in ...
4160         (lto_symtab_merge): ... here.  Rewrite both to take the
4161         prevailing and a to-be-merged entry and to queue diagnostics properly.
4162         (lto_symtab_resolve_replaceable_p): New predicate for
4163         symbol resolution.
4164         (lto_symtab_resolve_can_prevail_p): Likewise.
4165         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
4166         handles merging commons by choosing the largest decl.  Fold
4167         in code that gives ODR errors.
4168         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
4169         diagnostics here.
4170         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
4171         case of no prevailing decl here.  Diagnose mismatches
4172         in object types here.  Drop all but the prevailing decls.
4173         (lto_symtab_prevailing_decl): Return the single prevailing decl.
4174         * lto-streamer-in.c (lto_input_tree_ref): Deal with
4175         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
4176
4177 2009-10-14  Richard Guenther  <rguenther@suse.de>
4178
4179         PR lto/41521
4180         * lto-streamer-in.c (input_bb): Replace debug stmts with
4181         nops instead of dropping them.
4182
4183 2009-10-14  Nick Clifton  <nickc@redhat.com>
4184
4185         * gcc/doc/extended.texi: Replace the dash character with @minus{}
4186         in situations where it is being used as a minus symbol.
4187         * gcc/doc/tm.texi: Likewise.
4188         * gcc/doc/md.texi: Likewise.
4189
4190 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4191
4192         PR preprocessor/41543
4193         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
4194         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
4195         * tree.c: Include intl.h.
4196         (expand_location): Handle BUILTINS_LOCATION.
4197         * Makefile.in (tree.o): Depend on intl.h.
4198
4199         PR debug/41695
4200         * dwarf2out.c (dwarf2out_var_location): Always clear
4201         last_postcall_label when changing last_label.
4202
4203 2009-10-14  Pascal Obry  <obry@adacore.com>
4204
4205         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
4206         (process_command): Handle -E as done with -c and -S.  Do not add
4207         the target executable suffix to the output file when -E is used.
4208         (main): Adjust error message accordingly.
4209
4210 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
4211
4212         PR debug/41343
4213         PR debug/41447
4214         PR debug/41264
4215         PR debug/41338
4216         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
4217         decl with rtl.
4218         (tree_code_size): Likewise.
4219
4220 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4221
4222         * builtins.c (fold_builtin_1): Support complex "arc" functions.
4223         * real.h (HAVE_mpc_arc): Define.
4224
4225 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
4226
4227         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
4228         (struct builtin_description): Add fndecl field.
4229         (bdesc): Remove const qualifier.  Update initializer.
4230         (sh_media_init_builtins): Remove const qualifier for d.  Record
4231         the result of add_builtin_function to the fndecl field.
4232         (sh_builtin_decl): New.
4233         (sh_media_builtin_decl): New.
4234
4235 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
4236
4237         PR target/38948
4238         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
4239         requests between special registers.
4240
4241 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
4242
4243         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
4244
4245 2009-10-13  Richard Henderson  <rth@redhat.com>
4246
4247         PR tree-optimization/41377
4248         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
4249         (cleanup_empty_eh_merge_phis): New change_region parameter;
4250         pass it on to redirect_eh_edge_1.  Update callers.
4251         (cleanup_empty_eh_unsplit): Don't require an existing EH label
4252         at the destination block.
4253
4254 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
4255
4256         * passes.c (register_pass): Replaced gcc_unreachable by
4257         fatal_error on failure. Mentions plugins in comments & messages.
4258
4259 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
4260
4261         PR target/41693
4262         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
4263         * sched-vis.c (print_value): Use it.
4264         * cselib.c (cselib_hash_rtx): Likewise.
4265         * print-rtl.c (print_rtx): Likewise.
4266         * cfgexpand.c (expand_debug_rtx): Likewise.
4267         * var-tracking.c (vt_expand_loc_callback): Likewise.
4268
4269 2009-10-13  Richard Guenther  <rguenther@suse.de>
4270
4271         PR lto/41565
4272         * opts.c (handle_option): Split out code to handle setting
4273         the options flag var ...
4274         (set_option): ... here.
4275         * opts.h (set_option): Declare.
4276         * lto-opts.c (register_user_option_p): Include -fexceptions
4277         and all position independent code variants.
4278         (handle_common_option): Remove.
4279         (lto_reissue_options): Use set_option.
4280
4281 2009-10-13  Martin Jambor  <mjambor@suse.cz>
4282
4283         PR tree-optimization/41661
4284         * ipa-prop.c (compute_complex_pass_through): Allow only operations
4285         that are tcc_comparisons or do not change the type in any
4286         un-usleless way.
4287         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
4288         folding tcc_comparison operations.
4289
4290 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4291
4292         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
4293         properly.
4294
4295 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
4296
4297         PR debug/41343
4298         PR debug/41447
4299         PR debug/41264
4300         PR debug/41338
4301         * tree.def (DEBUG_EXPR_DECL): New.
4302         * rtl.def (DEBUG_EXPR): New.
4303         * gengtype.c (adjust_field_rtx_def): Handle it.
4304         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
4305         (insert_debug_temp_for_var_def): ... this.  Drop support for
4306         moving.  Take iterator for def stmt; insert debug stmt before it.
4307         Scan early for use count and kind in debug stmts.
4308         (propagate_defs_into_debug_stmts): Rename to...
4309         (insert_debug_temps_for_defs): ... this.  Likewise.
4310         * tree.h (DEBUG_TEMP_UID): New.
4311         * tree.c (next_debug_decl_uid): New.
4312         (make_node_stat): Count debug decls separately.
4313         (copy_node_stat): Likewise.
4314         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
4315         * var-tracking.c (dv_is_decl_p): Recognize it.
4316         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
4317         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
4318         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
4319         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
4320         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
4321         (cselib_hash_rtx): Likewise.
4322         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
4323         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
4324         debug bind stmts.
4325         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
4326         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
4327         * rtl.c (copy_rtx): Likewise.
4328         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
4329         * print-rtl.c (print_rtx): Likewise.
4330         * sched-vis.c (print_value): Likewise.
4331         (print_insn): Handle DEBUG_EXPR_DECL.
4332         * tree-dump.c (dequeue_and_dump): Likewise.
4333         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
4334         * gimple-iterator (gsi_replace): Check for same lhs.
4335         (gsi_remove): Insert debug temps.
4336         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
4337         (move_computations_stmt): Drop explicit propagation into debug stmts.
4338         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
4339         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
4340         * tree-ssa-sink.c (statement_sink_location): Likewise.
4341         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
4342         * tree-ssanames.c (release_ssa_name): Adjust for rename.
4343         * tree-flow.h: Likewise.
4344         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
4345         debug temps without values.
4346         (eliminate_unnecessary_stmts): Don't discard just-inserted
4347         debug stmts.
4348
4349 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
4350
4351         PR target/26515
4352         * config/cris/cris.md (andu): Check that operand 1 is one of the
4353         general registers.  Fix typo in head comment.
4354
4355 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
4356
4357         * config/i386/i386.md (vswapmov): New.
4358         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
4359         (ix86_function_ms_hook_prologue): New.
4360         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
4361         * configure.ac: Test for swap suffix support in as.
4362         * configure: Rebuild.
4363
4364 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
4365
4366         PR target/41680
4367         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
4368         paradoxical subregs to prevent partial register stalls if the inner
4369         mode is integer mode.
4370
4371 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
4372
4373         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
4374
4375 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
4376
4377         PR c++/41570
4378         * gcc/dwarf2out.c (template_parameter_pack_die,
4379         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
4380
4381 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
4382
4383         PR debug/41616
4384         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
4385         on updates too.
4386         (maybe_register_def): Likewise.  Take stmt iterator.
4387         (rewrite_update_stmt): Take stmt iterator and pass it on.
4388         (rewrite_update_enter_block): Pass stmt iterator.
4389
4390 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4391
4392         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
4393         (spu_builtin_decl): New function.
4394
4395 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
4396
4397         * config/i386/i386.md (SWIM): New mode iterator.
4398         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
4399         using SWIM mode iterator.
4400         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
4401         patterns using SWI48 mode iterator.
4402         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
4403         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
4404         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
4405         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
4406         patterns using SWI248 mode iterator.
4407         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
4408         gen_x86_movdicc_0_m1_rex64 for renamed function
4409
4410 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
4411             Eric Botcazou  <ebotcazou@adacore.com>
4412
4413         PR target/33743
4414         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
4415         * config/sparc/sol2-unwind.h: New file.
4416
4417 2009-10-11  Olivier Hainque  <hainque@adacore.com>
4418             Eric Botcazou  <ebotcazou@adacore.com>
4419
4420         PR target/33743
4421         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
4422         * config/i386/sol2-unwind.h: New file.
4423
4424 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
4425
4426         PR target/41665
4427         * config/i386/i386.md (addsi_1_zext): Get the proper second
4428         operand for lea.
4429
4430 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
4431
4432         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
4433         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
4434         replacement value.
4435
4436 2009-10-11  Richard Guenther  <rguenther@suse.de>
4437
4438         * gimple.c (iterative_hash_type_name): Do not handle special
4439         anonymous names.
4440
4441 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
4442
4443         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
4444         (*setcc_si_1_and): Ditto.
4445         (*setcc_si_1_movzbl): Ditto.
4446         (*setcc_<mode>_2): Ditto.
4447         (*setcc_qi): Rename from *setcc_1.
4448         (*setcc_qi_slp): Rename from *setcc_2.
4449
4450         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
4451         (*zero_extendqisi2_movzbw_and splitter): Ditto.
4452
4453         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
4454         "if" condition, there is already assert with reload_completed present.
4455
4456 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
4457
4458         * plugin.c (try_init_one_plugin): Improve constness of variable err.
4459
4460 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
4461
4462         * doc/install.texi (Final install): Refer to
4463         http://gcc.gnu.org/bugs/ for bug reporting.
4464
4465 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
4466
4467         * configure.ac: Add test for dci instruction.
4468         * configure: Regenerate.
4469         * config.in: Likewise.
4470         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
4471         * doc/invoke.texi: Add cpu_type 476 and 476fp.
4472         (-mmulhw): Add 476 to description.
4473         (-mdlmzb): Likewise.
4474         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
4475         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
4476         (processor_target_table): Add 476 and 476fp entries.
4477         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
4478         (rs6000_issue_rate): Add CPU_PPC476.
4479         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
4480         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
4481         (processor_type): Add PROCESSOR_PPC476.
4482         (EXTRA_SPECS): Add asm_cpu_476 string.
4483         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
4484         (define_attr "cpu"): Add ppc476.
4485         Include 476.md.
4486         Update comments for 476.
4487         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
4488         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
4489         Update copyright year.
4490         * config/rs6000/476.md: New file.
4491         * config/rs6000/40x.md: Add description for "isel" attribute.
4492         Update copyright year.
4493         * config/rs6000/440.md: Likewise.
4494         * config/rs6000/603.md: Likewise.
4495         * config/rs6000/6xx.md: Likewise.
4496         * config/rs6000/7450.md: Likewise.
4497         * config/rs6000/7xx.md: Likewise.
4498         * config/rs6000/8540.md: Likewise.
4499         * config/rs6000/cell.md: Likewise.
4500         * config/rs6000/e300c2c3.md: Likewise.
4501         * config/rs6000/e500mc.md: Likewise.
4502         * config/rs6000/mpc.md: Likewise.
4503         * config/rs6000/power4.md: Likewise.
4504         * config/rs6000/power5.md: Likewise.
4505         * config/rs6000/power6.md: Likewise.
4506         * config/rs6000/power7.md: Likewise.
4507         * config/rs6000/rios1.md: Likewise.
4508         * config/rs6000/rios2.md: Likewise.
4509         * config/rs6000/rs64.md: Likewise.
4510
4511 2009-10-10  Richard Guenther  <rguenther@suse.de>
4512
4513         PR tree-optimization/41654
4514         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
4515         a cond expr before calling gimple_cond_set_condition_from_tree.
4516         (ifcombine_iforif): Likewise.
4517
4518 2009-10-09  Ian Lance Taylor  <iant@google.com>
4519
4520         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
4521         * configure: Rebuild.
4522
4523 2009-10-09  Neil Vachharajani <nvachhar@google.com>
4524
4525         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
4526         deprecated.
4527
4528 2009-10-09  Richard Guenther  <rguenther@suse.de>
4529
4530         PR lto/41638
4531         * target-def.h (TARGET_BUILTIN_DECL): Define.
4532         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
4533         * target.h (struct gcc_target): Add builtin_decl target hook.
4534         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
4535         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
4536         target builtins.
4537         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
4538         not gcc_unreachable.
4539         (lto_output_builtin_tree): Sorry if the target does not support
4540         streaming target builtins.
4541         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
4542         (rs6000_builtin_decl): New function.
4543         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
4544         (ix86_builtin_decl): New function.
4545
4546 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
4547
4548         PR preprocessor/41445
4549         * c-ppoutput.c (do_line_change): New function.
4550         (cb_line_change): Use it.
4551         (scan_translation_unit): Call do_line_change if
4552         avoid_paste or PREV_WHITE and token location is on a different line
4553         than print.src_line.
4554
4555         PR debug/40521
4556         * dwarf2out.c (dwarf2out_init): Test whether
4557         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
4558         it is defined.
4559
4560         PR rtl-optimization/41646
4561         * calls.c (expand_call): For BLKmode types returned in registers
4562         avoid likely spilled hard regs in copy_blkmode_from_reg generated
4563         insns.
4564
4565 2009-10-09  Richard Guenther  <rguenther@suse.de>
4566
4567         PR tree-optimization/41634
4568         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
4569         we remove the correct elements.
4570         (optimize_stmt): Make sure to update stmt operands before
4571         optimizing redundancies.
4572
4573 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4574
4575         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
4576
4577 2009-10-09  Richard Guenther  <rguenther@suse.de>
4578
4579         PR driver/41637
4580         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
4581         globals.
4582         (lto_wrapper_exit): New function.
4583         (fatal): Use it.
4584         (fatal_perror): Likewise.
4585         (fork_execute): Use global args_name, do not free it.
4586         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
4587         * lto-streamer.h: Remove duplicate prototypes.
4588
4589 2009-10-09  Richard Guenther  <rguenther@suse.de>
4590
4591         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
4592         before calling stmt_can_throw_external.
4593
4594 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
4595
4596         PR tree-optimization/40071
4597         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
4598         pointer if the original data reference doesn't conflict with the
4599         created vector data reference.  Fix long line.
4600
4601 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
4602
4603         * config/i386/i386.md (any_div): New code iterator.
4604         (u): Handle div and udiv.
4605         (sgnprefix): Ditto.
4606         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
4607         code iterator.
4608         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
4609         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
4610         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
4611         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
4612
4613 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
4614
4615         * gcc.c (main): Remove trailing "." from diagnostics.
4616
4617 2009-10-08  Cary Coutant  <ccoutant@google.com>
4618
4619         Add support for debugging with ICF (Identical Code Folding).
4620         * calls.c (debug.h): New #include.
4621         (emit_call_1): Call virtual_call_token debug hook.
4622         * common.opt (-fenable-icf-debug): New option.
4623         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
4624         locations in the source).
4625         (poc_label_num): New variable.
4626         (dcall_entry, vcall_entry): New typedefs.
4627         (dcall_table, vcall_table): New variables.
4628         (struct vcall_insn): New type.
4629         (vcall_insn_table): New variable.
4630         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
4631         (size_of_dcall_table): New function.
4632         (output_dcall_table): New function.
4633         (size_of_vcall_table): New function.
4634         (output_vcall_table): New function.
4635         (dwarf2out_direct_call): New function.
4636         (vcall_insn_table_hash): New function.
4637         (vcall_insn_table_eq): New function.
4638         (dwarf2out_virtual_call_token): New function.
4639         (dwarf2out_virtual_call): New function.
4640         (dwarf2out_init): Allocate new tables and sections.
4641         (prune_unused_types): Mark DIEs referenced from direct call table.
4642         (dwarf2out_finish): Output direct and virtual call tables.
4643         * final.c (final_scan_insn): Call direct_call and virtual_call
4644         debug hooks.
4645         * debug.h (struct gcc_debug_hooks): Add direct_call,
4646         virtual_call_token, virtual_call hooks.
4647         (debug_nothing_uid): New function.
4648         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
4649         (debug_nothing_uid): New function.
4650         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
4651         (xcoff_debug_hooks): Likewise.
4652         * sdbout.c (sdb_debug_hooks): Likewise.
4653         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
4654         * doc/invoke.texi (-fenable-icf-debug): New option.
4655
4656 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
4657
4658         PR debug/41353
4659         * regmove.c (regmove_backward_pass): Replace src with dst in the
4660         debug insn, and check for dst before rather than after.
4661
4662 2009-10-08  Janis Johnson <janis187@us.ibm.com>
4663
4664         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
4665         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
4666
4667 2009-10-08  Jan Hubicka  <jh@suse.cz>
4668
4669         PR middle-end/41626
4670         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
4671         do not mark cgraph nodes as needed.
4672         (record_references_in_initializer): Add new only_vars parameter.
4673         * cgraph.h (record_references_in_initializer): New parameter.
4674         * varasm.c (assemble_variable): Update call.
4675         * varpool.c (varpool_analyze_pending_decls): Always look for
4676         referenced vars.
4677
4678 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
4679
4680         * config/avr/avr.c (last_insn_address) Remove variable.
4681         (expand_prologue): Don't initialise last_insn_address variable.
4682         (final_prescan_insn): Don't output insn size.
4683         * config/avr/avr.opt (msize): Remove switch.
4684         * doc/invoke.texi (AVR Options): Remove documentation of -msize
4685         switch.
4686
4687 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
4688
4689         * combine.c (label_tick_ebb_start): Fix comment.
4690         (combine_instructions): Set label_tick and label_tick_ebb_start before
4691         calling setup_incoming_promotions.  Start them from 1.  Increment
4692         label_tick instead of deriving it from the BB index.  Rather than
4693         comparing ticks use the block from the previous iteration to decide
4694         whether to start a new EBB.  Remove empty lines before function.
4695
4696 2009-10-08  Michael Matz  <matz@suse.de>
4697
4698         PR middle-end/41573
4699         * builtins.c (fold_builtin_isascii): Use fold_build2.
4700         (fold_builtin_isdigit): Ditto.
4701         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
4702         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
4703         remove_useless_stmts_cond, remove_useless_stmts_tf,
4704         remove_useless_stmts_tc, remove_useless_stmts_bind,
4705         remove_useless_stmts_goto, remove_useless_stmts_label,
4706         remove_useless_stmts_1, remove_useless_stmts,
4707         pass_remove_useless_stmts): Remove.
4708         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
4709         * passes.c (init_optimization_passes): Don't add
4710         pass_remove_useless_stmts.
4711         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
4712         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
4713         static constants.
4714         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
4715         for static constants.
4716         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
4717         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
4718
4719 2009-10-08  Richard Guenther  <rguenther@suse.de>
4720
4721         * gimple.c (free_gimple_type_tables): New function.
4722         * gimple.h (free_gimple_type_tables): Declare.
4723
4724 2009-10-07  Mark Heffernan  <meheff@google.com>
4725
4726         * ipa-prop.c (ipa_print_node_params) Only print
4727         names of named arguments.
4728
4729 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
4730
4731         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
4732         being statically linked.
4733
4734 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4735
4736         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
4737
4738 2009-10-08  Jan Hubicka  <jh@suse.cz>
4739
4740         PR bootstrap/41620
4741         * ipa.c (cgraph_externally_visible_p,
4742         function_and_variable_visibility,
4743         whole_program_function_and_variable_visibility): Skip non-finalized
4744         nodes.
4745
4746 2009-10-08  Nick Clifton  <nickc@redhat.com>
4747
4748         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
4749         CONST_DOUBLEs.
4750
4751 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
4752
4753         PR bootstrap/37739
4754         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
4755
4756 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
4757
4758         PR c/41182
4759         * c-common.c (c_fully_fold_internal): Strip nops from the result
4760         of recursive calls to c_fully_fold_internal.
4761         (c_wrap_maybe_const): New.
4762         (c_save_expr): Use c_wrap_maybe_const.
4763         * c-common.h (c_wrap_maybe_const): Declare.
4764         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
4765         build_binary_op): Use c_wrap_maybe_const.
4766
4767 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4768
4769         * real.c: Fix comment to reflect actual exponent size.
4770
4771 2009-10-08  Ben Elliston  <bje@au.ibm.com>
4772
4773         * config/rs6000/a2.md: Add FSF comment header.
4774
4775 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
4776
4777         * config/i386/i386.md (any_extend): New code iterator.
4778         (u, s): New code attributes.
4779         (sgnprefix): Ditto.
4780         (DWIH): Rewrite as code iterator for SI and DI modes.
4781         (DWI): Rewrite as mode attribute.
4782         (dwi): New mode attribute.
4783         (di): Depend on SI mode and DI mode.
4784         (doubleint_general_operand): Remove mode attribute.
4785
4786         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
4787         DWIH mode iterator.
4788
4789         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
4790         (*sub<mode>3_doubleword): Ditto.
4791
4792         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
4793         using SWIM248 mode iterator.
4794         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
4795         using SWI48 mode iterator.
4796         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
4797         patterns using DWIH mode iterator and any_extend code iterator.
4798         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
4799         using any_extend code iterator.
4800         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
4801         patterns using DWIH mode iterator and any_extend code iterator.
4802         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
4803         using any_extend code iterator.
4804         (<s>mul<mode>3_highpart): Macroize expander from
4805         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
4806         and any_extend code iterator.
4807         (*<s>muldi3_highpart_1): Macroize insn from
4808         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
4809         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
4810         patterns using any_extend code iterator.
4811         (*<s>mulsi3_highpart_zext): Macroize insn from
4812         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
4813
4814 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
4815
4816         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
4817         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
4818         refering to a DIE with DW_AT_const_value.
4819
4820 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
4821
4822         PR middle-end/22072
4823         * ira-lives.c (check_and_make_def_conflict): Process all operands.
4824
4825 2009-10-06  Jan Hubicka  <jh@suse.cz>
4826
4827         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
4828         correctly.
4829
4830 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4831
4832         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
4833         *lea_2_rex64): Move before *add<mode>_1 pattern.
4834
4835 2009-10-07  Jan Hubicka  <jh@suse.cz>
4836
4837         * collect2.c (main): Add -fno-whole-program.
4838         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
4839
4840 2009-10-07  Jan Hubicka  <jh@suse.cz>
4841
4842         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
4843         has no address taken.
4844         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
4845         never needed.
4846         (cgraph_clone_node): Clear externally_visible flag for clones.
4847         * cgraph.h (cgraph_only_called_directly_p,
4848         cgraph_can_remove_if_no_direct_calls_p): New predicates.
4849         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
4850         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
4851         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
4852         ipcp_insert_stage): Likwise.
4853         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
4854         externally_visible flag.
4855         (verify_cgraph_node): Verify that inline clones look right.
4856         (process_function_and_variable_attributes): Do not set
4857         externally_visible flags.
4858         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
4859         been already run.
4860         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
4861         boundaries.
4862         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
4863         clear externally_visible when turning into inline clones
4864         (cgraph_mark_inline_edge): Use new predicates.
4865         (cgraph_estimate_growth): Likewise.
4866         (cgraph_decide_inlining): Likewise.
4867         * ipa.c (cgraph_postorder): Likewise.
4868         (cgraph_remove_unreachable_nodes): Likewise; sanity check
4869         that inline clones are not needed.
4870         (cgraph_externally_visible_p): New predicate.
4871         (function_and_variable_visibility): Add whole_program parameter;
4872         always set externally_visible flag; handle COMDAT function
4873         privatization.
4874         (local_function_and_variable_visibility): New function.
4875         (gate_whole_program_function_and_variable_visibility): New function.
4876         (whole_program_function_and_variable_visibility): New function.
4877         (pass_ipa_whole_program_visibility): New function.
4878         * passes.c  (init_optimization_passes): Add whole program visibility
4879         pass.
4880         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
4881         not care about needed/reachable flags.
4882         * varpool.c: Include flags.h
4883         (decide_is_variable_needed): When doing LTO assume whole-program mode.
4884         (varpool_finalize_decl): When we are in LTO read-back, all variables
4885         are analyzed.
4886         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
4887
4888 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4889
4890         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
4891         add MASK_HARD_DFP.
4892
4893 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4894
4895         * config.gcc: Don't include the makefile fragments intended for
4896         libgcc.
4897         * config/s390/fixdfdi.h: File removed.
4898         * config/s390/libgcc-glibc.ver: File removed.
4899         * config/s390/s390.h: Remove the fixdfdi.h hack.
4900         * config/s390/t-crtstuff: File moved to libgcc dir.
4901         * config/s390/t-linux: Likewise.
4902         * config/s390/t-tpf: libgcc specific parts removed.
4903         * config/s390/t-linux64: Likewise.
4904
4905 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
4906
4907         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
4908         (lto-compress.o): Likewise.
4909
4910 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
4911
4912         PR target/41512
4913         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
4914         dllexport to class members here.
4915         (i386_pe_determine_dllimport_p): Only check static class data for
4916         definition.
4917         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
4918         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
4919         functions for vague linkage.
4920         (i386_pe_type_dllexport_p): Fix formatting.
4921         (maybe_add_dllexport) New function.
4922         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
4923         to class members.
4924
4925 2009-10-07  Ben Elliston  <bje@au.ibm.com>
4926
4927         * config/rs6000/a2.md: Remove duplicated lines.
4928
4929 2009-10-07  Ben Elliston  <bje@au.ibm.com>
4930
4931         * config.gcc (powerpc*-*-*): Handle a2.
4932         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
4933         * config/rs6000/a2.md: New file.
4934         * config/rs6000/rs6000.opt (mno-update): New.
4935         (mupdate): Return to using a mask, not a var.
4936         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
4937         (enum processor_type): Add PROCESSOR_PPCA2.
4938         * config/rs6000/rs6000.c (ppca2_cost): New costs.
4939         (rs6000_override_options): Add "a2" to processor_target_table.
4940         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
4941         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
4942
4943 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4944
4945         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
4946         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
4947         reference to nonexistent gen_truncxfxf2 function.
4948
4949 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4950
4951         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
4952         (DWIH, g, di, doubleint_general_operand): New mode attributes.
4953         (general_operand): Handle TI mode.
4954         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
4955         using SDWIM mode iterator.
4956         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
4957         pattern from *add{di,ti}3_1 patterns and corresponding splitters
4958         using DWI mode iterator.
4959         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
4960         patterns using SWI mode iterator.
4961         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
4962         using SWI48 mode iterator.
4963         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
4964         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
4965         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
4966         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
4967         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
4968         using SDWIM mode iterator.
4969         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
4970         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
4971         using DWI mode iterator.
4972         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
4973         patterns using SWI mode iterator.
4974         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
4975         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
4976         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
4977         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
4978         patterns using plusminus code iterator.
4979         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
4980         sub<mode>3 patterns using plusminus code iterator.
4981         * config/i386/i386.c (override_options): Update the call to
4982         gen_subdi_carry_rex64 for renamed function.
4983         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
4984         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
4985         calls to instruction expanders.
4986
4987 2009-10-06  Martin Jambor  <mjambor@suse.cz>
4988
4989         PR bootstrap/41395
4990         * opts.c (decode_options): Run IPA-SRA at -O2.
4991
4992 2009-10-06  Richard Guenther  <rguenther@suse.de>
4993
4994         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
4995
4996 2009-10-06  Tobias Burnus  <burnus@net-b.de>
4997
4998         PR lto/41591
4999         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
5000         -flto and -fwhole-program flags can be combined.
5001
5002 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
5003
5004         PR driver/41217
5005         * gcc.c (process_command): Check that -o argument was specified.
5006
5007 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
5008
5009         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
5010
5011 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5012
5013         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
5014         * doc/invoke.texi (Warning Options): Annotate allowed languages
5015         for -Wunsuffixed-float-constants.
5016
5017 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
5018
5019         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
5020         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
5021         same name and isn't the main variant.
5022
5023         PR debug/41558
5024         * dwarf2out.c (loc_by_reference): Removed.
5025         (dw_loc_list_1): New function.
5026         (dw_loc_list): Remove toplev argument, add want_address argument.
5027         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
5028         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
5029         want_address == 2 to dw_loc_list.  For successful dw_loc_list
5030         set have_address to 1 only if want_address is not 0.
5031
5032 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
5033
5034         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
5035         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
5036         a code block followed by two pointers.
5037         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
5038         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
5039         (MIPS_MOVE): Likewise.
5040         (MIPS_LUI): Likewise.
5041         (MIPS_JR): Likewise.
5042         (MIPS_BAL): Likewise.
5043         (MIPS_NOP): Likewise.
5044         (mips_asm_trampoline_template): Delete.
5045         (mips_trampoline_code_size): New function.
5046         (mips_trampoline_init): Add shorter sequences for all cases
5047         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
5048         Calculate the opcodes directly, rather than copying from a template.
5049         Only flush the code part of the trampoline.
5050         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
5051
5052 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
5053
5054         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
5055         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
5056         (INCOMING_RETURN_ADDR_RTX): Likewise.
5057         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
5058         with AT_REGNUM.
5059         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
5060         with RETURN_ADDR_REGNUM.
5061         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
5062         * config/mips/mips.c (mips16_build_call_stub): Replace
5063         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
5064         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
5065         (mips_print_operand_punctuation): Likewise.
5066         (mips_frame_set): Likewise.
5067         (mips16e_output_save_restore): Likewise.
5068         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
5069         (mips_save_reg_p): Likewise.
5070         (mips_return_addr): Likewise.
5071         (mips_set_return_address): Likewise.
5072         (mips_direct_save_slot_move_p): Likewise.
5073         (mips_output_function_prologue): Likewise.
5074         (mips_restore_reg): Likewise.
5075         (mips_expand_epilogue): Likewise.
5076         (mips_epilogue_uses): Likewise.
5077         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
5078         (*mov<mode>_ra): Use it instead of a hard-coded 31.
5079         (clear_hazard_<mode>): Likewise.
5080         (call_internal): Likewise.
5081         (call_internal_direct): Likewise.
5082         (call_direct_split): Likewise.
5083         (call_value_internal): Likewise.
5084         (call_value_split): Likewise.
5085         (call_value_internal_direct): Likewise.
5086         (call_value_direct_split): Likewise.
5087         (call_value_multiple_internal): Likewise.
5088         (call_value_multiple_split): Likewise.
5089
5090 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
5091             Jakub Jelinek  <jakub@redhat.com>
5092
5093         PR rtl-optimization/41511
5094         * combine.c (record_value_for_reg): Pass explicit values as argument
5095         to get_last_value_validate.
5096         (get_last_value_validate): Document INSN parameter.
5097         For non-readonly MEMs, assume they might have been modified if INSN
5098         was in another basic block.
5099         (get_last_value): Minor reformatting.
5100
5101 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5102
5103         PR tree-opt/40992
5104         * final.c (asm_str_count): Split out from asm_insn_count.
5105         * rtl.h (asm_str_count): New prototype.
5106         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
5107         asm_str_count.
5108
5109 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
5110
5111         * doc/plugins.texi: Change plugin_pass to register_pass_info.
5112
5113 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
5114             Rafael Espindola  <espindola@google.com>
5115
5116         * gengtype.c (write_types): Moved call to write_func_for_structure
5117         into seperate loops.
5118
5119 2009-10-05  Richard Guenther  <rguenther@suse.de>
5120
5121         PR lto/41281
5122         * lto-cgraph.c (output_cgraph): Output toplevel asms.
5123         (input_cgraph_1): Input toplevel asms.
5124
5125 2009-10-05  Richard Guenther  <rguenther@suse.de>
5126
5127         PR lto/40902
5128         * lto-symtab.c (lto_compatible_attributes_p): Remove.
5129         (external_aggregate_decl_p): Likewise.
5130         (lto_symtab_compatible): Re-structure.  Remove dead code.
5131         For variables ignore toplevel qualifiers when comparing types.
5132         Issue warnings, not errors for mismatched user-alignment.
5133
5134 2009-10-05  Richard Guenther  <rguenther@suse.de>
5135
5136         PR lto/41552
5137         PR lto/41487
5138         * lto-symtab.c (struct lto_symtab_base_def): Remove.
5139         (struct lto_symtab_identifier_def): Likewise.
5140         (struct lto_symtab_decl_def): Likewise.
5141         (struct lto_symtab_entry_def): New.
5142         (lto_symtab_identifier_t): Rename to ...
5143         (lto_symtab_entry_t): ... this.
5144         (lto_symtab_decls): Remove.
5145         (lto_symtab_base_hash): Rename to ...
5146         (lto_symtab_entry_hash): ... this.
5147         (lto_symtab_base_eq): Rename to ...
5148         (lto_symtab_entry_eq): ... this.
5149         (lto_symtab_base_marked_p): Rename to ...
5150         (lto_symtab_entry_marked_p): ... this.
5151         (lto_symtab_identifier_marked_p): Remove.
5152         (lto_symtab_decl_marked_p): Likewise.
5153         (lto_symtab_maybe_init_hash_tables): Rename to ...
5154         (lto_symtab_maybe_init_hash_table): ... this.
5155         (lto_symtab_set_resolution_and_file_data): Remove.
5156         (lto_symtab_register_decl): New function.
5157         (lto_symtab_get_identifier): Remove.
5158         (lto_symtab_get): New function.
5159         (lto_symtab_get_resolution): Adjust.
5160         (lto_symtab_get_identifier_decl): Remove.
5161         (lto_symtab_set_identifier_decl): Likewise.
5162         (lto_symtab_merge_decl): Rename to ...
5163         (lto_symtab_merge): ... this.  Rewrite.
5164         (lto_symtab_merge_var): Remove.
5165         (lto_symtab_merge_fn): Likewise.
5166         (lto_symtab_prevailing_decl): Adjust.
5167         (lto_cgraph_replace_node): New function.
5168         (lto_symtab_merge_decls_2): Likewise.
5169         (lto_symtab_merge_decls_1): Likewise.
5170         (lto_symtab_fixup_var_decls): Likewise.
5171         (lto_symtab_resolve_symbols): Likewise.
5172         (lto_symtab_merge_decls): Likewise.
5173         (lto_symtab_prevailing_decl): Adjust.
5174         (lto_symtab_get_symtab_def): Remove.
5175         (lto_symtab_get_file_data): Likewise.
5176         (lto_symtab_clear_resolution): Adjust.
5177         (lto_symtab_clear_resolution): Likewise.
5178         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
5179         (input_cgraph_1): Likewise.
5180         * lto-streamer-in.c (get_resolution): Do not provide fake
5181         symbol resolutions here.
5182         (deferred_global_decls): Remove.
5183         (lto_register_deferred_decls_in_symtab): Likewise.
5184         (lto_register_var_decl_in_symtab): Change signature, register
5185         variable via lto_symtab_register_decl.
5186         (lto_register_function_decl_in_symtab): Likewise.
5187         (lto_read_tree): Adjust.
5188         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
5189         (lto_symtab_merge_var): Likewise.
5190         (lto_symtab_merge_fn): Likewise.
5191         (lto_symtab_register_decl): Declare.
5192         (lto_symtab_merge_decls): Likewise.
5193
5194 2009-10-05  Richard Guenther  <rguenther@suse.de>
5195
5196         PR tree-optimization/23821
5197         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
5198         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
5199         simple IV increments.
5200
5201 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5202
5203         * config/arm/arm.c (arm_override_options): Really initialize
5204         flag_dwarf2_cfi_asm to 0.
5205
5206 2009-10-05  Doug Kwan  <dougkwan@google.com>
5207
5208         PR rtl-optimization/41574
5209         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
5210         floating point and we are not doing unsafe math optimizations.
5211
5212 2009-10-03  Simon Baldwin  <simonb@google.com>
5213             Cary Coutant  <ccoutant@google.com>
5214             Rafael Espindola  <espindola@google.com>
5215             Richard Guenther  <rguenther@suse.de>
5216             Jan Hubicka  <jh@suse.cz>
5217             Doug Kwan <dougkwan@google.com>
5218             H.J. Lu  <hongjiu.lu@intel.com>
5219             Bill Maddox  <maddox@google.com>
5220             Ryan Mansfield  <rmansfield@qnx.com>
5221             Diego Novillo  <dnovillo@google.com>
5222             Ollie Wild  <aaw@google.com>
5223             Kenneth Zadeck <zadeck@naturalbridge.com>
5224
5225         * lto-cgraph.c: New file.
5226         * lto-compress.c: New file.
5227         * lto-compress.h: New file.
5228         * lto-opts.c: New file.
5229         * lto-section-in.c: New file.
5230         * lto-section-out.c: New file.
5231         * lto-streamer-in.c: New file.
5232         * lto-streamer-out.c: New file.
5233         * lto-streamer.c: New file.
5234         * lto-streamer.h: New file.
5235         * lto-symtab.c: New file.
5236         * lto-wpa-fixup.c: New file.
5237         * lto-wrapper.c: New file.
5238
5239 2009-10-03  Simon Baldwin  <baldwin@google.com>
5240             Ben Elliston  <bje@au.ibm.com>
5241             Rafael Espindola  <espindola@google.com>
5242             Nathan Froyd  <froydnj@codesourcery.com>
5243             Jan Hubicka  <jh@suse.cz>
5244             Doug Kwan  <dougkwan@google.com>
5245             Diego Novillo  <dnovillo@google.com>
5246             Kenneth Zadeck  <zadeck@naturalbridge.com>
5247
5248         * Makefile.in (enable_lto): New.
5249         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
5250         (LINKER_PLUGIN_API_H): Define.
5251         (LTO_SYMTAB_H): Define.
5252         (LTO_STREAMER_H): Define.
5253         (TREE_VECTORIZER_H): Define.
5254         (INCLUDES): Add LIBELFINC.
5255         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
5256         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
5257         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
5258         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
5259         (native): Add lto-wrapper$(exeext)
5260         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
5261         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
5262         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
5263         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
5264         (varasm.o): Add dependency on tree-iterator.h.
5265         (cgraph.o): Add dependency on cif-code.def.
5266         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
5267         (ipa-pure-const.o): Likewise.
5268         (GTFILES): Add lto-symtab.c.
5269         (install-lto-wrapper): New.
5270         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
5271         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
5272         * config.in: Regenerate.
5273
5274 2009-10-03  Rafael Espindola  <espindola@google.com>
5275             Diego Novillo  <dnovillo@google.com>
5276
5277         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
5278         ipa_write_summaries.
5279         Call execute_ipa_summary_passes for all_regular_ipa_passes and
5280         all_lto_gen_passes.
5281         (cgraph_optimize): Make extern.
5282
5283 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
5284             Kenneth Zadeck <zadeck@naturalbridge.com>
5285
5286         * toplev.c (in_lto_p): Declare.
5287         * collect2.c (scan_prog_file): Read all the output when reading
5288         information for LTO.
5289         (enum lto_mode_d): Declare.
5290
5291 2009-10-03  Richard Guenther  <rguenther@suse.de>
5292             Diego Novillo  <dnovillo@google.com>
5293
5294         * gimple.c: Include target.h and alias.h.
5295         (gimple_types): Declare.
5296         (type_hash_cache): Declare.
5297         (gimple_alloc_stat): Make extern.
5298         (gimple_build_eh_must_not_throw): Call
5299         gimple_eh_must_not_throw_set_fndecl.
5300         (struct type_pair_d): Declare.
5301         (type_pair_t): Declare.
5302         (type_pair_hash): New.
5303         (type_pair_eq): New.
5304         (lookup_type_pair): New.
5305         (gimple_force_type_merge): New.
5306         (compare_type_names_p): New.
5307         (compare_field_offset): New.
5308         (gimple_types_compatible_p): New.
5309         (struct sccs): Declare.
5310         (next_dfs_num): Declare.
5311         (iterative_hash_gimple_type): New.
5312         (visit): New.
5313         (iterative_hash_type_name): New.
5314         (iterative_hash_gimple_type): New.
5315         (gimple_type_hash): New.
5316         (gimple_type_eq): New.
5317         (gimple_register_type): New.
5318         (print_gimple_types_stats): New.
5319         (gimple_signed_or_unsigned_type): New.
5320         (gimple_unsigned_type): New.
5321         (gimple_signed_type): New.
5322         (gimple_get_alias_set): New.
5323         (gimple_decl_printable_name): Do not use DMGL_TYPES.
5324         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
5325         (gimple_force_type_merge): Declare.
5326         (gimple_types_compatible_p): Declare.
5327         (gimple_register_type): Declare.
5328         (print_gimple_types_stats): Declare.
5329         (gimple_unsigned_type): Declare.
5330         (gimple_signed_type): Declare.
5331         (gimple_get_alias_set): Declare.
5332         (gimple_eh_must_not_throw_set_fndecl): New.
5333
5334 2009-10-03  Jan Hubicka  <jh@suse.cz>
5335             Kenneth Zadeck <zadeck@naturalbridge.com>
5336
5337         * ipa-pure-const.c: Include lto-streamer.h.
5338         (register_hooks): Factor out of ...
5339         (generate_summary): ... here.
5340         (pure_const_write_summary): New.
5341         (pure_const_read_summary): New.
5342         (pass_ipa_pure_const): Add pure_const_write_summary and
5343         pure_const_read_summary.
5344         * ipa-reference.c: Include lto-streamer.h.
5345         (add_new_function): New.
5346         (remove_node_data): New.
5347         (duplicate_node_data): New.
5348         (ipa_init): Guard against multiple calls.
5349         Move hook setup from analyze_function.
5350         (write_node_summary_p): New.
5351         (ipa_reference_write_summary): New.
5352         (ipa_reference_read_summary): New.
5353         (pass_ipa_reference): Add ipa_reference_write_summary and
5354         ipa_reference_read_summary.
5355         * cgraph.h (cgraph_local_info): Add field lto_file_data.
5356         (struct cgraph_edge): Add fields lto_stmt_uid and
5357         call_stmt_cannot_inline_p.
5358         (cgraph_optimize): Declare.
5359         (cgraph_decide_is_function_needed): Declare.
5360         (reset_inline_failed): Declare.
5361         (enum LTO_cgraph_tags): Declare.
5362         (LTO_cgraph_tag_names): Declare.
5363         (LCC_NOT_FOUND): Define.
5364
5365 2009-10-03  Doug Kwan  <dougkwan@google.com>
5366             Rafael Espindola  <espindola@google.com>
5367             Jan Hubicka  <jh@suse.cz>
5368             Diego Novillo  <dnovillo@google.com>
5369             Kenneth Zadeck  <zadeck@naturalbridge.com>
5370
5371         * passes.c (all_regular_ipa_passes): New.
5372         (all_ipa_passes): Rename to all_small_ipa_passes.
5373         (init_optimization_passes): Init all_regular_ipa_passes.
5374         * tree-pass.h (all_regular_ipa_passes): New.
5375         (all_ipa_passes): Rename to all_small_ipa_passes.
5376         * passes.c (all_lto_gen_passes): New.
5377         (init_optimization_passes): Initialize all_lto_gen_passes.
5378         (execute_ipa_summary_passes): Make non-static.
5379         (ipa_write_summaries_1): New.
5380         (ipa_write_summaries_2): New.
5381         (ipa_write_summaries): New.
5382         (ipa_write_summaries_of_cgraph_node_set): New.
5383         (ipa_read_summaries_1): New.
5384         (ipa_read_summaries): New.
5385         (execute_ipa_pass_list): Call cgraph_process_new_functions.
5386         (execute_regular_ipa_pass_list): Remove.
5387         (init_optimization_passes): Schedule
5388         pass_rebuild_cgraph_edges and pass_early_inline outside
5389         of pass_all_early_optimizations.  Document reason.
5390         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
5391         pass_ipa_lto_finish_out): New pass.
5392         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
5393         (execute_all_ipa_transforms): New.
5394         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
5395         (dump_properties, debug_properties): New.
5396         * tree-optimize.c (gate_all_early_local_passes): Return
5397         false if we are in lto1.
5398         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
5399         * tree-pass.h (execute_all_ipa_transforms): Declare.
5400         (pass_ipa_function_and_variable_visibility): Declare.
5401         (pass_ipa_early_inline): Declare.
5402         (pass_ipa_lto_gimple_out): Declare.
5403         (pass_ipa_lto_wpa_fixup): Declare.
5404         (pass_ipa_lto_finish_out): Declare.
5405         (all_small_ipa_passes, all_regular_ipa_passes,
5406         all_lto_gen_passes): Declare.
5407         (execute_ipa_summary_passes): Declare.
5408         (execute_all_ipa_transforms): Declare.
5409         (ipa_write_summaries): Declare
5410         (ipa_write_summaries_of_cgraph_node_set): Declare.
5411         (ipa_read_summaries): Declare.
5412
5413 2009-10-03  Doug Kwan  <dougkwan@google.com>
5414             Ollie Wild  <aaw@google.com>
5415
5416         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
5417
5418         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
5419         (lto_mode): New variable.
5420         (maybe_run_lto_and_relink): Handle the -fwpa option.
5421         (main): Handle the -fwpa option.
5422         (maybe_unlink_list): New function.
5423         * gcc.c (link_lto_options): Replace -flto with -fwpa.
5424         * common.opt (flto): New flag.
5425         * toplev.c (flag_generate_lto): Declare.
5426
5427 2009-10-03  Simon Baldwin  <simonb@google.com>
5428
5429         * common.opt (flto-compression-level): New flag.
5430
5431         * opts.c: Include lto-opts.h.
5432         (handle_option): Call lto_register_user_option for each
5433         valid option handled.
5434         (decode_options): Clear registered options before the options
5435         handling loop.
5436
5437 2009-10-03  Cary Coutant  <ccoutant@google.com>
5438
5439         * collect2.c (is_elf): New function.
5440         (scan_prog_file): Require LTO object to be in ELF format.
5441
5442 2009-10-03  Rafael Espindola  <espindola@google.com>
5443
5444         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
5445         libgcc to the linker.
5446
5447         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
5448
5449         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
5450         (collect_execute): Add flags argument. Pass flags to pex_run. Update
5451         all callers.
5452         * collect2.h (collect_execute): Add flags argument.
5453         * tlink.c (tlink_execute): Update call to collect_execute.
5454         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
5455         (use_linker_plugin): New.
5456         (use_linker_plugin_spec_function): New.
5457         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
5458         (linker_plugin_file_spec): New.
5459         (lto_wrapper_spec): New.
5460         (lto_gcc_spec): New.
5461         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
5462         (static_spec_functions): Add use-linker-plugin.
5463         (process_command): Handle -use-linker-plugin.
5464         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
5465         linker_plugin_file_spec and lto_gcc_spec.
5466         (use_linker_plugin_spec_function): New.
5467
5468 2009-10-03  Richard Guenther  <rguenther@suse.de>
5469
5470         PR lto/41547
5471         PR lto/41548
5472         * tree.h (is_lang_specific): Include LANG_TYPE.
5473         * tree.c (find_decls_types_r): Manually add interesting parts
5474         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
5475
5476         * gimple.c (type_pair_hash): Make symmetric.
5477         (type_pair_eq): Likewise.
5478         (lookup_type_pair): Increase initial hashtable size.
5479         (gimple_force_type_merge): Rely on type-pair symmetry.
5480         (visit): Remove excessive checking code.
5481         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
5482         (gimple_register_type): Remove getenv calls, shrink initial
5483         hashtable size.
5484
5485         PR middle-end/41502
5486         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
5487         inline functions if not generating lto output.
5488
5489         PR lto/41379
5490         * toplev.c (finalize): In WPA mode remove the asm file.
5491
5492 2009-10-03  Doug Kwan  <dougkwan@google.com>
5493
5494         * ipa-inline.c (cgraph_mark_inline): Check
5495         edge->call_stmt_cannot_inline_p instead of calling
5496         gimple_call_cannot_inline_p.
5497         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
5498         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
5499         (inline_generate_summary): Do nothing in LTRANS.
5500         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
5501         exists before calling gimple_call_cannot_inline_p.
5502         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
5503         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
5504         Update new_edge->lto_stmt_uid.
5505         * cgraphbuild.c (reset_inline_failed): New.
5506
5507         * common.opt (fwpa): New flag.
5508         (fltrans): New option.
5509         * gcc.c (gcc_lto_option_t): New type.
5510         (current_lto_option): New variable.
5511         (lto_single_spec_function): Remove and is replaced by ..
5512         (lto_option_spec_function): New function.
5513         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
5514         passing the -flto flag.
5515         (cc1_options): Separate non-LTO related parts into ..
5516         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
5517         (lto1_options): New spec for lto FE.
5518         (link_lto_options): New spec for handling LTO flags in linker.
5519         (invoke_lto_single): Re-format to fit in 80 column.  Replace
5520         lto-single with lto-option.
5521         (static_specs): Add cc1_non_lto_options, lto1_options and
5522         link_lto_options.
5523         (static_spec_function): Replace lto-single with lto-option.
5524         (process_command): Handle -flto, -fwpa and -fltran by setting
5525         current_lto_option and not passing it to subprocess unconditionally.
5526
5527 2009-10-03  Bill Maddox  <maddox@google.com>
5528
5529         Add `gcc' driver support for link-time code generation (LTO).
5530
5531         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
5532         (lto_flag, lto_objects, lto_o_file): New variables.
5533         (struct lto_object, struct lto_object_list): New structures.
5534         (collect_exit, handler): Remove LTO temporary output file on exit.
5535         (add_lto_object): New function.
5536         (maybe_run_lto_and_relink): New function. Perform link time code
5537         generation and relinking for object files containing LTO information.
5538         (main): Invoke maybe_run_lto_and_relink().
5539         (dump_argv): New function.  For debugging, currently disabled.
5540         (scan_prog_file): Add LTO information pass.
5541         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
5542         collect2.
5543         * toplev.c (compile_file): Emit assembler directive to create
5544         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
5545
5546 2009-10-03  Diego Novillo  <dnovillo@google.com>
5547
5548         * c.opt: Add LTO to warn_abi and warn_psabi.
5549
5550         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
5551         inline function.  Ignore language-specific nodes.  Update all users.
5552         (find_decls_types_r): Do not traverse the subtrees of
5553         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
5554         * tree.h (is_lang_specific): New.
5555         * langhooks.h (struct lang_hooks_for_decls): Remove
5556         may_need_assembler_name_p.  Update all users.
5557
5558         * c-common.c (set_builtin_user_assembler_name): Move ...
5559         * builtins.c (set_builtin_user_assembler_name): ... here.
5560         (is_builtin_name): Add comment
5561         (is_builtin_fn): New.
5562         * except.c (output_ttype): Only call
5563         lookup_type_for_runtime if TYPE is not a runtime type.
5564
5565         * passes.c (register_pass): Call position_pass on
5566         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
5567         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
5568         (TV_IPA_LTO_DECL_IO): Define.
5569         (TV_IPA_LTO_CGRAPH_IO): Define.
5570         (TV_LTO): Define.
5571         (TV_WHOPR_WPA): Define.
5572         (TV_WHOPR_WPA_IO): Define.
5573         (TV_WHOPR_LTRANS): Define.
5574         (TV_WHOPR_WPA_FIXUP): Define.
5575         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
5576         * tree-cfg.c (tree_node_can_be_shared): Make extern.
5577         * tree-flow.h (tree_node_can_be_shared): Declare.
5578         * tree-inline.c (tree_can_inline_p): Check that E has a
5579         statement associated with it.
5580         * tree.c (free_lang_data_in_binf): Factor out of ...
5581         (free_lang_data_in_type): ... here.
5582         Call RECORD_OR_UNION_TYPE_P.
5583         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
5584         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
5585         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
5586         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
5587         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
5588         (gate_free_lang_data): Return true if flag_generate_lto is set.
5589         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
5590         * c-common.h (set_builtin_user_assembler_name): Move ...
5591         * tree.h (set_builtin_user_assembler_name): ... here.
5592
5593         * common.opt (flto-report): New flag.
5594         * opts.c (complain_wrong_lang): Do not complain if running lto1.
5595         * collect2.c (scan_prog_file): Send the error output of
5596         'nm' to HOST_BIT_BUCKET.
5597
5598 2009-10-03  Ollie Wild  <aaw@google.com>
5599
5600         * langhooks-def.h (lhd_begin_section): New function declaration.
5601         (lhd_write_section): New function declaration.
5602         (lhd_end_section): New function declaration.
5603         (LANG_HOOKS_BEGIN_SECTION): New macro.
5604         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
5605         (LANG_HOOKS_END_SECTION): New macro.
5606         (LANG_HOOKS_LTO): New macro.
5607         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
5608         * langhooks.c (output.h): Add include.
5609         (saved_section): New static variable.
5610         (lhd_begin_section): New function.
5611         (lhd_write_section_data): New function.
5612         (lhd_end_section): New function.
5613         * langhooks.h (struct lang_hooks_for_lto): New structure.
5614         (struct lang_hooks): Add member lto.
5615         * Makefile.in (langhooks.o): Add dependency on output.h.
5616
5617         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
5618
5619 2009-10-03  Richard Guenther  <rguenther@suse.de>
5620
5621         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
5622         Handle LTO.
5623
5624 2009-10-03  Simon Baldwin  <simonb@google.com>
5625             Richard Guenther  <rguenther@suse.de>
5626             Janis Johnson  <janis187@us.ibm.com>
5627             Doug Kwan  <dougkwan@google.com>
5628             Diego Novillo  <dnovillo@google.com>
5629             Ramana Radhakrishnan  <ramana.r@gmail.com>
5630             Ollie Wild  <aaw@google.com>
5631
5632         * doc/install.texi: Add documentation for libelf and --enable-lto.
5633         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
5634         -flto-report, -flto-compression-level and -use-linker-plugin.
5635         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
5636         Add section for LTO Testing.
5637
5638 2009-10-02  Cary Coutant  <ccoutant@google.com>
5639
5640         Add support for comdat type sections for DWARF v4.
5641         Merge from dwarf4 branch.
5642
5643         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
5644         (dw_die_ref): Define vector type.
5645         (enum dw_val_class): Add dw_val_class_data8.
5646         (struct dw_val_struct): Add v.val_data8.
5647         (comdat_type_node_ref): New type.
5648         (struct die_struct): Move die_symbol into a union; add new field
5649         die_type_node.  Change all uses.
5650         (comdat_type_node): New type.
5651         (skeleton_chain_node): New type.
5652         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
5653         (comdat_type_list): New variable.
5654         (dwarf_tag_name): Add DW_TAG_type_unit.
5655         (dwarf_attr_name): Add DW_AT_signature.
5656         (add_AT_data8): New function.
5657         (replace_child): New function.
5658         (move_all_children): New function.
5659         (print_signature): New function.
5660         (print_die): Print signature information; add dw_val_class_data8.
5661         (attr_checksum): Support dw_val_class_data8.
5662         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
5663         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
5664         (checksum_sleb128, checksum_uleb128): New functions.
5665         (checksum_die_context): New function.
5666         (loc_checksum_ordered): New function.
5667         (attr_checksum_ordered): New function.
5668         (struct checksum_attributes): New structure.
5669         (collect_checksum_attributes): New function.
5670         (die_checksum_ordered): New function.
5671         (generate_type_signature): New function.
5672         (same_dw_val_p): Add dw_val_class_data8.
5673         (is_symbol_die): Use new is_declaration_die function.
5674         (is_declaration_die): New function.
5675         (should_move_die_to_comdat): New function.
5676         (clone_die): New function.
5677         (clone_tree): New function.
5678         (clone_as_declaration): New function.
5679         (copy_declaration_context): New function.
5680         (generate_skeleton_ancestor_tree): New function.
5681         (generate_skeleton_bottom_up): New function.
5682         (generate_skeleton): New function.
5683         (remove_child_or_replace_with_skeleton): New function.
5684         (break_out_comdat_types): New function.
5685         (struct decl_table_entry): New type.
5686         (htab_decl_hash): New function.
5687         (htab_decl_eq): New function.
5688         (htab_decl_del): New function.
5689         (copy_ancestor_tree): New function.
5690         (copy_decls_walk): New function.
5691         (copy_decls_for_unworthy_types): New function.
5692         (build_abbrev_table): Don't assert on missing die_symbol when doing
5693         comdat type sections.
5694         (size_of_die): Use DW_FORM_sig8 for external references.  Add
5695         dw_val_class_data8.
5696         (unmark_dies): Don't assert for unmarked dies when doing comdat
5697         type sections.
5698         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
5699         (output_signature): New function.
5700         (output_die): Likewise.
5701         (output_compilation_unit_header): Mark output as DWARF version 3
5702         even if generating DWARF 4.
5703         (output_comdat_type_unit): New function.
5704         (output_line_info): Mark output as DWARF version 3 even if generating
5705         DWARF 4.
5706         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
5707         DWARF-4.
5708         (dwarf2out_end_source_file): Likewise.
5709         (prune_unused_types_walk_attribs): Don't follow references into
5710         comdat type sections.
5711         (prune_unused_types_mark): When generating type units, do not mark
5712         children of non-defining declarations of types; do mark children of
5713         type entries.
5714         (prune_unused_types): Process comdat type sections.
5715         (htab_ct_hash): New function.
5716         (htab_ct_eq): New function.
5717         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
5718         Add a pointer to the line table from type unit entries so
5719         DW_AT_decl_file has meaning.
5720         * varasm.c (default_elf_asm_named_section): Use identifier name as
5721         comdat key instead of lang hook.
5722
5723 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
5724
5725         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
5726
5727 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
5728
5729         * config/i386/i386.md (SWIM248): New mode iterator.
5730         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
5731         divmodhi4 patterns using SWIM248 macro.
5732         (*divmod<mode>4): Macroize insn_and_split pattern from
5733         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
5734         and their corresponding splitters usign SWIM248 macro.  Split SImode
5735         insn to generate cltd and DImode insn to generate cqto instead of
5736         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
5737         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
5738         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
5739         *divmodsi_noext patterns using SWIM248 macro.
5740         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
5741         udivmodhi4 patterns using SWIM248 macro.
5742         (*udivmod<mode>4): Macroize insn_and_split pattern from
5743         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
5744         corresponding splitters using SWIM248 macro.
5745         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
5746         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
5747
5748 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
5749
5750         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
5751         of zero-sized element is zero-sized regardless of its extent.
5752
5753 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
5754
5755         PR debug/40521
5756         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
5757         * configure: Regenerated.
5758         * config.in: Regenerated.
5759         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
5760         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
5761         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
5762         not emitting .eh_frame, emit .cfi_sections .debug_frame
5763         directive.
5764
5765         PR debug/41404
5766         PR debug/41353
5767         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
5768         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
5769         with '\0'.
5770         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
5771         vars use DECL_RTL with resetting it back to NULL afterwards.
5772         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
5773         rtx_equal_p instead of asserting it is a SYMBOL_REF.
5774         (value_format): For dw_val_class_addr only use DW_FORM_addr if
5775         the attribute type allows it, otherwise use DW_FORM_dataN.
5776         (mem_loc_descriptor): Handle CONST_STRING.
5777         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
5778         Handle MEM with CONST_STRING address using add_AT_string.
5779         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
5780         CONST_STRING for const arrays initialized with a string literal.
5781         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
5782         (dwarf2out_finish): Call resolve_addr.
5783
5784 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
5785             Maxim Kuvyrkov  <maxim@codesourcery.com>
5786
5787         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
5788
5789 2009-10-02  Nick Clifton  <nickc@redhat.com>
5790
5791         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
5792         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
5793
5794 2009-10-01  Jan Hubicka  <jh@suse.cz>
5795
5796         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
5797         (cgraph_create_virtual_clone): Just pass redirect_callers
5798         around.
5799         * cgraph.h (cgraph_clone_node): Update prototype.
5800         * ipa-pure-const.c (self_recursive_p): New function.
5801         (propagate): Use it.
5802         * ipa-inline.c (cgraph_clone_inlined_nodes,
5803         cgraph_decide_recursive_inlining): Update.
5804
5805 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
5806
5807         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
5808         instructions for TARGET_OCTEON.
5809
5810 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5811
5812         * config/arm/arm.c (arm_override_options): Turn off
5813         flag_dwarf2_cfi_asm for AAPCS variants.
5814
5815 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5816
5817         PR middle-end/12392
5818         * tree-sra.c (convert_callers): Do not call
5819         compute_inline_parameters on one caller more than once.
5820
5821 2009-10-01  Nick Clifton  <nickc@redhat.com>
5822
5823         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
5824         an empty string if not already defined.
5825
5826 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5827
5828         PR bootstrap/41395
5829         * tree-sra.c (is_va_list_type): New function.
5830         (find_var_candidates): Call is_va_list_type.
5831         (find_param_candidates): Check that the type or the type pointed
5832         to are not va_list types.
5833
5834 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5835
5836         PR c++/41503
5837         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
5838         DECL_ARTIFICIAL (param_decl) is true.
5839
5840 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
5841
5842         * tree.h (tree_decl_common::lang_flag_8): New.
5843         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
5844         keyword.
5845         * c-common.h (RID_CONSTEXPR): New.
5846
5847 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
5848
5849         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
5850         Use ref-all pointers.
5851         (alpha_gimplify_va_arg): Ditto.
5852
5853 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
5854
5855         PR target/41279
5856         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
5857         before insn counting loop now that BB_END (bb) is counted.  Ensure
5858         the return value isn't zero.
5859
5860 2009-09-30  Nick Clifton  <nickc@redhat.com>
5861
5862         * config.gcc (sh-symbianelf): Replace definition of extra_objs
5863         with separate definitions of c_target_objs and cxx_target_objs.
5864         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
5865         and symbian-base.o.
5866         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
5867         sh_symbian_import_export_class.
5868         * config/sh/sh-protos.h: Fix names of exported symbian functions.
5869         * config/sh/symbian.c: Delete, moving code into...
5870         * config/sh/symbian-base.c: ... here
5871         * config/sh/symbian-c.c: ... and here
5872         * config/sh/symbian-cxx.c: ... and here.
5873
5874 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
5875
5876         PR target/22093
5877         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
5878         of plus RTX into register.
5879
5880 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5881
5882         * doc/install.texi: Linguistic and markup fixes.
5883         (Configuration) <--disable-cpp>: Remove description.
5884         <--enable-maintainer-mode>: Autotools files are affected, too.
5885         <--with-sysroot>: Improve description.
5886         (Building): Bump required GNU make version.
5887
5888 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
5889
5890         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
5891         (x86_64-*-*): Ditto.
5892
5893         * config/i386/fma4intrin.h: New file, provide common x86 compiler
5894         intrinisics for FMA4.
5895         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
5896         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
5897         Add FMA4 check and fma4intrin.h.
5898         * config/i386/i386-c.c(ix86_target_macros_internal): Check
5899         ISA_FLAG for FMA4.
5900         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
5901         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
5902         constant for FMA4 support.
5903         (UNSPEC_FMA4_FMADDSUB): Ditto.
5904         (UNSPEC_FMA4_FMSUBADD): Ditto.
5905         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
5906         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
5907         (ix86_expand_fma4_multiple_memory): Ditto.
5908         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
5909         (OPTION_MASK_ISA_FMA4_UNSET): New.
5910         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
5911         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
5912         (ix86_handle_option): Handle -mfma4.
5913         (isa_opts): Handle -mfma4.
5914         (enum pta_flags): Add PTA_FMA4.
5915         (override_options): Add FMA4 support.
5916         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
5917         (IX86_BUILTIN_VFMADDSD): Ditto.
5918         (IX86_BUILTIN_VFMADDPS): Ditto.
5919         (IX86_BUILTIN_VFMADDPD): Ditto.
5920         (IX86_BUILTIN_VFMSUBSS): Ditto.
5921         (IX86_BUILTIN_VFMSUBSD): Ditto.
5922         (IX86_BUILTIN_VFMSUBPS): Ditto.
5923         (IX86_BUILTIN_VFMSUBPD): Ditto.
5924         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
5925         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
5926         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
5927         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
5928         (IX86_BUILTIN_VFNMADDSS): Ditto.
5929         (IX86_BUILTIN_VFNMADDSD): Ditto.
5930         (IX86_BUILTIN_VFNMADDPS): Ditto.
5931         (IX86_BUILTIN_VFNMADDPD): Ditto.
5932         (IX86_BUILTIN_VFNMSUBSS): Ditto.
5933         (IX86_BUILTIN_VFNMSUBSD): Ditto.
5934         (IX86_BUILTIN_VFNMSUBPS): Ditto.
5935         (IX86_BUILTIN_VFNMSUBPD): Ditto.
5936         (IX86_BUILTIN_VFMADDPS256): Ditto.
5937         (IX86_BUILTIN_VFMADDPD256): Ditto.
5938         (IX86_BUILTIN_VFMSUBPS256): Ditto.
5939         (IX86_BUILTIN_VFMSUBPD256): Ditto.
5940         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
5941         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
5942         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
5943         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
5944         (IX86_BUILTIN_VFNMADDPS256): Ditto.
5945         (IX86_BUILTIN_VFNMADDPD256): Ditto.
5946         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
5947         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
5948         (enum multi_arg_type): New enum for describing the various FMA4
5949         intrinsic argument types.
5950         (bdesc_multi_arg): New table for FMA4 intrinsics.
5951         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
5952         (ix86_expand_multi_arg_builtin): New function for creating FMA4
5953         intrinsics.
5954         (ix86_expand_builtin): Add FMA4 intrinsic support.
5955         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
5956         operand instructions.
5957         (ix86_expand_fma4_multiple_memory): New function to split the
5958         second memory reference from FMA4 instructions.
5959         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
5960         (ssemodesuffixf2s): Ditto.
5961         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
5962         instructions.
5963         (fma4_fmsub<mode>4): Ditto.
5964         (fma4_fnmadd<mode>4): Ditto.
5965         (fma4_fnmsub<mode>4): Ditto.
5966         (fma4_vmfmadd<mode>4): Ditto.
5967         (fma4_vmfmsub<mode>4): Ditto.
5968         (fma4_vmfnmadd<mode>4): Ditto.
5969         (fma4_vmfnmsub<mode>4): Ditto.
5970         (fma4_fmadd<mode>4256): Ditto.
5971         (fma4_fmsub<mode>4256): Ditto.
5972         (fma4_fnmadd<mode>4256): Ditto.
5973         (fma4_fnmsub<mode>4256): Ditto.
5974         (fma4_fmaddsubv8sf4): Ditto.
5975         (fma4_fmaddsubv4sf4): Ditto.
5976         (fma4_fmaddsubv4df4): Ditto.
5977         (fma4_fmaddsubv2df4): Ditto.
5978         (fma4_fmsubaddv8sf4): Ditto.
5979         (fma4_fmsubaddv4sf4): Ditto.
5980         (fma4_fmsubaddv4df4): Ditto.
5981         (fma4_fmsubaddv2df4): Ditto.
5982         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
5983         instructions for intrinsics.
5984         (fma4i_fmsub<mode>4): Ditto.
5985         (fma4i_fnmadd<mode>4): Ditto.
5986         (fma4i_fnmsub<mode>4): Ditto.
5987         (fma4i_vmfmadd<mode>4): Ditto.
5988         (fma4i_vmfmsub<mode>4): Ditto.
5989         (fma4i_vmfnmadd<mode>4): Ditto.
5990         (fma4i_vmfnmsub<mode>4): Ditto.
5991         (fma4i_fmadd<mode>4256): Ditto.
5992         (fma4i_fmsub<mode>4256): Ditto.
5993         (fma4i_fnmadd<mode>4256): Ditto.
5994         (fma4i_fnmsub<mode>4256): Ditto.
5995         (fma4i_fmaddsubv8sf4): Ditto.
5996         (fma4i_fmaddsubv4sf4): Ditto.
5997         (fma4i_fmaddsubv4df4): Ditto.
5998         (fma4i_fmaddsubv2df4): Ditto.
5999         (fma4i_fmsubaddv8sf4): Ditto.
6000         (fma4i_fmsubaddv4sf4): Ditto.
6001         (fma4i_fmsubaddv4df4): Ditto.
6002         (fma4i_fmsubaddv2df4): Ditto.
6003
6004         * doc/invoke.texi (-mfma4): Add documentation.
6005         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
6006
6007 2009-09-29  Richard Henderson  <rth@redhat.com>
6008
6009         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
6010         an edge to the new destination block.
6011
6012 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6013
6014         PR target/41393
6015         * pa.c (hppa_profile_hook): Use
6016         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
6017
6018 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
6019             Alexander Monakov  <amonakov@ispras.ru>
6020
6021         PR target/41365
6022         * config/ia64/predicates.md (not_postinc_destination_operand): New.
6023         (not_postinc_memory_operand): New.
6024         (not_postinc_move_operand): New.
6025         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
6026         (*cmovsi_internal): Ditto.
6027
6028 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
6029
6030         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
6031         restrict issue_rate in first pass when scheduling for register
6032         pressure.
6033
6034 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
6035             Rafael Avila de Espindola  <espindola@google.com>
6036
6037         * gengtype.c (plugin_output): New.
6038         (get_output_file_with_visibility): Return plugin_output for plugins.
6039         (main): Parse and use the -P option.
6040         * gty.texi: Update the command line format.
6041
6042 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
6043
6044         PR debug/41438
6045         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
6046         functions.
6047         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
6048         out if !const_ok_for_output.
6049
6050         PR debug/41474
6051         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
6052         case VAR_LOCATION>: Remove gcc_unreachable ().
6053
6054 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
6055
6056         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
6057         (x86_64-*-*): Ditto.
6058         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
6059         back to smmintrin.h.
6060         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
6061         * config/i386/x86intrin.h: Remove SSE5.
6062         * config/i386/mmintrin-common.h: Delete file.
6063         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
6064
6065 2009-09-29  Richard Guenther  <rguenther@suse.de>
6066
6067         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
6068         resulting from stack temporaries on STRICT_ALIGNMENT targets.
6069
6070 2009-09-29  Nick Clifton  <nickc@redhat.com>
6071
6072         * function.c (current_function_name): If there is no current
6073         function just return "<none>".
6074
6075 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
6076
6077         * tree-pass.h (register_pass_info): New structure.
6078         (pass_positioning_ops): Move enum from gcc-plugin.h.
6079         (register_pass): New function.
6080         * gcc-plugin.h (plugin_pass): Delete structure.
6081         (pass_positioning_ops): Delete enum.
6082         * plugin.c (regsiter_pass): Delete function.
6083         (position_pass): Delete function.
6084         (added_pass_nodes): Delete variable.
6085         (prev_added_pass_nodes): Delete variable.
6086         (pass_list_node): Delete structure.
6087         * passes.c (make_pass_instance): New function.
6088         (next_pass_1): Change to call make_pass_instance.
6089         (pass_list_node): Move structure from gcc-plugin.h.
6090         (added_pass_nodes): Move variable from plugin.c.
6091         (prev_added_pass_nodes): Move variable from plugin.c.
6092         (position_pass): New function.
6093         (register_pass): New function.
6094
6095 2009-09-28  Easwaran Raman  <eraman@google.com>
6096
6097         * ifcvt.c (noce_try_abs): Recognize pattern and call
6098         expand_one_cmpl_abs_nojump.
6099         * optabs.c (expand_one_cmpl_abs_nojump): New function.
6100         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
6101
6102 2009-09-28  Ian Lance Taylor  <iant@google.com>
6103
6104         PR middle-end/40500
6105         * c-opts.c (c_common_handle_option): Don't set
6106         warn_jump_misses_init for -Wall.
6107         * doc/invoke.texi (Warning Options): Update documentation.
6108
6109 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6110
6111         * Makefile.in ($(out_object_file)): Depend on
6112         gt-$(basename $(notdir $(out_file))).h.
6113
6114 2009-09-28  Richard Henderson  <rth@redhat.com>
6115
6116         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
6117         * except.c (gen_eh_region): Set it.
6118         (duplicate_eh_regions_1): Copy it.
6119         * tree-eh.c (lower_resx): Use it to determine which function
6120         to call to resume.
6121
6122         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
6123         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
6124         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
6125         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
6126         BUILT_IN_CXA_END_CLEANUP if necessary.
6127
6128         * c-common.c (c_define_builtins): Update call to
6129         build_common_builtin_nodes.
6130
6131 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6132
6133         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
6134
6135 2009-09-28  Michael Matz  <matz@suse.de>
6136
6137         * builtins.c (interclass_mathfn_icode): New helper.
6138         (expand_builtin_interclass_mathfn): Use it here, and split folding
6139         into ...
6140         (fold_builtin_interclass_mathfn): ... this new folder.
6141         (build_call_nofold_loc): New static helper.
6142         (build_call_nofold): New wrapper macro for above.
6143         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
6144         (expand_builtin_pow): Ditto.
6145         (expand_builtin_memset_args): Ditto.
6146         (expand_builtin_printf): Ditto.
6147         (expand_builtin_fprintf): Ditto.
6148         (expand_builtin_sprintf): Ditto.
6149         (expand_builtin_memory_chk): Ditto.
6150         (expand_builtin_mempcpy_args): Ditto and don't call folders.
6151         (expand_builtin_stpcpy): Ditto.
6152         (expand_builtin_strcmp): Ditto.
6153         (expand_builtin_strncmp): Ditto.
6154         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
6155         (expand_builtin_strcpy_args): Don't call folders.
6156         (expand_builtin_memcmp): Ditto.
6157         (expand_builtin_strncpy): Ditto, and use target.
6158         (expand_builtin_memcpy): Ditto.
6159         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
6160         expand_builtin_strpbrk, expand_builtin_memmove,
6161         expand_builtin_memmove_args, expand_builtin_bcopy,
6162         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
6163         expand_builtin_strspn, expand_builtin_strcspn,
6164         expand_builtin_fputs): Remove these.
6165         (expand_builtin): Don't call the above, change calls to other
6166         expanders that changed prototype.
6167         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
6168         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
6169         fold_builtin_interclass_mathfn.
6170         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
6171         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
6172
6173         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
6174         * passes.c (init_optimization_passes): Move pass_fold_builtins
6175         after last phiopt pass.
6176         * tree-inline.c (fold_marked_statements): When folding builtins
6177         iterate over all instruction potentially generated.
6178         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
6179         earlier.
6180         (fold_gimple_call): Use it to always fold calls (into potentially
6181         multiple instructions).
6182         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
6183         calls into zero at this time.
6184         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
6185         statements generated by builtin folding.
6186
6187 2009-09-28  Nick Clifton  <nickc@redhat.com>
6188
6189         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
6190
6191 2009-09-28  Duncan Sands  <baldrick@free.fr>
6192
6193         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
6194         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
6195         (register_callback): Dispatch it.
6196         (invoke_plugin_callbacks): Incorporate in sanity check.
6197         * ggc.h (ggc_register_cache_tab): Add declaration.
6198         * ggc-common.c (ggc_register_root_tab): Simplify.
6199         (const_ggc_cache_tab_t): New typedef.
6200         (extra_cache_vec): New vector of dynamically added cache tables.
6201         (ggc_register_cache_tab): New function.
6202         (ggc_scan_cache_tab): New function.
6203         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
6204         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
6205
6206 2009-09-27  Richard Henderson  <rth@redhat.com>
6207
6208         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
6209         which we remove __builtin_stack_restore.
6210
6211 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
6212
6213         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
6214         to test for GRD_INVARIANT.
6215         (simple_rhs_p): Anything that's function_invariant_p is fine.
6216
6217 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
6218
6219         * gengtype.c (main): Use plunge_files instead of plugin_output.
6220
6221 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
6222             Rafael Avila de Espindola  <espindola@google.com>
6223
6224         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
6225         Don't print pch related info if it is false.
6226         (main): Don't print pch info in plugin mode.
6227
6228 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
6229
6230         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
6231         with dw_val_class_const_double.
6232         (struct dw_val_struct): Replace val_long_long with val_double and
6233         adjust for above change.
6234         (output_loc_operands): Likewise.
6235         (add_AT_long_long): Rename into...
6236         (add_AT_double): ...this.
6237         (print_die): Replace dw_val_class_long_long with
6238         dw_val_class_const_double and adjust.
6239         (attr_checksum): Likewise.
6240         (same_dw_val_p): Likewise.
6241         (size_of_die): Likewise.
6242         (value_format): Likewise.
6243         (output_die): Likewise.
6244         (loc_descriptor) <CONST_DOUBLE>: Likewise.
6245         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
6246         instead of add_AT_long_long.
6247         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
6248         value with the precision of its type.
6249
6250 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
6251
6252         PR c/41476
6253         * c-typeck.c (build_conditional_expr): Use the readonly and
6254         volatile flags of the operand types, not of the operands itself.
6255
6256 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
6257
6258         * collect2.c (main): Look for -brtl before adding libraries.
6259
6260 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
6261
6262         * config.gcc: Update OpenBSD targets.
6263         * config/openbsd-stdint.h: New file.
6264         * config/openbsd-libpthread.h: New file.
6265         * config/openbsd.h: Update and break out LIB_SPEC definition.
6266         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
6267         * config/i386/openbsdelf.h: Correct types.
6268         * config/m68k/openbsd.h: Likewise.
6269         * config/mips/openbsd.h: Likewise.
6270         * config/vax/openbsd.h: Likewise.
6271
6272 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
6273
6274         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
6275         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
6276         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
6277         of the length and zero.
6278
6279 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6280
6281         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
6282         (FLAGS_H): Add options.h $(REAL_H).
6283         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
6284         (TREE_VECTORIZER_H): New.
6285         (EBITMAP_H): Renamed from EBIMAP_H.
6286         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
6287         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
6288         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
6289         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
6290         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
6291         (graphite-clast-to-gimple.o, graphite-dependences.o)
6292         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
6293         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
6294         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
6295         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
6296         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
6297         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
6298         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
6299         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
6300         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
6301         updated and fixed as per above changes and per
6302         check_makefile_deps.sh output.
6303
6304         PR bootstrap/40928
6305         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
6306         * configure: Regenerate.
6307
6308 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6309
6310         * doc/install.texi: Update minimum MPC version to 0.7.
6311
6312 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
6313
6314         * doc/install.texi (Binaries): Remove reference to the binary
6315         distribution CD-ROM from the FSF.
6316
6317 2009-09-26  Michael Matz  <matz@suse.de>
6318
6319         PR lto/40758
6320         PR middle-end/41470
6321         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
6322         that are mentioned in the body.
6323
6324 2009-09-26  Michael Matz  <matz@suse.de>
6325
6326         PR tree-optimization/41454
6327         * tree-ssa-dom (stmts_to_rescan): Remove variable.
6328         (tree_ssa_dominator_optimize): Don't allocate and free it.
6329         (dom_opt_leave_block): Don't iterate over it.
6330         (eliminate_redundant_computations): Don't return a value.
6331         (cprop_operand, cprop_into_stmt): Ditto.
6332         (optimize_stmt): Don't defer updating stmts.
6333
6334 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
6335
6336         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
6337         generic_parameter_die, template_parameter_pack_die,
6338         gen_formal_parameter_die, gen_subprogram_die): Adjust after
6339         renaming DW_TAG_formal_parameter_pack and
6340         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
6341         and DW_TAG_GNU_template_parameter_pack.
6342
6343 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
6344
6345         * config/v850/v850.h (FUNCTION_VALUE): Remove.
6346         * config/v850/v850.c (v850_function_value): New function.
6347         (TARGET_FUNCTION_VALUE): Define.
6348
6349 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
6350
6351         * tree-vect-stmts.c (vectorizable_call): Call
6352         mark_symbols_for_renaming after vect_finish_stmt_generation.
6353
6354         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
6355         to loc_descriptor_from_tree.
6356         (add_location_or_const_value_attribute): Pass 0 instead of 2
6357         for decl_by_reference_p decls.
6358
6359 2009-09-25  Richard Guenther  <rguenther@suse.de>
6360
6361         PR middle-end/41463
6362         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
6363         arrays again.
6364
6365 2009-09-25  Ben Elliston  <bje@au.ibm.com>
6366
6367         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
6368         after `power7'.
6369
6370 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
6371
6372         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
6373         form of instruction.
6374
6375 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6376
6377         PR middle-end/41435
6378         * fold-const.c (const_binop): Handle complex int division.
6379         * tree-complex.c (expand_complex_div_straight,
6380         expand_complex_div_wide): Update comments.
6381
6382 2009-09-24  DJ Delorie  <dj@redhat.com>
6383
6384         PR target/41456
6385         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
6386         (reg_class): Likewise.
6387         (REG_CLASS_NAMES): Likewise.
6388         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
6389         (m32c_override_options): Disable -fivopts for M32C.
6390
6391 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
6392
6393         * config/rs6000/predicates.md (indexed_or_indirect_operand):
6394         Delete VSX load/store with update support.
6395         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
6396         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
6397         (vsx_movti): Ditto.
6398         (VSX_U): Delete.
6399         (VSbit): Ditto.
6400         (VStype_load_update): Ditto.
6401         (VStype_store_update): Ditto.
6402         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
6403         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
6404
6405         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
6406         load/store with update builtins.
6407
6408 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
6409
6410         * libgcc2.c (L_trampoline): Prototype for getpagesize
6411         and mprotect in WINNT case.
6412
6413 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
6414
6415         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
6416         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
6417         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
6418         'outgoing' argument.
6419         (TARGET_FUNCTION_VALUE): Define.
6420
6421 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
6422
6423         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
6424
6425 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
6426
6427         PR bootstrap/41405
6428         * common.opt: Initialize dwarf_strict to -1.
6429         * toplev.c (process_options): Catch unset dwarf_strict
6430         and set to 0 for all targets not overriding.
6431         * config/darwin.c (darwin_override_options): Catch unset
6432         dwarf_strict and override to 1.
6433
6434 2009-09-24  Jeff Law  <law@redhat.com>
6435
6436         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
6437
6438 2009-09-24  Richard Guenther  <rguenther@suse.de>
6439
6440         PR tree-optimization/36143
6441         PR tree-optimization/38747
6442         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
6443         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
6444
6445 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
6446
6447         PR bootstrap/41457
6448         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
6449         return false instead of gcc_unreachable ().  For CONST return the
6450         value returned by recursive call instead of always returning true.
6451         (tree_add_const_value_attribute): Return the value returned by
6452         add_const_value_attribute instead of always returning true if rtl
6453         is non-NULL.
6454
6455 2009-09-23  Justin Seyster  <jrseys@gmail.com>
6456
6457         * Makefile.in (PLUGIN_HEADERS): Include real.h.
6458
6459 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
6460
6461         * cgraphunit.c (cgraph_lower_function): Revert last change.
6462         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
6463         instead of DECL_NO_STATIC_CHAIN.
6464         * tree-cfg.c (verify_gimple_call): Likewise.
6465         * tree-nested.c (get_chain_decl, get_chain_field,
6466         convert_tramp_reference_op, convert_gimple_call): Likewise.
6467         (convert_all_function_calls): Likewise.  Always set or clear
6468         DECL_STATIC_CHAIN initially, for !n->outer clear it.
6469         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
6470         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
6471         if nested.
6472         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
6473         DECL_NO_STATIC_CHAIN.
6474         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
6475         instead of DECL_NO_STATIC_CHAIN.
6476         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
6477         decl_function_context.
6478         * varasm.c (initializer_constant_valid_p): Likewise.
6479         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
6480         (DECL_STATIC_CHAIN): ... this.
6481         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
6482         instead of DECL_NO_STATIC_CHAIN.
6483
6484 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
6485             Rafael Avila de Espindola  <espindola@google.com>
6486
6487         * gengtype.c (nb_plugin_files): Make it unsigned to match
6488         num_gt_files. Adjust other variables to avoid warnings.
6489         (main): Allocate an all zero lang_bitmap before each plugin file name
6490         to match regular file names.
6491
6492 2009-09-23  Richard Henderson  <rth@redhat.com>
6493
6494         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
6495         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
6496         static chain passed in memory.
6497         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
6498         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
6499         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
6500         STATIC_CHAIN_REGNUM defined.
6501
6502         * config/picochip/picochip-protos.h: s/class/klass/.
6503         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
6504         (picochip_static_chain): New.
6505         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
6506         (STATIC_CHAIN_INCOMING): Remove.
6507
6508         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
6509         (xtensa_static_chain): New.
6510         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
6511         (STATIC_CHAIN_INCOMING): Remove.
6512
6513 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
6514
6515         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
6516         * config/pa/pa-protos.h (function_value): Remove.
6517         * config/pa/pa.c (pa_function_value): Rename from function_value.
6518         Make static, add 'outgoing' argument.
6519         (TARGET_FUNCTION_VALUE): Define.
6520
6521 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
6522
6523         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
6524         instead of cfun->machine->is_leaf.
6525         * config/avr/avr.h (machine_function): Remove is_leaf field.
6526
6527 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
6528
6529         PR debug/41439
6530         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
6531         DW_OP_piece after DW_OP_stack_value, adjust size calculations
6532         for it, when DW_OP_stack_value and DW_OP_implicit_value has
6533         the same size, prefer DW_OP_stack_value.
6534         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
6535         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
6536
6537 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
6538
6539         PR debug/41353
6540         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
6541
6542 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
6543
6544         PR debug/41248
6545         * cfgexpand.c (convert_debug_memory_address): New.
6546         (expand_debug_expr): Convert base address and offset to the same
6547         mode.  Use it to convert addresses to other modes.  Accept
6548         ptr_mode addresses.
6549
6550 2009-09-23  Dodji Seketeli <dodji@redhat.com>
6551
6552         PR debug/41065
6553         * function.h (types_used_by_vars_hash): Declare new hash table.
6554         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
6555         equality and hash function for the hash table.
6556         (types_used_by_cur_var_decl): Declare a new global chained list.
6557         (types_used_by_var_decl_insert): Declare new function.
6558         * function.c (types_used_by_vars_hash): Define the hashtable ...
6559         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
6560         its equality and hash functions.
6561         (hash_types_used_by_vars_entry): New hash helper.
6562         (types_used_by_cur_var_decl): Define the global chained list.
6563         (used_types_insert): Update the list of types used by the global
6564         variable being parsed.
6565         (types_used_by_var_decl_insert): Define new function.
6566         * c-common.h (record_types_used_by_current_var_decl): Declare ...
6567         * c-common.c (record_types_used_by_current_var_decl): ... new
6568         function.
6569         * c-decl.c (finish_decl): Record the types used by the global
6570         variable declaration we've just parsed.
6571         * dwarf2out.c (premark_used_types): Insert a new line between
6572         comment and function.
6573         (premark_used_types_helper): Fix comment.
6574         (premark_types_used_by_global_vars_helper,
6575         premark_types_used_by_global_vars): New functions.
6576         (prune_unused_types): Do not prune types used by global variables.
6577
6578 2009-09-23  Richard Guenther  <rguenther@suse.de>
6579
6580         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
6581         produced for bigendian targets with promoted subregs.
6582
6583 2009-09-23  Richard Guenther  <rguenther@suse.de>
6584
6585         * value-prof.c (gimple_ic): Purge old EH edges only after building
6586         the new ones.
6587
6588 2009-09-23  Nick Clifton  <nickc@redhat.com>
6589
6590         * config/arc/arc.c (arc_trampoline_init): Fix typo.
6591
6592 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
6593
6594         PR bootstrap/41405
6595         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
6596
6597         PR bootstrap/41436
6598         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
6599         on non-nested functions.
6600
6601 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
6602             Jan Hubicka  <jh@suse.cz>
6603
6604         * dwarf2out.c (loc_list_plus_const): Only define if
6605         DWARF2_DEBUGGING_INFO.
6606         (address_of_int_loc_descriptor): Likewise.
6607
6608         PR debug/41411
6609         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
6610
6611 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
6612
6613         PR c/39779
6614         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
6615         constant is more than zero.
6616
6617 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
6618
6619         PR target/40473
6620         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
6621         call final to emit non-scheduled prologue, instead insert at entry.
6622
6623 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
6624             Joseph S. Myers  <joseph@codesourcery.com>
6625
6626         * doc/install.texi (*-*-freebsd*): Add proper format codes.
6627
6628 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
6629             Rafael Avila de Espindola  <espindola@google.com>
6630
6631         * gengtype.c (is_file_equal): New function.
6632         (close_output_files): Use is_file_equal. Free of->buf.
6633
6634 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
6635             Rafael Avila de Espindola  <espindola@google.com>
6636
6637         * gengtype.c (write_types, write_local): Add the output_header
6638         argument. Update all callers.
6639
6640 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
6641
6642         * dwarf2out.c (template_parameter_pack_die,
6643         gen_formal_parameter_pack_die ): New functions.
6644         (make_ith_pack_parameter_name): Remove this function.
6645         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
6646         DW_TAG_formal_parameter_pack.
6647         (gen_generic_params_dies): Represent each template parameter pack
6648         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
6649         represented by usual DW_TAG_template_*_parameter DIEs that are
6650         children of the DW_TAG_template_parameter_pack element DIE.
6651         (generic_parameter_die): This doesn't deal with parameter pack
6652         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
6653         of parameter pack DIEs.
6654         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
6655         in certain cases, e.g. for pack elements.
6656         (gen_formal_types_die, gen_decl_die): Adjust usage of
6657         gen_formal_parameter_die.
6658         (gen_subprogram_die): Represent each function parameter pack by a
6659         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
6660         represented by usual DW_TAG_formal_parameter DIEs that are children
6661         of the DW_TAG_formal_parameter_pack DIE. Remove references to
6662         ____builtin_va_alist decls as no part of the compiler uses those
6663         anymore.
6664         * langhooks.h (struct lang_hooks_for_decls): Add
6665         function_parm_expanded_from_pack_p, get_generic_function_decl
6666         and function_parameter_pack_p hooks.  Fix comment for
6667         get_innermost_generic_parms hook.
6668         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
6669         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
6670         macros and use them to initialize lang_hook.
6671
6672 2009-09-22  Richard Henderson  <rth@redhat.com>
6673
6674         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
6675         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
6676         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
6677         on TRAMPOLINE_TEMPLATE.
6678         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
6679         TRAMPOLINE_ADJUST_ADDRESS.
6680         * targhooks.c (default_asm_trampoline_template): Remove.
6681         (default_trampoline_adjust_address): Remove.
6682         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
6683         * targhooks.h: Update decls.
6684
6685 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6686
6687         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
6688         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
6689         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
6690
6691 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
6692
6693         PR debug/41295
6694         * reload1.c (reload): Reset debug insns with pseudos without
6695         equivalences.
6696
6697 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
6698
6699         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
6700         unconditional true for decimal float modes.
6701         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
6702         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
6703
6704 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
6705
6706         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
6707         Enable a new case for __FreeBSD__ >= 7.
6708         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
6709         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
6710         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
6711         and USE_LD_AS_NEEDED.
6712
6713         * doc/install.texi (*-*-freebsd*): Update target information.
6714
6715 2009-09-22  Richard Guenther  <rguenther@suse.de>
6716
6717         PR middle-end/41395
6718         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
6719         arrays really properly.
6720
6721 2009-09-22  Richard Henderson  <rth@redhat.com>
6722
6723         PR target/41246
6724         * target.h (struct gcc_target): Add asm_out.trampoline_template,
6725         calls.static_chain, calls.trampoline_init,
6726         calls.trampoline_adjust_address.
6727         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6728         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
6729         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6730         * builtins.c (expand_builtin_setjmp_receiver): Use
6731         targetm.calls.static_chain; only clobber registers.
6732         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
6733         set up memory attributes properly for the trampoline block.
6734         (expand_builtin_adjust_trampoline): Use
6735         targetm.calls.trampoline_adjust_address.
6736         * calls.c (prepare_call_address): Add fndecl argument.  Use
6737         targetm.calls.static_chain.
6738         * df-scan.c (df_need_static_chain_reg): Remove.
6739         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
6740         consolodate static chain handling.
6741         * doc/tm.texi: Document new hooks.
6742         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
6743         (init_emit_regs): Don't initialize them.
6744         * expr.h (prepare_call_address): Update decl.
6745         * final.c (profile_function): Use targetm.calls.static_chain.
6746         * function.c (expand_function_start): Likewise.
6747         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
6748         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
6749         only clobber registers.
6750         * targhooks.c (default_static_chain): New.
6751         (default_asm_trampoline_template, default_trampoline_init): New.
6752         (default_trampoline_adjust_address): New.
6753         * targhooks.h: Declare them.
6754         * varasm.c (assemble_trampoline_template): Use
6755         targetm.asm_out.trampoline_template.  Make the memory block const
6756         and set its size.
6757
6758         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
6759         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
6760         differences into the TARGET_ABI_OPEN_VMS code block.
6761         (TARGET_TRAMPOLINE_INIT): New.
6762         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
6763         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
6764         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
6765         (INITIALIZE_TRAMPOLINE): Remove.
6766
6767         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
6768         (TRAMPOLINE_TEMPLATE): Merge with ...
6769         (INITIALIZE_TRAMPOLINE): ... this and move ...
6770         * config/arc/arc.c (arc_trampoline_init): ... here.
6771         (TARGET_TRAMPOLINE_INIT): New.
6772
6773         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6774         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6775         (arm_asm_trampoline_template): New.
6776         (arm_trampoline_init, arm_trampoline_adjust_address): New.
6777         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
6778         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
6779         code to arm_asm_trampoline_template.
6780         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
6781         arm_trampoline_adjust_address.
6782         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
6783         adjust for target hook parameters.
6784
6785         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
6786         Remove.
6787
6788         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
6789         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
6790         (bfin_trampoline_init): Rename from initialize_trampoline;
6791         make static; update for target hook parameters.
6792         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
6793         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
6794         bfin_asm_trampoline_template.
6795         (INITIALIZE_TRAMPOLINE): Remove.
6796
6797         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6798         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
6799         cris_trampoline_init): New.
6800         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
6801         cris_asm_trampoline_template.
6802         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
6803         adjust for target hook parameters.
6804
6805         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
6806
6807         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6808         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
6809         fr30_trampoline_init): New.
6810         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
6811         fr30_asm_trampoline_template.
6812         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
6813         adjust for target hook parameters.
6814
6815         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
6816         (frv_trampoline_init): Rename from frv_initialize_trampoline;
6817         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
6818         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
6819         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
6820
6821         * config/h8300/h8300.c (h8300_trampoline_init): New.
6822         (TARGET_TRAMPOLINE_INIT): New.
6823         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
6824         to h8300_trampoline_init and adjust for hook parameters.
6825
6826         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
6827         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
6828         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
6829         make static; adjust for hook parameters.
6830         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
6831
6832         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6833         (TARGET_TRAMPOLINE_INIT): New.
6834         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
6835         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
6836         iq2000_asm_trampoline_template.
6837         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
6838         (TRAMPOLINE_CODE_SIZE): New.
6839         (TRAMPOLINE_SIZE): Use it.
6840         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
6841
6842         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
6843         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
6844         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
6845         adjust for hook parameters.
6846         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
6847
6848         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
6849         (m32r_trampoline_init): New.
6850         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
6851         m32r_trampoline_init.
6852
6853         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
6854         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
6855         make static; update for hook parameters.
6856         * config/m68hc11/m68hc11-protos.h: Update.
6857         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
6858
6859         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6860         (TARGET_TRAMPOLINE_INIT): New.
6861         (mcore_function_value): Fix typo.
6862         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
6863         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
6864         to mcore_asm_trampoline_template.
6865         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
6866
6867         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
6868         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
6869         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
6870         update for hook parameters.
6871         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
6872
6873         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6874         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6875         mips_trampoline_init): New.
6876         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
6877         mips_asm_trampoline_template.
6878         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
6879         update for hook parameters.
6880
6881         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6882         (TARGET_TRAMPOLINE_INIT): New.
6883         (mmix_trampoline_size): Remove.
6884         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
6885         make static.  Remove out-of-date tetra vs octa comment.
6886         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
6887         make static; update for hook parameters.
6888         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
6889         (INITIALIZE_TRAMPOLINE): Remove.
6890         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
6891         (TRAMPOLINE_ALIGNMENT): New.
6892         * gcc/config/mmix/mmix-protos.h: Update.
6893
6894         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6895         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6896         mn10300_trampoline_init): New.
6897         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
6898         mn10300_asm_trampoline_template.
6899         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
6900
6901         * config/moxie/moxie.c (moxie_static_chain,
6902         moxie_asm_trampoline_template, moxie_trampoline_init,
6903         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
6904         TARGET_TRAMPOLINE_INIT): New.
6905         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
6906         moxie_trampoline_init.
6907         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
6908         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
6909
6910         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6911         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6912         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
6913         pa_trampoline_adjust_address): New.
6914         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
6915         pa_asm_trampoline_template.
6916         (TRAMPOLINE_ALIGNMENT): New.
6917         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
6918         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
6919         adjust for hook parameters.
6920         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
6921
6922         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
6923         (TARGET_TRAMPOLINE_INIT): New.
6924         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
6925         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
6926
6927         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
6928
6929         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
6930         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
6931         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
6932         make static; adjust parameters for the hook.
6933         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
6934
6935         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
6936         s390_trampoline_template; make static.
6937         (s390_trampoline_init): Rename from s390_initialize_trampoline;
6938         make static; adjust for target hook.
6939         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
6940         * config/s390/s390-protos.h: Remove trampoline decls.
6941         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
6942         (TRAMPOLINE_TEMPLATE): Remove.
6943         (TRAMPOLINE_ALIGNMENT): New.
6944
6945         * config/score/score-protos.h (score_initialize_trampoline): Remove.
6946         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6947         (TARGET_TRAMPOLINE_INIT): New.
6948         (score_asm_trampoline_template): New.
6949         (score_trampoline_init): Rename from score_initialize_trampoline;
6950         make static; adjust for hook parameters.
6951         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
6952         score[37]_asm_trampoline_template.
6953         (INITIALIZE_TRAMPOLINE): Remove.
6954         * config/score/score3.c (score3_asm_trampoline_template): New.
6955         (score3_trampoline_init): Rename from score3_initialize_trampoline;
6956         adjust for target hook.
6957         * config/score/score7.c (score7_asm_trampoline_template): New.
6958         (score7_trampoline_init): Rename from score7_initialize_trampoline;
6959         adjust for target hook.
6960         * config/score/score3.h, config/score/score7.h: Update.
6961
6962         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
6963         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
6964         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6965         (sh_trampoline_init): Rename from sh_initialize_trampoline;
6966         make static; adjust for target hook parameters.
6967         (sh_trampoline_adjust_address): New.
6968         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
6969         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
6970
6971         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
6972         (sparc32_initialize_trampoline): Rename from
6973         sparc_initialize_trampoline; make static; replace tramp parameter
6974         with m_tramp and update memory accesses.
6975         (sparc64_initialize_trampoline): Similarly.
6976         (sparc_trampoline_init): New.
6977         * config/sparc/sparc-protos.h: Remove trampoline decls.
6978         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
6979         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
6980
6981         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
6982         (array_to_constant): Make ARR parameter const.
6983         (spu_trampoline_init): Rename from spu_initialize_trampoline;
6984         make static; update for hook parameters.
6985         * config/spu/spu-protos.h: Update decls.
6986         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
6987
6988         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
6989         from xstormy16_initialize_trampoline; make static; update for
6990         hook parameters.
6991         (TARGET_TRAMPOLINE_INIT): New.
6992         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
6993
6994         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6995         (TARGET_TRAMPOLINE_INIT): New.
6996         (v850_can_eliminate): Make static.
6997         (v850_asm_trampoline_template, v850_trampoline_init): New.
6998         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
6999         v850_asm_trampoline_template.
7000         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
7001         and adjust for target hook parameters.
7002
7003         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7004         (TARGET_TRAMPOLINE_INIT): New.
7005         (vax_asm_trampoline_template, vax_trampoline_init): New.
7006         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
7007         vax_asm_trampoline_template.
7008         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
7009
7010         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7011         (TARGET_TRAMPOLINE_INIT): New.
7012         (xtensa_asm_trampoline_template): Rename from
7013         xtensa_trampoline_template; make static.
7014         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
7015         make static; update for hook parameters.
7016         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
7017         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
7018         (INITIALIZE_TRAMPOLINE): Remove.
7019
7020         * config/i386/i386.c (ix86_function_regparm): Do not issue an
7021         error for nested functions with regparm=3.
7022         (ix86_compute_frame_layout): Adjust frame pointer offset for
7023         ix86_static_chain_on_stack.
7024         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
7025         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
7026         don't reset to UNITS_PER_WORD.
7027         (ix86_emit_leave): Adjust ix86_cfa_state.
7028         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
7029         (ix86_static_chain): New.
7030         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
7031         make static; update for target hook parameters; use ix86_static_chain.
7032         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
7033         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
7034         (INITIALIZE_TRAMPOLINE): Remove.
7035         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
7036         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
7037         to the end.  Add static_chain_on_stack.
7038         (ix86_static_chain_on_stack): New.
7039
7040         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
7041         (m68k_output_mi_thunk): Don't use static_chain_rtx.
7042         (m68k_trampoline_init): New.
7043         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
7044         m68k_trampoline_init and adjust for hook parameters.
7045         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
7046         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
7047
7048 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
7049
7050         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
7051         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
7052
7053         * reload1.c (reload): Call wrap_constant when substituting
7054         reg for equiv inside of DEBUG_INSNs.
7055
7056         PR bootstrap/41405
7057         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
7058         add_call_src_coords_attributes, add_high_low_attributes,
7059         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
7060         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
7061         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
7062         when -gdwarf-2 -gstrict-dwarf.
7063         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
7064         -gdwarf-[23] -gstrict-dwarf.
7065         (address_of_int_loc_descriptor, loc_descriptor,
7066         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
7067         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
7068         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
7069
7070 2009-09-22  Richard Guenther  <rguenther@suse.de>
7071
7072         PR tree-optimization/41428
7073         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
7074         (ccp_finalize): Pass it to substitute_and_fold.
7075
7076 2009-09-22  Richard Guenther  <rguenther@suse.de>
7077
7078         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
7079         (substitute_and_fold): Adjust prototype.
7080         * tree-vrp.c (vrp_evaluate_conditional): Make static.
7081         (simplify_stmt_using_ranges): Likewise.
7082         (fold_predicate_in): Move here from tree-ssa-propagate.c.
7083         (vrp_fold_stmt): New function.
7084         (vrp_finalize): Pass it to substitute_and_fold.
7085         * tree-flow.h (vrp_evaluate_conditional): Remove.
7086         (simplify_stmt_using_ranges): Likewise.
7087         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
7088         * tree-ssa-copy.c (fini_copy_prop): Likewise.
7089         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
7090         member.
7091         (fold_predicate_in): Move to tree-vrp.c.
7092         (substitute_and_fold): Use the callback instead of calling into
7093         tree-vrp.c functions directly.
7094
7095 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
7096
7097         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
7098         comparison warning on rs6000.
7099
7100         PR middle-end/41429
7101         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
7102         GIMPLE_EH_MUST_NOT_THROW cleanup.
7103         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
7104
7105 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
7106
7107         PR middle-end/41260
7108         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
7109         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
7110         LIB_SPEC for darwin10 and later since it always uses the unwinder in
7111         libSystem which is derived from the gcc 4.2.1 unwinder.
7112
7113 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7114
7115         PR middle-end/41357
7116         * varasm.c (default_encode_section_info): Copy TLS model into
7117         sym_ref flags regardless of backend support for TLS, for all
7118         model types except TLS_MODEL_EMULATED.
7119
7120 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7121
7122         PR bootstrap/41404
7123         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
7124         we can handle it correctly.
7125
7126 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
7127
7128         * doc/install.texi (os2): Remove section.
7129
7130 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
7131
7132         * doc/standards.texi (Objective-C): Adjust two URLs.
7133
7134 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
7135
7136         * tree-tailcall.c (process_assignment): Don't check if a
7137         multiplication or an addition are already present.
7138         (find_tail_calls): Combine multiple additions and multiplications.
7139         (adjust_accumulator_values): Emit accumulators.
7140
7141 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
7142
7143         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
7144         xmm register restore.
7145
7146 2009-09-21  Jan Hubicka  <jh@suse.cz>
7147
7148         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
7149         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
7150         restore at the end.
7151
7152 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
7153
7154         * stor-layout.c (layout_type): Remove obsolete code.
7155
7156 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
7157
7158         PR middle-end/41395
7159         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
7160
7161 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7162
7163         PR middle-end/30789
7164         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
7165         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
7166         (fold_builtin_2, do_mpc_arg1): Update accordingly.
7167         * fold-const.c (const_binop): Likewise.
7168         * real.h (do_mpc_arg2): Update prototype.
7169
7170 2009-09-20  Jan Hubicka  <jh@suse.cz>
7171
7172         * dwarf2out.c (add_const_value_attribute): Return true if successful.
7173         (add_location_or_const_value_attribute): Rewrite using
7174         loc_list_from_tree.
7175         (tree_add_const_value_attribute): Return true if successful.
7176         (tree_add_const_value_attribute_for_decl): Likewise.
7177
7178         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
7179         (loc_descriptor): ... here;
7180         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7181         (cst_pool_loc_descr): Break out from ...; do not reffer constant
7182         pool items that was not marked for output.
7183         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
7184         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7185         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7186         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
7187         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
7188         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
7189         DW_OP_stack_value to get address of items that are not available
7190         as addresses.
7191         (dw_loc_list): Handle single element lists correctly.
7192
7193 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
7194             Pascal Obry  <obry@adacore.com>
7195
7196         * unwind-dw2-fde.c (classify_object_over_fdes):
7197         Cast the constant 1 to _Unwind_Ptr.
7198         (add_fdes): Likewise.
7199         (linear_search_fdes): Likewise.
7200
7201 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
7202
7203         * stor-layout.c (set_sizetype): Avoid useless type copy.
7204
7205 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
7206
7207         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
7208         feature check.
7209         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
7210         * configure, config.in: Regenerate.
7211         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
7212         DW_EH_PE_absptr.
7213         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
7214         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
7215         for global data if the output could be used in a shared library.
7216         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
7217         to 0 if TARGET_WRITABLE_EH_FRAME.
7218
7219 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
7220
7221         PR rtl-optimization/39886
7222         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
7223         just when insn is equal to BB_END (bb).
7224
7225 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
7226
7227         * config/mips/mips.opt (mrelax-pic-calls): New option.
7228         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
7229         the file.
7230         (mips_unspec_call): Change "unspec_call" expander into this.
7231         (mips_strip_unspec_call): New function.
7232         (mips_got_load): Call mips_unspec_call instead of
7233         gen_unspec_call<mode>.
7234         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
7235         MIPS_CALL.
7236         (mips_cfg_in_reorg): New function.
7237         (mips16_lay_out_constants): Use it to decide whether to call
7238         CFG-aware insn splitting.
7239         (r10k_insert_cache_barriers): Move CFG set-up code from here to
7240         mips_reorg.  Move DF set-up code from here ...
7241         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
7242         from here.
7243         (mips_reorg): Call mips_df_reorg instead of
7244         r10k_insert_cache_barriers.  Move CFG set-up code here from
7245         r10k_insert_cache_barriers.
7246         (mips_call_expr_from_insn): New function.
7247         (mips_pic_call_symbol_from_set): Likewise.
7248         (mips_find_pic_call_symbol): Likewise.
7249         (mips_annotate_pic_call_expr): Likewise.
7250         (mips_get_pic_call_symbol): Likewise.
7251         (mips_annotate_pic_calls): Likewise.
7252         (mips_override_options): Disable -mrelax-pic-calls unless PIC
7253         calls are used.
7254         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
7255         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
7256         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
7257         directive.
7258         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
7259         (unspec_call<mode>): Remove it.
7260         (sibcall_internal, sibcall_value_internal,
7261         sibcall_value_multiple_internal, call_internal, call_split,
7262         call_value_internal, call_value_split,
7263         call_value_multiple_internal, call_value_multiple_split): Pass
7264         SIZE_OPNO to MIPS_CALL.
7265         (call_internal_direct, call_direct_split,
7266         call_value_internal_direct, call_value_direct_split): Pass -1 as
7267         SIZE_OPNO to MIPS_CALL.
7268         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
7269         * configure: Regenerate.
7270         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
7271         and -mno-relax-pic-calls.
7272         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
7273
7274 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7275
7276         PR bootstrap/35619
7277         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
7278         in the directory this rule is called from, rather than the
7279         toplevel 'gcc' directory, to fix in-tree build.
7280
7281 2009-09-19  Chris Demetriou  <cgd@google.com>
7282
7283         PR preprocessor/28435:
7284         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
7285         to cpplib that the preprocessor output is needed.
7286
7287 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
7288
7289         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
7290         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
7291         *return_and_restore_fpregs_<mode>,
7292         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
7293
7294         PR bootstrap/41397
7295         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
7296         instead of assuming it has always a REG inside of it.
7297
7298 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
7299
7300         * config/freebsd.h: Update comment on types.
7301         (WINT_TYPE): Define.
7302
7303 2009-09-18  Jason Merrill  <jason@redhat.com>
7304
7305         * c.opt: Add -fno-deduce-init-list.
7306
7307 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
7308
7309         * value-prof.c (interesting_stringop_to_profile_p): Added output
7310         argument to indicate which parameter is the size parameter.
7311         * value-prof.c (gimple_stringop_fixed_value): Use
7312         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
7313         * value-prof.c (gimple_stringops_transform): Update call sites to
7314         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
7315
7316 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
7317
7318         PR target/38288
7319         From David Binderman <dcb314@hotmail.com>:
7320         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
7321         local variable f.  Remove stale comments.
7322         (ix86_compute_frame_layout): Remove useless local variable total_size.
7323         Remove #if 0'd code.
7324         (legitimate_address_p): Remove useless local variables
7325         reason_rtx and reason.
7326         (ix86_split_copysign_const): Remove useless local variable op1.
7327         (scale_counter): Remove useless local variable piece_size_mask.
7328
7329 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
7330
7331         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
7332         output decl.
7333
7334 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
7335
7336         PR target/40913
7337         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
7338
7339 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
7340
7341         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
7342         TYPE_STUB_DECL.
7343
7344 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
7345
7346         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
7347         DW_OP_implicit_value even without dwarf_version 4.
7348
7349 2009-09-17  Jan Hubicka  <jh@suse.cz>
7350
7351         * dwarf2out.c: Include tree-pass.h and gimple.h.
7352         (loc_list_plus_const): New function.
7353         (loc_descriptor_from_tree_1): Rename to ...
7354         (loc_descriptor_from_tree): ... remove original.
7355         (loc_list_from_tree): New function.
7356         (add_AT_location_description): Accept location list.
7357         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
7358         (concatn_mem_loc_descriptor): Remove.
7359         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
7360         returning NULL.
7361         (secname_for_decl): Move up.
7362         (hidden_reference_p): New function; break out from ...
7363         (loc_by_refernece): ... here; move up.
7364         (dw_loc_list): New function.
7365         (single_element_loc_list): New function.
7366         (single_element_loc_list_p): New function.
7367         (add_loc_descr_to_each): New function.
7368         (add_loc_list): New function.
7369         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
7370         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
7371         add diagnostics why expansion failed.
7372         (add_location_or_const_value_attribute): Support location lists.
7373         (add_bound_info): Likewise.
7374         (descr_info_loc): Update call of loc_descriptor_from_tree.
7375         (gen_variable_die): Work on location lists.
7376         * final.c (pass_final): Add dump file.
7377         * Makefile.in (dwarf2out.o): Add new dependencies.
7378
7379 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
7380
7381         PR c/41049
7382         * real.c decimal_from_integer, decimal_integer_string): New.
7383         (real_from_integer): Use them as special case for decimal float.
7384         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
7385         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
7386         Do not append zero after the decimal point in string to convert.
7387
7388 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
7389
7390         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
7391         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
7392
7393 2009-09-17  Martin Jambor  <mjambor@suse.cz>
7394
7395         * common.opt (fipa-sra): New switch.
7396         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
7397         * timevar.def (TV_IPA_SRA): New timevar.
7398         * params.def (ipa-sra-ptr-growth-factor): New parameter.
7399         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
7400         * tree-sra.c: Include cgraph.c.
7401         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
7402         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
7403         and grp_not_necessarilly_dereferenced.
7404         (func_param_count): New variable.
7405         (encountered_apply_args): New variable.
7406         (bb_dereferences): New variable.
7407         (final_bbs): New variable.
7408         (no_accesses_representant): New variable.
7409         (no_accesses_p): New function.
7410         (dump_access): Dump the new fields.
7411         (sra_initialize): Set encountered_apply_args to false.
7412         (get_ssa_base_param): New function.
7413         (mark_parm_dereference): New function.
7414         (create_access): Caring for INIDRECT_REFs and different handling of
7415         varialble length accesses in early IPA SRA.  Store the stmt - a new
7416         parameter - to the new access.
7417         (build_access_from_expr_1): New parameter stmt, passed to
7418         create_access.  Handle INDIRECT_REFs.
7419         (build_access_from_expr): Pass the current statement to
7420         build_access_from_expr_1.
7421         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
7422         passes.
7423         (build_accesses_from_assign): Pass the current statement to
7424         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
7425         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
7426         final_bbs when necessary.  Check for calls to __builtin_apply_args.
7427         Fixup EH info if anythng was changed.
7428         (is_unused_scalar_param): New function.
7429         (ptr_parm_has_direct_uses): New function.
7430         (find_param_candidates): New function.
7431         (mark_maybe_modified): New function.
7432         (analyze_modified_params): New function.
7433         (propagate_dereference_distances): New function.
7434         (dump_dereferences_table): New function.
7435         (analyze_caller_dereference_legality): New function.
7436         (unmodified_by_ref_scalar_representative): New function.
7437         (splice_param_accesses): New function.
7438         (decide_one_param_reduction): New function.
7439         (enum ipa_splicing_result): New type.
7440         (splice_all_param_accesses): New function.
7441         (get_param_index): New function.
7442         (turn_representatives_into_adjustments): New function.
7443         (analyze_all_param_acesses): New function.
7444         (get_replaced_param_substitute): New function.
7445         (get_adjustment_for_base): New function.
7446         (replace_removed_params_ssa_names): New function.
7447         (sra_ipa_reset_debug_stmts): New function.
7448         (sra_ipa_modify_expr): New function.
7449         (sra_ipa_modify_assign): New function.
7450         (convert_callers): New function.
7451         (modify_function): New function.
7452         (ipa_sra_preliminary_function_checks): New function.
7453         (ipa_early_sra): New function.
7454         (ipa_early_sra_gate): New function.
7455         (pass_early_ipa_sra): New variable.
7456         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
7457
7458 2009-09-17  Michael Matz  <matz@suse.de>
7459
7460         PR middle-end/41347
7461         * tree.c (build_type_attribute_qual_variant): Export.
7462         * tree.h (build_type_attribute_qual_variant): Declare.
7463         * tree-inline.c (remap_type_1): Use it to build variants with
7464         the original qualifiers and attributes.
7465
7466 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7467
7468         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
7469         without a fallthrough edge.
7470
7471 2009-09-16  DJ Delorie  <dj@redhat.com>
7472
7473         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
7474         chip and ignore the "fast_interrupt" attribute if so.
7475
7476 2009-09-16  Richard Henderson  <rth@redhat.com>
7477
7478         PR middle-end/41360
7479         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
7480         barrier fix.
7481
7482 2009-09-16  Richard Henderson  <rth@redhat.com>
7483
7484         PR target/41246
7485         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
7486         is set only if DECL_NO_STATIC_CHAIN is unset.
7487         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
7488         (FOR_EACH_NEST_INFO): New.
7489         (walk_all_functions): Use it.
7490         (finalize_nesting_tree): Likewise.
7491         (unnest_nesting_tree): Likewise.
7492         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
7493         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
7494         (convert_gimple_call): Early out if gimple_call_chain already set.
7495         (convert_all_function_calls): Iterate until no new functions
7496         require a static chain.
7497         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
7498         when building a trampoline.  Use dump_function_to_file instead
7499         of dump_function.
7500         (lower_nested_functions): Open dump_file.  Validate that decls
7501         that have DECL_NO_STATIC_CHAIN from the front end don't have that
7502         bit reset by this pass.
7503
7504 2009-09-16  Michael Matz  <matz@suse.de>
7505
7506         PR fortran/41212
7507         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
7508         shorten decl_common_unused.
7509         (DECL_RESTRICTED_P): New accessor.
7510         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
7511         to disambiguate marked decls and restrict pointers.
7512
7513 2009-09-16  Richard Henderson  <rth@redhat.com>
7514
7515         PR middle-end/41360
7516         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
7517
7518 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
7519
7520         * integrate.c (set_block_abstract_flags): Call
7521         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
7522
7523 2009-09-16  Richard Guenther  <rguenther@suse.de>
7524
7525         PR middle-end/34011
7526         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
7527         as non-aliased.
7528
7529 2009-09-16  DJ Delorie  <dj@redhat.com>
7530             Kaz Kojima  <kkojima@gcc.gnu.org>
7531
7532         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
7533         (sh_expand_prologue): Update calls to output_stack_adjust.
7534         (sh_expand_epilogue): Likewise.
7535
7536 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
7537
7538         PR bootstrap/41349
7539         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
7540         trying to limit the extent of searches in the insn stream.
7541
7542 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
7543             Jakub Jelinek  <jakub@redhat.com>
7544
7545         PR target/41175
7546         PR target/40677
7547         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
7548         problem.
7549         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
7550         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
7551         (rs6000_savres_strategy): Always save FP registers inline if the
7552         target doesn't support hardware double-precision.  Set the above
7553         bits in return value when needed.
7554         (rs6000_savres_routine_sym): Fix computation for cache selector.
7555         Mark the generated symbol as a function.  Rename exitp argument to
7556         lr.  Move code for determining the name of the symbol...
7557         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
7558         getting the names right on AIX and 64-bit Linux.
7559         (savres_routine_name): New variable.
7560         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
7561         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
7562         on what the target routine uses as a base register.  If savep && lr
7563         describe saving of r0 into memory slot.
7564         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
7565         line calls for AIX ABI.
7566         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
7567         determine FP save/restore functions.
7568         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
7569         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
7570         gen_addsi3.
7571         (rs6000_emit_epilogue): Adjust computation of restore_lr.
7572         Duplicate restoration of LR and execute the appropriate one
7573         depending on whether GPRs are being restored inline.  Set r11 from
7574         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
7575         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
7576         Fix out of line calls for AIX ABI.
7577         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
7578         New insn.
7579         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
7580         register 11.
7581         (*restore_gpregs_spe): Likewise.
7582         (*return_and_restore_gpregs_spe): Likewise.
7583         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
7584         Define to empty string unconditionally.
7585         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
7586         Define to empty string unconditionally.
7587         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
7588         !TARGET_64BIT.
7589
7590 2009-09-15  Jan Hubicka  <jh@suse.cz>
7591
7592         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
7593         * params.def (inline-insns-auto): Likewise.
7594
7595 2009-09-15  Martin Jambor  <mjambor@suse.cz>
7596
7597         * ipa-inline.c (estimate_function_body_sizes): Dump info about
7598         individual statements only at TDF_DETAILS dump level.  Format
7599         source for 80 characters per line.
7600
7601 2009-09-15  Christian Bruel  <christian.bruel@st.com>
7602
7603         * regrename.c (do_replace): Update REG_DEAD notes.
7604
7605 2009-09-15  Revital Eres  <eres@il.ibm.com>
7606
7607         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
7608         * targhooks.c (default_builtin_support_vector_misalignment):
7609         New builtin function.
7610         * targhooks.h (default_builtin_support_vector_misalignment):
7611         Declare.
7612         * target.h (builtin_support_vector_misalignment):
7613         New field in struct gcc_target.
7614         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
7615         new builtin function.
7616         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
7617         Define.
7618         * config/rs6000/rs6000.c
7619         (rs6000_builtin_support_vector_misalignment): New function.
7620         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
7621
7622 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
7623
7624         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
7625         instead of INSN_P.
7626         (bfin_optimize_loop): Likewise.
7627         (bfin_gen_bundles): Likewise.
7628         (workaround_speculation): Likewise.
7629         (find_load): Return NULL_RTX for debug_insn.
7630
7631 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
7632
7633         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
7634         (sminsf3): Ditto.
7635
7636 2009-09-14  DJ Delorie  <dj@redhat.com>
7637
7638         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
7639         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
7640         VLIW mode.
7641
7642 2009-09-14  Richard Henderson  <rth@redhat.com>
7643             Jakub Jelinek  <jakub@redhat.com>
7644
7645         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
7646         * cfgbuild.c (make_edges): Handle asm goto.
7647         * cfglayout.c (fixup_reorder_chain): Likewise.
7648         * cfgrtl.c (patch_jump_insn): Likewise.
7649         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
7650         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
7651         (gimple_build_asm_vec): Add and use labels parameter.
7652         (gimple_build_asm): Remove.
7653         (walk_gimple_asm): Walk labels too.
7654         * gimple.def (GIMPLE_ASM): Update docs.
7655         * gimple.h: Update decls.
7656         (struct gimple_statement_asm): Change nc to use unsigned char;
7657         add nl member.
7658         (gimple_asm_nlabels): New.
7659         (gimple_asm_label_op, gimple_asm_set_label_op): New.
7660         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
7661         into gimple_build_asm_vec.
7662         * jump.c (mark_jump_label_asm): New.
7663         (mark_jump_label): Use it.
7664         (redirect_jump_1): Handle asm goto.
7665         (invert_jump_1): Soft fail if X is null.
7666         * recog.c (extract_asm_operands): New.
7667         (asm_noperands): Use it; handle asm labels.
7668         (decode_asm_operands): Use extract_asm_operands.
7669         (asm_operand_ok): Properly handle empty string.
7670         * reg-stack.c (get_asm_operands_in_out): Rename from
7671         get_asm_operand_n_inputs; use extract_asm_operands; return both
7672         inputs and outputs by reference; update all callers.
7673         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
7674         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
7675         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
7676         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
7677         (extract_asm_operands): Declare.
7678         * stmt.c (expand_asm_operands): Add and use labels parameter.
7679         (check_unique_operand_names): Likewise.
7680         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
7681         (expand_asm_stmt): Handle asm labels.
7682         * tree-cfg.c (make_gimple_asm_edges): New.
7683         (make_edges): Use it.
7684         (cleanup_dead_labels): Handle asm labels.
7685         (is_ctrl_altering_stmt): Likewise.
7686         (gimple_redirect_edge_and_branch): Likewise.
7687         * tree.def (ASM_EXPR): Add 5th operand.
7688         * tree.h (ASM_LABELS): New.
7689         (resolve_asm_operand_names): Update decl.
7690
7691         * c-parser.c (c_parser_asm_statement): Parse asm goto.
7692         (c_parser_asm_goto_operands): New.
7693         * c-tree.h (build_asm_expr): Update decl.
7694         * c-typeck.c (build_asm_expr): Add and use labels parameter.
7695         * doc/extend.texi: Document asm goto.
7696
7697 2009-09-14  Richard Henderson  <rth@redhat.com>
7698
7699         * except.h: Update declarations.
7700         (struct pointer_map_t): Forward declare.
7701         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
7702         (struct eh_landing_pad_d, eh_landing_pad): New.
7703         (struct eh_catch_d, eh_catch): New.
7704         (struct eh_region_d): Remove next_region_sharing_label, aka,
7705         label, tree_label, landing_pad, post_landing_pad, resume,
7706         may_contain_throw.  Rename region_number to index.  Remove
7707         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
7708         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
7709         (VEC(eh_landing_pad,gc)): New.
7710         (struct eh_status): Remove last_region_number.  Add lp_array,
7711         throw_stmt_table, ttype_data, ehspec_data.
7712         (ehr_next, FOR_ALL_EH_REGION_AT): New.
7713         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
7714         * except.c (lang_protect_cleanup_actions): Return tree.
7715         (struct ehl_map_entry): Remove.
7716         (init_eh_for_function): Push zero entries for region and lp_array.
7717         (gen_eh_region): Add to region_array immediately.
7718         (gen_eh_region_catch): Operate on eh_catch objects.
7719         (gen_eh_landing_pad): New.
7720         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
7721         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
7722         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
7723         (get_eh_landing_pad_from_number_fn): New.
7724         (get_eh_landing_pad_from_number): New.
7725         (get_eh_region_from_lp_number_fn): New.
7726         (get_eh_region_from_lp_number): New.
7727         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
7728         (get_exception_pointer, get_exception_filter): Remove.
7729         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
7730         (current_function_has_exception_handlers): Simplify.
7731         (bring_to_root, eh_region_replaceable_by_p): Remove.
7732         (replace_region, hash_type_list, hash_eh_region): Remove.
7733         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
7734         (label_to_region_map, num_eh_regions): Remove.
7735         (get_next_region_sharing_label, must_not_throw_labels): Remove.
7736         (find_exception_handler_labels): Remove.
7737         (duplicate_eh_regions_0, find_prev_try): Remove.
7738         (struct duplicate_eh_regions_data): New.
7739         (duplicate_eh_regions_1): Rewrite.
7740         (duplicate_eh_regions): Return a pointer map instead of an
7741         integer offset.
7742         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
7743         (redirect_eh_edge_to_label): Remove.
7744         (eh_region_outermost): Rewrite using eh_region pointers
7745         instead of integers.
7746         (add_ttypes_entry): Update for ttype_data move to eh_status.
7747         (add_ehspec_entry): Rewrite with VEC instead of varray.
7748         (assign_filter_values): Likewise.  Export.
7749         (build_post_landing_pads, connect_post_landing_pads): Remove.
7750         (dw2_build_landing_pads): Rewrite to use lp_array.
7751         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
7752         (sjlj_assign_call_site_values): Rewrite to use lp_array.
7753         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
7754         (sjlj_mark_call_sites): Update for landing pad numbers.
7755         (finish_eh_generation): Rewrite.
7756         (gate_handle_eh): Do nothing for no eh tree.
7757         (pass_rtl_eh): Move up near finish_eh_generation.
7758         (remove_eh_landing_pad): New.
7759         (remove_eh_handler): Export.
7760         (remove_eh_region, remove_eh_handler_and_replace): Remove.
7761         (for_each_eh_label): Rewrite to use lp_array.
7762         (make_reg_eh_region_note): New.
7763         (make_reg_eh_region_note_nothrow_nononlocal): New.
7764         (insn_could_throw_p): New.
7765         (copy_reg_eh_region_note_forward): New.
7766         (copy_reg_eh_region_note_backward): New.
7767         (check_handled, add_reachable_handler): Remove.
7768         (reachable_next_level, foreach_reachable_handler): Remove.
7769         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
7770         (get_eh_region_and_lp_from_rtx): New.
7771         (get_eh_region_from_rtx): New.
7772         (can_throw_internal_1, can_throw_external_1): Remove.
7773         (can_throw_internal): Use get_eh_region_from_rtx.
7774         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
7775         (insn_nothrow_p, can_nonlocal_goto): New.
7776         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
7777         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
7778         (add_action_record): Use VEC not varray.
7779         (collect_one_action_chain): Update for eh_region changes.
7780         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
7781         Use get_eh_region_and_lp_from_rtx.
7782         (gate_convert_to_eh_region_ranges): New.
7783         (pass_convert_to_eh_region_ranges): Use it.
7784         (push_uleb128, push_sleb128): Use VEC not varray.
7785         (output_one_function_exception_table): Likewise.
7786         (dump_eh_tree): Update for eh_region changes.
7787         (verify_eh_tree): Likewise.
7788         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
7789         * tree-eh.c: Include target.h.
7790         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
7791         Don't disallow GIMPLE_RESX; adjust argument check.
7792         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
7793         (record_stmt_eh_region): Update for landing pad numbers;
7794         generate a landing pad if necessary.
7795         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
7796         (remove_stmt_from_eh_lp_fn): Similarly.
7797         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
7798         Update for lp numbers; don't special case missing throw_stmt_table.
7799         (lookup_expr_eh_lp): Similarly.
7800         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
7801         (eh_seq, eh_region_may_contain_throw): New.
7802         (struct leh_state): Add ehp_region.
7803         (struct leh_tf_state): Remove eh_label.
7804         (emit_post_landing_pad): New.
7805         (emit_resx, emit_eh_dispatch): New.
7806         (note_eh_region_may_contain_throw): New.
7807         (frob_into_branch_around): Take eh_region not eh label;
7808         emit eh code into eh_seq.
7809         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
7810         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
7811         lower_eh_must_not_throw.  Emit code to eh_seq.
7812         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
7813         (lower_try_finally_onedest): Likewise.
7814         (lower_try_finally_copy): Likewise.
7815         (lower_try_finally_switch): Likewise.
7816         (lower_try_finally): Initialize ehp_region.
7817         (lower_catch): Update for eh_catch objects.
7818         (lower_eh_filter): Don't handle must_not_throw.
7819         (lower_eh_must_not_throw): New.
7820         (lower_cleanup): Don't set eh_label.
7821         (lower_eh_constructs_2): Resolve eh builtins.
7822         Handle GIMPLE_EH_MUST_NOT_THROW.
7823         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
7824         Add eh_seq to the end of the function body.
7825         (make_eh_dispatch_edges): New.
7826         (make_eh_edge): Remove.
7827         (make_eh_edges): Simplify for landing pads.
7828         (redirect_eh_edge_1): New.
7829         (redirect_eh_edge): Use it.
7830         (redirect_eh_dispatch_edge): New.
7831         (stmt_could_throw_p): Use a switch.  Allow RESX.
7832         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
7833         (stmt_can_throw_internal): Likewise.
7834         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
7835         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
7836         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
7837         (gate_refactor_eh): New.
7838         (pass_refactor_eh): Use it.
7839         (lower_resx, execute_lower_resx, pass_lower_resx): New.
7840         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
7841         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
7842         (remove_unreachable_handlers): Rename from
7843         tree_remove_unreachable_handlers; rewrite for landing pads;
7844         call remove_eh_handler directly.
7845         (remove_unreachable_handlers_no_lp): New.
7846         (unsplit_eh, unsplit_all_eh): New.
7847         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
7848         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
7849         (cleanup_empty_eh_unsplit): New.
7850         (cleanup_empty_eh): Rewrite.
7851         (cleanup_all_empty_eh): New.
7852         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
7853         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
7854         (gate_cleanup_eh): New.
7855         (pass_cleanup_eh): Use it.
7856         (verify_eh_edges): Move later in file.  Expect one EH edge.
7857         (verify_eh_dispatch_edge): New.
7858
7859         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
7860         (gtype-desc.o): Add TARGET_H.
7861         (tree.o): Use EXCEPT_H, not except.h.
7862         (cfgbuild.o): Add EXPR_H.
7863         (GTFILES): Add vecprim.h.
7864         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
7865         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
7866         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
7867         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
7868         * calls.c (emit_call_1): Use make_reg_eh_region_note.
7869         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
7870         calls to can_throw_internal.
7871         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
7872         (make_edges): Don't handle RESX; use can_nonlocal_goto.
7873         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
7874         (expand_gimple_stmt): Use make_reg_eh_region_note.
7875         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
7876         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
7877         or find_exception_handler_labels.
7878         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
7879         there is exacly one EH edge.  Use can_nonlocal_goto and
7880         can_throw_internal.
7881         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
7882         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
7883         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
7884         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
7885         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
7886         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
7887         * dse.c (scan_insn): Use insn_could_throw_p.
7888         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
7889         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
7890         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
7891         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
7892         EXC_PTR_EXPR or FILTER_EXPR.
7893         (tree_expr_nonzero_warnv_p): Likewise.
7894         * function.h: Include vecprim.h, not varray.h
7895         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
7896         move ttype_data and ehspec_data members to struct eh_status; change
7897         action_record_data member to a VEC.
7898         * gcse.c (hash_scan_set): Use can_throw_internal.
7899         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
7900         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
7901         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
7902         (block_may_fallthru): Don't handle RESX_EXPR.
7903         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
7904         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
7905         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
7906         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
7907         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
7908         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
7909         (gimple_size): Likewise.
7910         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
7911         (gimple_build_resx): Use gimple_build_with_ops.
7912         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
7913         (is_gimple_val): Likewise.
7914         (is_gimple_stmt): Remove RESX_EXPR.
7915         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
7916         (GIMPLE_RESX): Reorder with other EH constructs.
7917         * gimple.h (struct gimple_statement_eh_mnt): New.
7918         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
7919         (gimple_eh_filter_must_not_throw): Remove.
7920         (gimple_eh_filter_set_must_not_throw): Remove.
7921         (gimple_eh_must_not_throw_fndecl): New.
7922         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
7923         (is_gimple_resx): New.
7924         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
7925         Don't copy EH_FILTER_MUST_NOT_THROW.
7926         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
7927         * ipa-inline.c (estimate_function_body_sizes): Don't try to
7928         handle must_not_throw_labels specially.
7929         * ipa-pure-const.c (check_call): Update debug statement for LP.
7930         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
7931         * ipa-utils.c (get_base_var): Likewise.
7932         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
7933         * lower-subreg.c (move_eh_region_note): Remove.
7934         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
7935         * omp-low.c (new_omp_context): Update for eh_lp_nr.
7936         (create_task_copyfn): Likewise.
7937         (maybe_catch_exception): Use gimple_build_eh_filter.
7938         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
7939         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
7940         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
7941         and pass_lower_resx.
7942         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
7943         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
7944         can_throw_internal, can_nonlocal_goto.
7945         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
7946         copy_reg_eh_region_note_forward.
7947         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
7948         (emit_output_reload_insns): Likewise.
7949         (copy_eh_notes): Remove.
7950         * rtl.def (RESX): Remove.
7951         * rtl.h: Update declarations.
7952         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
7953         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
7954         (update_eh_label): Remove.
7955         (cleanup_dead_labels_eh): New.
7956         (cleanup_deal_labels): Use it instead of update_eh_label.
7957         (gimple_merge_blocks): Update landing pad data structure when
7958         removing a landing pad label.
7959         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
7960         test; handle GIMPLE_EH_MUST_NOT_THROW.
7961         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
7962         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
7963         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
7964         (verify_stmt): Likewise.  Verify landing pads.
7965         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
7966         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
7967         (struct move_stmt_d): Add eh_map.
7968         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
7969         (move_stmt_r): Remap eh region numbers in builtin calls,
7970         resx and eh_dispatch.
7971         (move_block_to_fn): Remove eh_offset parameter.  Use
7972         maybe_duplicate_eh_stmt_fn.
7973         (find_outermost_region_in_block): Operate on eh_region pointers
7974         instead of region numbers.
7975         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
7976         duplicate_eh_regions.
7977         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
7978         test earlier.  Disallow EH landing pads.
7979         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
7980         * tree-flow.h: Update declarations.
7981         (struct tree_ann_common_d): Replace rn with lp_nr.
7982         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
7983         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
7984         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
7985         resx and eh_dispatch.
7986         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
7987         (copy_edges_for_bb): Use make_eh_dispatch_edges.
7988         (copy_cfg_body): Expect eh_map instead of eh_region_offset
7989         from duplicate_eh_regions.
7990         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
7991         update RESX; handle EH_DISPATCH.
7992         (expand_call_inline): Set eh_lp_nr, not eh_region.
7993         (maybe_inline_call_in_expr): Likewise.
7994         * tree-inline.h (struct copy_body_data): Replace eh_region with
7995         eh_lp_nr, eh_region_offset with eh_map.
7996         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
7997         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
7998         * tree-pretty-print.c (dump_generic_node): Don't handle
7999         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
8000         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
8001         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
8002         EXC_PTR_EXPR, FILTER_EXPR.
8003         * tree-ssa-operands.c (get_expr_operands): Likewise.
8004         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
8005         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
8006         (ao_ref_init_from_vn_reference): Likewise.
8007         * tree-ssa-sink.c (statement_sink_location): Likewise.
8008         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
8009         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
8010         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
8011         EXC_PTR_EXPR, FILTER_EXPR.
8012         (is_exception_related): Remove.
8013         (compute_avail): Don't call it.
8014         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
8015         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
8016         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
8017         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
8018         Build EH builtins.
8019         (build_resx): Remove.
8020         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
8021         * tree.h: Update declarations.
8022         (EH_FILTER_MUST_NOT_THROW): Remove.
8023         (struct tree_label_decl): Add eh_landing_pad_nr.
8024         (EH_LANDING_PAD_NR): New.
8025         * value-prof.c (gimple_ic): Tidy variable names.  Update for
8026         landing pad numbers.
8027         (gimple_stringop_fixed_value): Tidy variable names.  Assert
8028         that neither call stmt can throw.
8029         * vecprim.h (uchar): New.
8030         (VEC(uchar,heap), VEC(uchar,gc)): New.
8031
8032         * c-common.c (c_define_builtins): Update call to
8033         build_common_builtin_nodes.
8034         * c-parser.c (c_parse_file): Don't call
8035         default_init_unwind_resume_libfunc.
8036
8037 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
8038
8039         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
8040         (mips_cprestore_address_p): Likewise.
8041         (mips_save_gp_to_cprestore_slot): Likewise.
8042         (mips_restore_gp): Rename to...
8043         (mips_restore_gp_from_cprestore_slot): ...this.
8044         (mips_must_initialize_gp_p): Declare.
8045         (mips_emit_save_slot_move): Likewise.
8046         (mips_output_load_label): Return nothing.
8047         (mips_eh_uses): Declare.
8048         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
8049         (TARGET_CPRESTORE_DIRECTIVE): New macro.
8050         (TARGET_ABSOLUTE_JUMPS): Likewise.
8051         (EH_USES): Likewise.
8052         (FIRST_PSEUDO_REGISTER): Update comment.
8053         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
8054         (MIPS_CALL): ...here.
8055         (REGISTER_NAMES): Add $cprestore.
8056         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
8057         Add load_label_length, has_inflexible_gp_insn_p,
8058         has_flexible_gp_insn_p, must_initialize_gp_p and
8059         must_restore_gp_when_clobbered_p.
8060         (mips_expand_call): Don't generate split instructions here.
8061         (mips_split_call): Update the call to mips_restore_gp after
8062         the above name change.
8063         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
8064         (mips_find_gp_ref): New function.
8065         (mips_insn_has_inflexible_gp_ref_p): Likewise.
8066         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
8067         (mips_insn_has_flexible_gp_ref_p): Likewise.
8068         (mips_cfun_has_flexible_gp_ref_p): Likewise.
8069         (mips_function_has_gp_insn): Delete.
8070         (mips_global_pointer): Drop the df_regs_ever_live_p check.
8071         Use the new functions above.  Only return INVALID_REGNUM
8072         for TARGET_ABSOLUTE_JUMPS.
8073         (mips_must_initialize_gp_p): New function.
8074         (mips_get_cprestore_base_and_offset): New function, extracted from...
8075         (mips_cprestore_slot): ...here.  Take a bool parameter.
8076         (mips_cfun_has_cprestore_slot_p): New function.
8077         (mips_cprestore_address_p): Likewise.
8078         (mips_save_gp_to_cprestore_slot): Likewise.
8079         (mips_restore_gp): Rename to...
8080         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
8081         epilogue_completed.  Update the call to mips_cprestore_slot.
8082         Test cfun->machine->must_restore_gp_when_clobbered_p.
8083         (mips_direct_save_slot_move_p): New function.
8084         (mips_emit_save_slot_move): Likewise.
8085         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
8086         of cfun->machine->global_pointer.
8087         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
8088         (mips_save_reg): Use mips_emit_save_slot_move.
8089         (mips_expand_prologue): Set must_initialize_gp_p.
8090         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
8091         for all cprestore saves.  Emit a use_cprestore instruction after
8092         setting up the cprestore slot.
8093         (mips_restore_reg): Use mips_emit_save_slot_move.
8094         (mips_process_load_label): New function.
8095         (mips_load_label_length): Likewise.
8096         (mips_output_load_label): Don't return asm: output it here instead.
8097         Use mips_process_load_label.
8098         (mips_adjust_insn_length): Adjust the length of branch instructions
8099         that have length MAX_PIC_BRANCH_LENGTH.
8100         (mips_output_conditional_branch): Update the call to
8101         mips_output_load_label.  Assume the branch target is OPERANDS[0]
8102         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
8103         (mips_output_order_conditional_branch): Swap the meaning of
8104         OPERANDS[0] and OPERANDS[1].
8105         (mips_variable_issue): Don't count ghost instructions.
8106         (mips_expand_ghost_gp_insns): New function.
8107         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
8108         (mips_output_mi_thunk): Set must_initialize_gp_p.
8109         (mips_eh_uses): New function.
8110         * config/mips/predicates.md (cprestore_save_slot_operand)
8111         (cprestore_load_slot_operand): New predicates.
8112         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
8113         (UNSPEC_MOVE_GP): Likewise.
8114         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
8115         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
8116         (CPRESTORE_SLOT_REGNUM): New register.
8117         (MAX_PIC_BRANCH_LENGTH): New constant.
8118         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
8119         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
8120         branches.  Fix commentary.
8121         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
8122         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
8123         Change type to "ghost".
8124         (loadgp_absolute_<mode>): Likewise.
8125         (loadgp_rtp_<mode>): Likewise.
8126         (copygp_mips16): Likewise.
8127         (loadgp_blockage): Remove redundant mode attribute.
8128         (potential_cprestore): New instruction.
8129         (cprestore): Turn into an unspec set.
8130         (use_cprestore): New instruction.
8131         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
8132         (*branch_fp_inverted): Likewise.
8133         (*branch_order<mode>): Likewise.
8134         (*branch_order<mode>_inverted): Likewise.
8135         (*branch_equality<mode>): Likewise.
8136         (*branch_equality<mode>_inverted): Likewise.
8137         (*branch_bit<bbv><mode>): Likewise.
8138         (*branch_bit<bbv><mode>_inverted): Likewise.
8139         (*branch_equality<mode>_mips16): Remove redundant mode.
8140         (jump): Turn into a define_expand.
8141         (*jump_absolute): New instruction.
8142         (*jump_pic): Likewise.
8143         (*jump_mips16): Rename previously-unnamed pattern.  Remove
8144         redundant mode attribute.
8145         (restore_gp): Split on epilogue_completed rather than
8146         reload_completed.  Change type to "ghost".
8147         (move_gp<mode>): New instruction.
8148         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
8149         Remove redundant mode attribute.
8150         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
8151         (bc1any4f, bc1any2t, bc1any2f): Likewise.
8152         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
8153
8154 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
8155
8156         PR target/41210
8157         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
8158         are returned in the same register (vs34 or v2) that Altivec vector
8159         types are returned in.
8160         (rs6000_libcall_value): Ditto.
8161
8162         PR target/41331
8163         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
8164         instead of explicit addsi3/adddi3 calls.
8165         (rs6000_split_multireg_move): Ditto.
8166         (rs6000_emit_allocate_stack): Ditto.
8167         (rs6000_emit_prologue): Ditto.
8168         (rs6000_output_mi_thunk): Ditto.
8169
8170         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
8171         size is 64 bits if we can use 64-bit registers.
8172
8173 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
8174
8175         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
8176         symbols.
8177
8178         From Jie Zhang <jie.zhang@analog.com>:
8179         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
8180         save FP and RETS with saveall attribute.
8181         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
8182         with saveall attribute.
8183
8184         * config/bfin/bfin.c (bfin_expand_builtin,
8185         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
8186         operands.
8187
8188         From Jie Zhang <jie.zhang@analog.com>:
8189         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
8190         before use in two places.
8191         * config/bfin/bfin.md (AREG): Define mode iterator.
8192         (reload_in, reload_out): Use mode iterator AREG.
8193
8194 2009-09-14  Richard Guenther  <rguenther@suse.de>
8195
8196         PR middle-end/41350
8197         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
8198         EH personality path.
8199
8200 2009-09-13  Richard Guenther  <rguenther@suse.de>
8201             Rafael Avila de Espindola  <espindola@google.com>
8202
8203         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
8204         (LANG_HOOKS_EH_PERSONALITY): Likewise.
8205         (LANG_HOOKS_INITIALIZER): Adjust.
8206         (lhd_pass_through_t): Declare.
8207         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
8208         eh_personality.
8209         * langhooks.c (lhd_pass_through_t): New function.
8210         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
8211         dwarf2out_begin_prologue): Use personality from current_function_decl.
8212         * expr.h (get_personality_function): Declare.
8213         * expr.c (get_personality_function): New function.
8214         (build_personality_function): Likewise.
8215         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
8216         (eh_personality_libfunc): Remove.
8217         * optabs.c (build_libfunc_function): New function split out from ...
8218         (init_one_libfunc): ... here.
8219         * tree.h (DECL_FUNCTION_PERSONALITY): New.
8220         (tree_function_decl): Add personality.
8221         (lhd_gcc_personality): Declare.
8222         (build_personality_function): Likewise.
8223         * tree.c (gcc_eh_personality_decl): New.
8224         (lhd_gcc_personality): New function.
8225         * except.h (lang_eh_runtime_type): Remove.
8226         (enum eh_personality_kind): New.
8227         (build_personality_function): Declare.
8228         (function_needs_eh_personality): Declare.
8229         * except.c (lang_eh_runtime_type): Remove.
8230         (function_needs_eh_personality): New function.
8231         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
8232         (sjlj_emit_function_enter, output_function_exception_table):
8233         Use personality from current_function_decl.
8234         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
8235         * tree-inline.c (tree_can_inline_p): Do not inline across different
8236         EH personalities.
8237         (expand_call_inline): Likewise.  Adjust the callers EH personality.
8238         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
8239         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
8240         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
8241         (c-parser.o): Likewise
8242         * c-tree.h (c_eh_initialized_p): Remove.
8243         (c_maybe_initialize_eh): Likewise.
8244         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
8245         (finish_decl): Don't call c_maybe_initialize_eh.
8246         (c_eh_initialized_p): Remove.
8247         (c_maybe_initialize_eh): Likewise.
8248         * c-parser.c (c_parser_omp_construct): Likewise.
8249         (c_parse_file): Initialize exception handling.
8250
8251 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
8252
8253         * config.gcc (tm_file): Remove i386/biarch32.h
8254         for i?86-w64-mingw* case.
8255         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
8256         support.
8257         * config.host: Set for x64 mingw the option
8258         use_long_long_for_widest_fast_int to yes.
8259
8260 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
8261
8262         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
8263         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
8264         (dbxout_begin_function): Likewise.
8265         * final.c (dwarf2_debug_info_emitted_p): New predicate.
8266         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
8267         set on the function.
8268         (final_end_function): Likewise.
8269         (final_scan_insn): Likewise.
8270         (rest_of_handle_final): Likewise.
8271         * varasm.c (assemble_start_function): Likewise.
8272         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
8273
8274 2009-09-12  Jason Merrill  <jason@redhat.com>
8275
8276         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
8277         * opts.c (common_handle_option): constify.
8278
8279 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
8280
8281         * doc/install.texi (avr): Remove obsolete reference site.
8282
8283 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
8284
8285         * doc/install.texi (Binaries): Adjust AIX link.
8286
8287 2009-09-12  Akim Demaille  <demaille@gostai.com>
8288
8289         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
8290         Use an imperative sentence.
8291
8292 2009-09-11  Richard Henderson  <rth@redhat.com>
8293
8294         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
8295         structure-name and has-tree-operands arguments; update all entries.
8296         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
8297         update all entries.
8298         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
8299         (gsstruct_code_size): New.
8300         (gss_for_code_): New.
8301         (gss_for_code): Remove.
8302         (gimple_size): Rewrite using gsstruct_code_size.
8303         (gimple_statement_structure): Move to gimple.h.
8304         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
8305         (gss_for_code, gimple_statement_structure): New.
8306         (gimple_ops): Use new arrays; tidy.
8307
8308 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8309
8310         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
8311         operand to be a PLUS expression.
8312         * config/pa/pa.c (pa_secondary_reload): Likewise.
8313
8314 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
8315
8316         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
8317
8318         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
8319         XEXP (in_rtx, 8).
8320
8321 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8322
8323         From Jie Zhang <jie.zhang@analog.com>:
8324         * doc/extend.texi (node Function Attributes): Document l2
8325         function attribute.
8326         (node Blackfin Variable Attributes): Document l2 variable attributes.
8327
8328 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
8329
8330         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
8331         to match the system compiler's configuration at inflection point.
8332         Add comment to remark a remaining difference with system compiler.
8333
8334         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
8335         * configure: Regenerate.
8336
8337 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8338
8339         From Jie Zhang <jie.zhang@analog.com>:
8340         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
8341         (bfin_handle_l2_attribute): New.
8342         (bfin_attribute_table): Add l2 attribute.
8343
8344 2009-09-11  Michael Matz  <matz@suse.de>
8345
8346         PR middle-end/41275
8347         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
8348         on the local_decls list.
8349
8350 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
8351
8352         PR debug/41276
8353         PR debug/41307
8354         * cselib.c (cselib_expand_value_rtx_cb): Document callback
8355         interface.
8356         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
8357         for VALUEs, to implement the documented interface.
8358         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
8359         Adjust for VALUEs and anything else, to implement the
8360         documented interface.
8361
8362 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
8363
8364         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
8365         with actual SPE/paired vector modes before using 64-bit alignment.
8366         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
8367
8368 2009-09-10  DJ Delorie  <dj@redhat.com>
8369
8370         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
8371         emitted.
8372
8373         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
8374         * config/mep/mep.c (mep_legitimate_constant_p): New.
8375         * config/mep/mep-protos.h: Prototype it.
8376
8377 2009-09-10  Richard Henderson  <rth@redhat.com>
8378
8379         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
8380
8381 2009-09-10  Jason Merrill  <jason@redhat.com>
8382
8383         * tree.c (chain_index): New fn.
8384         * tree.h: Declare it.
8385
8386 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8387
8388         * config/sol2-c.c (cmn_err_length_specs): Initialize
8389         scalar_identity_flag.
8390
8391 2009-09-10  Richard Henderson  <rth@redhat.com>
8392
8393         * tree.h (struct tree_decl_common): Move align member earlier;
8394         move label_decl_uid member ...
8395         (struct tree_label_decl): ... here.
8396         (LABEL_DECL_UID): Update to match.
8397
8398         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
8399         not TDF_DETAILS.
8400
8401         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
8402         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
8403
8404         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
8405         dest_prev if the edge is complex.
8406
8407         * tree-cfg.c (is_ctrl_stmt): Use a switch.
8408
8409         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
8410         loop latch tests earlier.
8411
8412         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
8413         before GIMPLE_RETURN, not after its predecessor; insert
8414         before GIMPLE_RESX.
8415
8416         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
8417         gimple_seq_empty_p to test for no PHI nodes.
8418         * tree-cfg.c (split_critical_edges): Likewise.
8419
8420         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
8421
8422 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
8423
8424         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
8425         introduced by the VTA branch merge.
8426
8427 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
8428
8429         * ira-conflicts.c: Use fputs or putc instead of fprintf
8430         where appropriate.
8431         * cfg.c: Ditto.
8432         * toplev.c: Ditto.
8433         * tree-switch-conversion.c: Ditto.
8434
8435 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
8436
8437         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
8438         introduced by the VTA branch merge.
8439
8440 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
8441
8442         Revert:
8443         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
8444
8445         PR rtl-optimization/39779
8446         * expr.c (convert_modes): Return when mode == oldmode after
8447         CONST_INTs are processed.
8448
8449 2009-09-10  Nick Clifton  <nickc@redhat.com>
8450
8451         * config/mep/mep.c (mep_encode_section_info): Copy weakness
8452         attribute and referring decl when creating renamed symbol.
8453
8454 2009-09-10  Richard Guenther  <rguenther@suse.de>
8455
8456         PR middle-end/41257
8457         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
8458         reachable nodes.
8459         (cgraph_finalize_compilation_unit): Compute reachability
8460         before emitting thunks.  Properly process aliases before
8461         possibly removing unreachable nodes.
8462
8463 2009-09-10  Richard Guenther  <rguenther@suse.de>
8464
8465         PR middle-end/41254
8466         * tree.c (struct free_lang_data_d): Add worklist member.
8467         (find_decls_types_r): Push onto the worklist instead of recursing.
8468         Handle TREE_BINFOs properly.
8469         (find_decls_types): New function wrapped around find_decls_types_r
8470         to process the worklist.
8471         (find_decls_types_in_eh_region): Use it.
8472         (find_decls_types_in_node): Likewise.
8473         (find_decls_types_in_var): Likewise.
8474         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
8475         * tree.h (RECORD_OR_UNION_TYPE_P): New.
8476         (AGGREGATE_TYPE_P): Adjust.
8477
8478 2009-09-09  Jason Merrill  <jason@redhat.com>
8479
8480         * configure.ac: Check glibc version even if we have an in-tree
8481         assembler.
8482
8483 2009-09-09  Anthony Green  <green@moxielogic.com>
8484
8485         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
8486         the constant 0 when appropriate.
8487         * config/moxie/constraints.md: Add constraint O.
8488
8489         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
8490         to pass up to 6 32-bit argument values in registers.
8491         (moxie_function_arg): Ditto.
8492         (moxie_arg_partial_bytes): Ditto.
8493         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
8494         (REG_PARM_STACK_SPACE): Ditto.
8495         (FUNCTION_ARG_REGNO_P): Ditto.
8496
8497         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
8498         instruction to allocate stack space.
8499
8500 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
8501
8502         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
8503         unnecessarily stringent constraints.  Fix address
8504         calculation in the splitters.
8505
8506 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
8507
8508         PR rtl-optimization/39779
8509         * expr.c (convert_modes): Return when mode == oldmode after
8510         CONST_INTs are processed.
8511
8512 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
8513
8514         PR/41315
8515         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
8516         (ix86_expand_prologue): Take frame.padding0 into logic of
8517         to_allocate checks.
8518         (ix86_expand_epilogue): Likewise.
8519
8520 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
8521
8522         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
8523         New variables.
8524         (SHLIB_LINK, SHLIB_INSTALL): Use them.
8525         * config/t-slibgcc-libgcc: New file.
8526         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
8527
8528 2009-09-09  Martin Jambor  <mjambor@suse.cz>
8529
8530         PR tree-optimization/41089
8531         * tree-sra.c (find_var_candidates): Do not consider va_lists in
8532         early SRA.
8533
8534 2009-09-09  Richard Henderson  <rth@redhat.com>
8535
8536         * gimple.h (CASE_GIMPLE_OMP): New.
8537         (is_gimple_omp): Use it.
8538         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
8539         (verify_gimple_debug): Likewise.
8540
8541 2009-09-09  Richard Guenther  <rguenther@suse.de>
8542
8543         PR tree-optimization/41101
8544         * tree-ssa-pre.c (maximal_set): Remove.
8545         (compute_antic_aux): Treat the maximal set as implicitly all ones.
8546         Defer all blocks we didn't visit at least one successor.
8547         (add_to_exp_gen): Do not add to the maximal set.
8548         (make_values_for_phi): Likewise.
8549         (compute_avail): Likewise.
8550         (init_pre): Do not allocate the maximal set.
8551         (execute_pre): Do not dump it.
8552
8553 2009-09-09  Martin Jambor  <mjambor@suse.cz>
8554
8555         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
8556         an SSA_NAME rather than a is_gimple_variable.
8557
8558 2009-09-09  Richard Guenther  <rguenther@suse.de>
8559
8560         PR middle-end/41317
8561         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
8562         code dealing with plain pointer bases.
8563         (maybe_fold_offset_to_reference): Likewise.
8564         (maybe_fold_stmt_addition): Adjust.
8565
8566 2009-09-09  Richard Guenther  <rguenther@suse.de>
8567
8568         * tree.c (free_lang_data_in_type): Do not free the type variant
8569         chains.
8570         (free_lang_data): Merge char_type_node with its properly signed
8571         variant.
8572         (pass_ipa_free): Collect after freeing language specific data.
8573
8574 2009-09-09  Michael Matz  <matz@suse.de>
8575
8576         PR middle-end/41268
8577         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
8578         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
8579         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
8580         to reflect reality.
8581
8582 2009-09-08  DJ Delorie  <dj@redhat.com>
8583
8584         * config/mep/mep.c (conversions[]): Add "ml" pattern.
8585
8586 2009-09-04  Jason Merrill  <jason@redhat.com>
8587
8588         * tree.c (tree_find_value): Remove.
8589         * tree.h: Remove prototype.
8590         * varasm.c (assemble_external): Use value_member instead.
8591
8592 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8593
8594         * toplev.c (process_options): Choose default debugging type when
8595         gtoggle enables debug info and type is unset.
8596
8597 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8598
8599         PR debug/41276
8600         PR debug/41307
8601         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
8602         invalid subreg.
8603
8604 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8605
8606         * configure: Rebuilt with modified libtool.m4.
8607
8608 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8609
8610         PR debug/41229
8611         PR debug/41291
8612         PR debug/41300
8613         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
8614
8615 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8616
8617         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
8618         (remove_statement): Likewise.
8619         (rewrite_use_nonlinear_expr): Adjust.
8620         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
8621         * tree-ssa.c (release_defs_bitset): ... this.  New.
8622         * tree-flow.h (release_defs_bitset): Declare.
8623
8624 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8625
8626         PR debug/41232
8627         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
8628         in the middle block.
8629
8630 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
8631
8632         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
8633         via intptr_t to long type.
8634         (insert_operand_rank): Cast long type via intptr_t to
8635         pointer type.
8636         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
8637         pointer to scalar.
8638         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
8639         from pointer to unsigned via uintptr_t.
8640
8641         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
8642         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
8643         and HAVE_INTPTR_T.
8644         * configure: Regenerated.
8645         * config.in: Regenerated
8646         * system.h (stdint.h): Add include.
8647         (inttypes.h): Likewise.
8648         * Makefile.in (aclocal): Add config/stdint.m4.
8649         * aclocal.m4: Regenerated.
8650
8651 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
8652
8653         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
8654         variables.
8655         (note_np_check_stores): New function.
8656         (harmless_null_pointer_p): New function.
8657         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
8658         changed.  Take into account whether we're in the shadow of a condjump
8659         that tested NP_REG for NULL.
8660         Lose all code that tested for SEQUENCEs.
8661         (workaround_speculation): Avoid inserting NOPs for loads that are
8662         either always executed or a NULL pointer.
8663
8664 2009-09-08  Jan Hubicka  <jh@suse.cz>
8665
8666         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
8667         * params.def (early-inlining-insns): Likewise.
8668
8669 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
8670
8671         PR rtl-optimization/41239
8672         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
8673         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
8674         lists.
8675         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
8676         across calls, as the calls might not always return normally.
8677         (call_may_noreturn_p): New function.
8678         (deps_analyze_insn): Update last_function_call_may_noreturn list.
8679         (init_deps): Initialize it.
8680         (remove_from_deps): Also remove calls from
8681         last_function_call_may_noreturn list.
8682
8683 2009-09-07  Richard Henderson  <rth@redhat.com>
8684
8685         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
8686         more VR->OPERANDS than LHS operands.  Free LHS before returning.
8687
8688 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
8689
8690         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
8691         (attr "addrtype"): New member "spreg".
8692         Use it if mem_spfp_address_operand is true for the address.
8693         (attr "type"): New entry "stall".
8694         (cpu_unit "load"): New.
8695         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
8696         "load".
8697         (insn_reservation "loadsp"): New.
8698         (insn_reservation "load_stall1"): New.
8699         (insn_reservation "load_stall3"): New.
8700         (stall): New insn.
8701         * config/bfin/predicates.md (const1_operand, const3_operand): New.
8702         (mem_p_address_operand): Exclude stack and frame pointer based
8703         addresses.
8704         (mem_spfp_address_operand): New; match them here.
8705         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
8706         (bfin_reorg): Call it if scheduling insns.
8707         (bfin_gen_bundles): Remove dummy insns created by
8708         add_sched_insns_for_speculation.
8709
8710         From Jie Zhang <jie.zhang@analog.com>:
8711         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
8712         bfin_si_revision, bfin_workarounds): Move these ...
8713         * config/bfin/bfin.h: ... here.
8714
8715         From Mike Frysinger  <michael.frysinger@analog.com>
8716         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
8717         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
8718         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
8719         bf547m, bf548m, and bf549m.
8720         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
8721         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
8722         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
8723         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
8724         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
8725         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
8726         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
8727         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
8728         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
8729         bf542m, bf544m, bf547m, bf548m, and bf549m.
8730
8731         From Jie Zhang <jie.zhang@analog.com>:
8732         * config/bfin/predicates.md (p_register_operand): New predicate.
8733         (dp_register_operand): New predicate.
8734         * config/bfin/bfin-protos.h (WA_05000074): Define.
8735         (ENABLE_WA_05000074): Define.
8736         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
8737         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
8738         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
8739         (define_attr addrtype): Allow load/store register to be P register.
8740         (define_attr storereg): New.
8741         (define_cpu_unit anomaly_05000074): New.
8742         (define_insn_reservation dsp32shiftimm): New.
8743         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
8744         (define_insn_reservation loadp): Cannot use slot2.
8745         (define_insn_reservation loadsp): Cannot use slot2.
8746         (define_insn_reservation storep): Cannot use slot2. Does not
8747         apply when working around 05000074.
8748         (define_insn_reservation storep_anomaly_05000074): New.
8749         (define_insn_reservation storei): Does not apply when working
8750         around 05000074.
8751         (define_insn_reservation storei_anomaly_05000074): New.
8752         (define_attr length): Add dsp32shiftimm case.
8753         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
8754         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
8755         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
8756         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
8757         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
8758
8759 2009-09-07  Martin Jambor  <mjambor@suse.cz>
8760
8761         PR middle-end/41282
8762         * tree-sra.c (create_artificial_child_access): Return NULL if
8763         build_ref_for_offset fails.
8764         (propagate_subacesses_accross_link): Allow build_ref_for_offset
8765         and create_artificial_child_access to fail.
8766
8767 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
8768
8769         PR c++/41214
8770         * unwind-dw2.c (uw_init_context_1): Mark noinline.
8771         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
8772         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
8773
8774 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
8775
8776         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
8777         block, ensure it has an exit edge.  Emit a barrier after a jump.
8778
8779 2009-09-07  Nick Clifton  <nickc@redhat.com>
8780
8781         * gcc.c (this_is_linker_script): New variable.  Like
8782         this_is_library_file but for the %T constructor.
8783         (end_going_arg): If this_is_linker_script is set then locate the
8784         script and insert a --script switch before it
8785         (do_spec_2): Initialise this_is_linker_script.
8786         (do_spec_1): Likewise.  Handle %T construct.
8787         (eval_spec_function): Preserve this_is_linker_script.
8788         * doc/invoke.texi: Document %T construct in spec files.
8789         * config/m32c/m32c.h (LIB_SPEC): Use it.
8790
8791 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
8792
8793         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
8794         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
8795         when volatile flag is set.
8796         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
8797
8798 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
8799
8800         PR bootstrap/41241
8801         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
8802         (combine_stack_adjustments_for_block): Allow insns between stack
8803         adjustments and stores with corresponding pre-(dec|inc)rement or
8804         pre-modify operation.
8805
8806 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
8807
8808         PR bootstrap/41241
8809         * combine-stack-adj.c (struct csa_memlist): Rename to...
8810         (struct csa_reflist): ... this.  Rename mem field to ref.
8811         (free_csa_memlist): Rename to...
8812         (free_csa_reflist): ... this.
8813         (record_one_stack_memref): Rename to...
8814         (record_one_stack_ref): ... this.  Handle also REG_P.
8815         (try_apply_stack_adjustment): Handle also REG_P.
8816         (struct record_stack_memrefs_data): Rename to...
8817         (struct record_stack_refs_data): ... this.  Rename memlist field to
8818         reflist.
8819         (record_stack_memrefs): Rename to...
8820         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
8821         subexpressions instead of failing when a MEM contains SP references.
8822         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
8823         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
8824
8825 2009-09-06  Richard Guenther  <rguenther@suse.de>
8826
8827         PR middle-end/41144
8828         * tree.c (build_array_type): Do not record types marked
8829         with structural equality in the canonical type hashtable.
8830
8831 2009-09-06  Richard Guenther  <rguenther@suse.de>
8832
8833         PR middle-end/41261
8834         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
8835
8836 2009-09-05  Richard Guenther  <rguenther@suse.de>
8837
8838         PR middle-end/41181
8839         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
8840
8841 2009-09-05  Richard Guenther  <rguenther@suse.de>
8842
8843         PR debug/41273
8844         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
8845
8846 2009-09-05  Richard Guenther  <rguenther@suse.de>
8847
8848         PR middle-end/41271
8849         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
8850         before comparing function argument types.
8851
8852 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
8853
8854         PR target/41024
8855         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
8856         the assembler.
8857
8858 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
8859
8860         Revert:
8861         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
8862
8863         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
8864         locators before emit_insn is called.
8865
8866 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
8867
8868         PR bootstrap/41241
8869         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
8870         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
8871         (reginfo_init): Don't call allocate_reg_info.
8872
8873 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
8874
8875         PR target/41262
8876         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
8877         NONDEBUG_INSN_P instead of INSN_P.
8878
8879 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8880
8881         PR debug/41225
8882         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
8883
8884 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8885
8886         PR target/41252
8887         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
8888         pattern of the split.
8889
8890 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8891
8892         * toplev.c (process_options): Move setter of flag_var_tracking
8893         before other tests that depend on it.  Move down setter of
8894         flag_rename_registers.  Don't enable var-tracking-assignments
8895         by default if selective scheduling is enabled.  Warn if both
8896         are enabled.
8897
8898 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8899
8900         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
8901         comment.  Use switch statement to catch overlaps between rtx
8902         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
8903         (IS_DECL_CODE): ... here. Remove.
8904         (check_value_is_not_decl): Remove.
8905         (dv_from_decl, dv_from_value): Check after conversion.
8906
8907 2009-09-04  Richard Guenther  <rguenther@suse.de>
8908
8909         PR middle-end/41257
8910         * (cgraph_finalize_compilation_unit): Move finalizing aliases
8911         after emitting tunks.  Move emitting thunks and ctors from ...
8912         (cgraph_optimize): ... here.  Remove redundant
8913         cgraph_analyze_functions.
8914         * varasm.c (find_decl_and_mark_needed): Remove no longer
8915         necessary check.
8916         (finish_aliases_1): Adjust check for thunk aliases.
8917
8918 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
8919
8920         * config/arm/arm.md (ctzsi2): Added braces
8921         to avoid warning that broke booststrap.
8922
8923 2009-09-04  Martin Jambor  <mjambor@suse.cz>
8924
8925         PR tree-optimization/41112
8926         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
8927         handle variable-bounded arrays.
8928         (expr_with_var_bounded_array_refs_p): New function.
8929         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
8930
8931 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
8932
8933         * config/s390/2097.md: Removed two incorrect bypasses.
8934         (z10_fsimpdf): Fixed latency.
8935         (z10_fhex): New insn_reservation.
8936         (z10_floaddf): Fixed latency.
8937         (z10_floadsf): Fixed latency.
8938         (z10_ftrunctf): Fixed latency.
8939         (z10_ftruncdf): Fixed latency.
8940         * config/s390/s390.c (z10_cost): Fixed values.
8941         (s390_adjust_priority): Added z10 path.
8942         * config/s390/s390.md (type): Added fhex.
8943         (*mov<mode>_64dfp): Updated type attribute.
8944         (*mov<mode>_64): Updated type attribute.
8945         (*mov<mode>_31): Updated type attribute.
8946         (*mov<mode>"): Likewise.
8947         * config/s390/2084.md (x_fsimpdf): Updated condition.
8948
8949 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
8950
8951         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
8952         RTXs in the predicate for operand 1.
8953
8954 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
8955
8956         * config/arm/arm.md (UNSPEC_RBIT): New constant.
8957         (rbitsi2): New insn.
8958         (ctzsi2): New expand.
8959         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
8960
8961 2009-09-03  Martin Jambor  <mjambor@suse.cz>
8962
8963         * tree-sra.c (duplicate_expr_for_different_base): Removed.
8964         (create_artificial_child_access): Use build_ref_for_offset instead
8965         of duplicate_expr_for_different_base.
8966         (propagate_subacesses_accross_link): Likewise.
8967
8968 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
8969
8970         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
8971         of INSN_P.
8972         (mips16e_collect_argument_saves): Skip debug instructions.
8973         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
8974         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
8975         (r10k_insert_cache_barriers): Likewise.
8976         (mips_reorg_process_insns): Likewise.
8977
8978 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
8979
8980         PR bootstrap/41241
8981         * ira.c (update_equiv_reg): Remove check on class likely spill.
8982
8983 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
8984
8985         PR debug/41236
8986         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
8987         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
8988         it or SUBREG.
8989
8990         PR debug/41238
8991         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
8992         the stack slot if it is passed by invisible reference.
8993         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
8994         by invisible reference.
8995
8996 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
8997
8998         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
8999         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
9000         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
9001         0.
9002         * config/bfin/sync.md: New file.
9003         * config/bfin/bfin.md: Include it.
9004         (UNSPEC_ATOMIC): New.
9005         (UNSPEC_ONES): Provide a unique number.
9006
9007         From Jie Zhang <jie.zhang@analog.com>:
9008         * config/bfin/bfin.c (ret_regs): New.
9009         (must_save_fp_p): Don't return true because of frame_pointer_needed.
9010         (must_save_rets_p): New.
9011         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
9012         current_function_is_leaf.
9013         (do_link): Likewise.
9014         (do_unlink): Likewise.
9015         (expand_interrupt_handler_prologue): Use ret_regs array.
9016         (expand_interrupt_handler_epilogue): Use ret_regs array and
9017         pass return register to gen_return_internal.
9018         (bfin_expand_epilogue): Pass return register to
9019         gen_return_internal.
9020         (bfin_expand_call): Explicitly clobber RETS.
9021         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
9022         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
9023         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
9024         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
9025         RETS.
9026         (return_internal): Take a reg rtx rather than the register number.
9027
9028 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
9029
9030         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
9031         when comparing against estimated_loop_iterations_int return.
9032
9033 2009-09-03  Richard Guenther  <rguenther@suse.de>
9034
9035         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
9036         eh_personality_libfunc.
9037
9038 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9039
9040         * tree-parloops.c (separate_decls_in_region): Add space.
9041
9042 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9043
9044         * tree-parloops.c (separate_decls_in_region): Change the condition
9045         checking if there are reductions in the loop.
9046
9047 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9048
9049         PR tree-optimization/38275
9050         * tree-parloops.c (parallelize_loops): Replace profitability condition
9051         for expected number of iterations.
9052
9053 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
9054
9055         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
9056         (bootstrap-debug): Explain conditions in which it becomes default.
9057         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
9058         make it add to it.
9059
9060 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
9061
9062         * doc/invoke.texi (Optimize Options): Move
9063         -finline-small-functions to the -O2 list.
9064
9065 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
9066
9067         * toplev.c (process_options): Enable var-tracking-assignments
9068         by default if var-tracking is enabled.
9069
9070 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
9071
9072         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
9073         barrier.
9074         * emit-rtl.c (prev_nonnote_insn_bb): New function.
9075         * rtl.h (prev_nonnote_insn_bb): Declare it.
9076
9077 2009-09-03  Diego Novillo  <dnovillo@google.com>
9078
9079         * cgraph.c (cgraph_node_for_decl): New.
9080         * cgraph.h (cgraph_node_for_decl): Declare.
9081         * tree.c (host_integerp): Return 0 if T is NULL.
9082
9083 2009-09-03  Diego Novillo  <dnovillo@google.com>
9084
9085         * tree.h (struct alias_pair): Move from varasm.c.
9086         (alias_pairs): Likewise.
9087         (TYPE_MAXVAL): Define.
9088         (TYPE_MINVAL): Define.
9089         (iterative_hash_host_wide_int): Declare.
9090         (remove_unreachable_alias_pairs): Declare.
9091         * tree-pass.h (pass_ipa_free_lang_data): Declare.
9092         * diagnostic.c (default_diagnostic_starter): Make extern.
9093         (default_diagnostic_finalizer): Make extern.
9094         * diagnostic.h (default_diagnostic_starter): Declare.
9095         (default_diagnostic_finalizer): Declare.
9096         (default_tree_printer): Declare.
9097         * toplev.c (default_tree_printer): Make extern.
9098
9099 2009-09-03  Richard Guenther  <rguenther@suse.de>
9100             Diego Novillo  <dnovillo@google.com>
9101
9102         * cgraph.c (cgraph_add_new_function): Remove gimplification.
9103         * cgraphunit.c (cgraph_expand_function): Do not emit
9104         associated thunks from here.
9105         (cgraph_emit_thunks): New.
9106         (cgraph_optimize): Call it.
9107         Return if any IPA pass finds an error.
9108         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
9109         by thunks.
9110
9111 2009-09-03  Simon Baldwin  <simonb@google.com>
9112             Rafael Espindola  <espindola@google.com>
9113             Richard Guenther  <rguenther@suse.de>
9114             Doug Kwan  <dougkwan@google.com>
9115             Diego Novillo  <dnovillo@google.com>
9116
9117         * tree.c: Include tree-pass.h, langhooks-def.h,
9118         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
9119         (free_lang_data_in_type): New.
9120         (need_assembler_name_p): New.
9121         (free_lang_data_in_block): New.
9122         (free_lang_data_in_decl): New.
9123         (struct free_lang_data_d): New.
9124         (add_tree_to_fld_list): New.
9125         (find_decls_types_r): New.
9126         (get_eh_types_for_runtime): New.
9127         (find_decls_types_in_eh_region): New.
9128         (find_decls_types_in_node): New.
9129         (find_decls_types_in_var): New.
9130         (free_lang_data_in_cgraph): New.
9131         (free_lang_data): New.
9132         (gate_free_lang_data): New.
9133         (pass_ipa_free_lang_data): New.
9134
9135 2009-09-03  Diego Novillo  <dnovillo@google.com>
9136
9137         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
9138         * langhooks.h (struct lang_hooks): Add field free_lang_data.
9139         (lang_hooks): Remove const qualifier.
9140         * ipa.c (cgraph_remove_unreachable_nodes): Call
9141         remove_unreachable_alias_pairs.
9142         * except.c (add_type_for_runtime): Check if TYPE has
9143         already been converted.
9144         (lookup_type_for_runtime): Likewise.
9145         (check_handled): Handle converted types.
9146         * varasm.c (remove_unreachable_alias_pairs): New.
9147         * gimple.c: Include demangle.h.
9148         (gimple_decl_printable_name): New.
9149         (gimple_fold_obj_type_ref): New.
9150         * gimple.h (gimple_decl_printable_name): Declare.
9151         (gimple_fold_obj_type_ref): Declare.
9152         * passes.c (init_optimization_passes): Add pass
9153         pass_ipa_free_lang_data.
9154         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
9155         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
9156
9157 2009-09-03  Diego Novillo  <dnovillo@google.com>
9158
9159         * c-lang.c (lang_hooks): Remove const qualifier.
9160
9161 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
9162
9163         * doc/install.texi (*-*-freebsd*): Update target information.
9164
9165 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
9166
9167         * hard-reg-set.h (call_fixed_regs): Remove.
9168         * reginfo.c (call_fixed_regs): Remove.
9169         (init_reg_sets_1): Remove initialization of call_fixed_regs.
9170         (globalize_reg): Don't use call_fixed_regs.
9171         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
9172         call_fixed_regs.
9173
9174 2009-09-01  Michael Matz  <matz@suse.de>
9175
9176         * expr.h (emit_storent_insn, expand_expr_real_1,
9177         expand_expr_real_2): Declare.
9178         * expr.c (emit_storent_insn, expand_expr_real_1,
9179         expand_expr_real_2): Export.
9180         (store_expr): Setting and evaluating dont_return_target is useless.
9181         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
9182         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
9183         * except.c (expand_resx_expr): Rename to ...
9184         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
9185         * except.h (expand_resx_stmt): Declare.
9186         * stmt.c: Add include gimple.h
9187         (expand_asm_expr): Rename to ...
9188         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
9189         (expand_case): Rewrite to take gimple statement.
9190         * tree.h (expand_asm_stmt): Declare.
9191         (expand_case): Change prototype.
9192         * Makefile.in (stmt.o): Depend on gimple.h.
9193         * builtins.c (expand_builtin_synchronize): Build gimple asm
9194         statement, not an ASM_EXPR.
9195         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
9196         gimple_to_tree, release_stmt_tree): Remove.
9197         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
9198         ggc_free, but hold comparison code and operands separately.
9199         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
9200         (expand_call_stmt, expand_gimple_stmt_1,
9201         expand_gimple_stmt): New helpers.
9202         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
9203         release_stmt_tree.  Call expand_gimple_stmt instead.
9204         (expand_gimple_basic_block): Ditto.
9205
9206         * calls.c (emit_call_1): Don't look at EH regions here, make
9207         fntree parameter useless.
9208         (expand_call): New local rettype for TREE_TYPE(exp), use it
9209         throughout.  Remove local p, use addr instead.
9210         Don't look at EH regions here.
9211
9212 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
9213
9214         * doc/invoke.texi (-fsched-pressure): Document it.
9215         (-fsched-reg-pressure-heuristic): Remove it.
9216
9217         * reload.c (ira.h): Include.
9218         (find_reloads): Add choosing reload on number of small spilled
9219         classes.
9220
9221         * haifa-sched.c (ira.h): Include.
9222         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
9223         saved_reg_pressure, curr_reg_live, saved_reg_live,
9224         region_ref_regs): New variables.
9225         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
9226         initiate_reg_pressure_info, setup_ref_regs,
9227         initiate_bb_reg_pressure_info, save_reg_pressure,
9228         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
9229         functions.
9230         (setup_insn_reg_pressure_info): New function.
9231         (rank_for_schedule): Add pressure checking and insn issue time.
9232         Remove comparison of insn reg weights.
9233         (ready_sort): Set insn reg pressure info.
9234         (update_register_pressure, setup_insn_max_reg_pressure,
9235         update_reg_and_insn_max_reg_pressure,
9236         sched_setup_bb_reg_pressure_info): New functions.
9237         (schedule_insn): Add code for printing and updating reg pressure info.
9238         (find_set_reg_weight, find_insn_reg_weight): Remove.
9239         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
9240         (debug_ready_list): Print reg pressure info.
9241         (schedule_block): Ditto.  Check insn issue time.
9242         (sched_init): Set up sched_pressure_p.  Allocate and set up some
9243         reg pressure related info.
9244         (sched_finish): Free some reg pressure related info.
9245         (fix_tick_ready): Make insn always ready if pressure_p.
9246         (init_h_i_d): Don't call find_insn_reg_weight.
9247         (haifa_finish_h_i_d): Free insn reg pressure info.
9248
9249         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
9250         ira_memory_move_cost, ira_class_hard_regs,
9251         ira_class_hard_regs_num, ira_no_alloc_regs,
9252         ira_available_class_regs, ira_reg_class_cover_size,
9253         ira_reg_class_cover, ira_class_translate): Move to ira.h.
9254
9255         * ira-lives.c (single_reg_class): Check mode to find how many
9256         registers are necessary for operand.
9257         (ira_implicitly_set_insn_hard_regs): New.
9258
9259         * common.opt (fsched-pressure): New options.
9260         (fsched-reg-pressure-heuristic): Remove.
9261
9262         * ira.c (setup_eliminable_regset): Rename to
9263         ira_setup_eliminable_regset.  Make it external.
9264         (expand_reg_info): Pass cover class to setup_reg_classes.
9265         (ira): Call resize_reg_info instead of allocate_reg_info.
9266
9267         * sched-deps.c: Include ira.h.
9268         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
9269         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
9270         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
9271         mark_insn_hard_regno_birth, mark_insn_reg_birth,
9272         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
9273         mark_insn_reg_store, mark_insn_reg_clobber,
9274         setup_insn_reg_pressure_info): New.
9275         (sched_analyze_1): Update implicit_reg_pending_uses.
9276         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
9277         Use them to create dependencies.  Set insn reg uses and pressure
9278         info.  Process reg_pending_uses in one place.
9279         (free_deps): Free implicit sets.
9280         (remove_from_deps): Remove implicit sets if necessary.  Check
9281         implicit sets when clearing reg_last_in_use.
9282         (init_deps_global): Clear implicit_reg_pending_clobbers and
9283         implicit_reg_pending_uses.
9284
9285         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
9286         ira_memory_move_cost, ira_class_hard_regs,
9287         ira_class_hard_regs_num, ira_no_alloc_regs,
9288         ira_available_class_regs, ira_reg_class_cover_size,
9289         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
9290         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
9291         ira_implicitly_set_insn_hard_regs): New prototypes.
9292
9293         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
9294         cost_elements_num): New variables.
9295         (allocno_costs, total_costs): Rename to costs and
9296         total_allocno_costs.
9297         (COSTS_OF_ALLOCNO): Rename to COSTS.
9298         (allocno_pref): Rename to pref.
9299         (allocno_pref_buffer): Rename to pref_buffer.
9300         (common_classes): Rename to regno_cover_class.
9301         (COST_INDEX): New.
9302         (record_reg_classes): Set allocno attributes only if allocno_p.
9303         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
9304         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
9305         and COSTS_OF_ALLOCNO.
9306         (print_costs): Rename to print_allocno_costs.
9307         (print_pseudo_costs): New.
9308         (process_bb_node_for_costs): Split into 2 functions with new
9309         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
9310         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
9311         new parameter dump_file.  Use cost_elements_num instead of
9312         ira_allocnos_num.  Make one iteration if preferred classes were
9313         already calculated for scheduler.  Make 2 versions of code
9314         depending on allocno_p.
9315         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
9316         regno_cover_class and COSTS instead of common_classes and
9317         COSTS_OF_ALLOCNO.
9318         (init_costs, finish_costs): New.
9319         (ira_costs): Set up allocno_p and cost_elements_num.  Call
9320         init_costs and finish_costs.
9321         (ira_set_pseudo_classes): New.
9322
9323         * rtl.h (allocate_reg_info): Remove.
9324         (resize_reg_info): Change return type.
9325         (reg_cover_class): New.
9326         (setup_reg_classes): Add new parameter.
9327
9328         * sched-int.h (struct deps_reg): New member implicit_sets.
9329         (sched_pressure_p, sched_regno_cover_class): New external definitions.
9330         (INCREASE_BITS): New macro.
9331         (struct reg_pressure_data, struct reg_use_data): New.
9332         (struct _haifa_insn_data): Remove reg_weight.  Add members
9333         reg_pressure, reg_use_list, reg_set_list, and
9334         reg_pressure_excess_cost_change.
9335         (struct deps): New member implicit_sets.
9336         (pressure_p): New variable.
9337         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
9338         (struct reg_pressure_data, struct reg_use_data): New.
9339         (INSN_REG_WEIGHT): Remove.
9340         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
9341         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
9342         (sched_init_region_reg_pressure_info,
9343         sched_setup_bb_reg_pressure_info): New prototypes.
9344
9345         * reginfo.c (struct reg_pref): New member coverclass.
9346         (reg_cover_class): New function.
9347         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
9348         (reg_info_size): New variable.
9349         (allocate_reg_info): Make static.  Setup reg_info_size.
9350         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
9351         (setup_reg_classes): Add a new parameter.  Setup cover class too.
9352
9353         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
9354         the dependencies.
9355
9356         * sched-rgn.c (deps_join): Set up implicit_sets.
9357         (schedule_region): Set up region and basic blocks pressure
9358         relative info.
9359
9360         * passes.c (init_optimization_passes): Move
9361         pass_subregs_of_mode_init before pass_sched.
9362
9363 2009-09-02  Martin Jambor  <mjambor@suse.cz>
9364
9365         * tree-sra.c (struct access): New field grp_hint.
9366         (dump_access): Dump grp_hint.
9367         (sort_and_splice_var_accesses): Set grp_hint if a group is read
9368         multiple times.
9369         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
9370         those which have been specifically read and somehow written to.
9371         (propagate_subacesses_accross_link): Set grp_hint of right child and
9372         also possibly of the left child.
9373
9374 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
9375
9376         * tree-object-size.c (addr_object_size): Always use object_size_type
9377         0 or 2 when determining the pointer pointed object size.
9378
9379 2009-09-02  Richard Guenther  <rguenther@suse.de>
9380
9381         Revert
9382         2009-08-31  Richard Guenther  <rguenther@suse.de>
9383
9384         * builtins.c (fold_builtin_memory_op): Use the alias oracle
9385         to query if the memory regions for memmove overlap.
9386         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
9387         asserts on pointers, instead deal with odd trees.
9388         (ptr_derefs_may_alias_p): Likewise.
9389         (refs_may_alias_p_1): Constructor bases also never alias.
9390
9391 2009-08-01  Christian Bruel  <christian.bruel@st.com>
9392
9393         Revert:
9394         2009-07-31  Christian Bruel  <christian.bruel@st.com>
9395         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
9396
9397 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
9398
9399         * doc/invoke.texi (-fvar-tracking-assignments): New.
9400         (-fvar-tracking-assignments-toggle): New.
9401         (-fdump-final-insns=file): Mark filename as optional.
9402         (--param min-nondebug-insn-uid): New.
9403         (-gdwarf-@{version}): Mention version 4.
9404         * opts.c (common_handle_option): Accept it.
9405         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
9406         * regrename.c (regrename_optimize): Drop last.  Don't count debug
9407         insns as uses.  Don't reject change because of debug insn.
9408         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
9409         from the chain starter, and check for inexact matches in DEBUG_INSNS.
9410         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
9411         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
9412         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
9413         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
9414         * doc/gimple.texi (is_gimple_debug): New.
9415         (gimple_debug_bind_p): New.
9416         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
9417         * doc/install.texi (bootstrap-debug): More details.
9418         (bootstrap-debug-big, bootstrap-debug-lean): Document.
9419         (bootstrap-debug-lib): More details.
9420         (bootstrap-debug-ckovw): Update.
9421         (bootstrap-time): New.
9422         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
9423         (insert_phi_nodes_for): Insert debug stmts.
9424         (rewrite_stmt): Take iterator.  Insert debug stmts.
9425         (rewrite_enter_block): Adjust.
9426         (maybe_replace_use_in_debug_stmt): New.
9427         (rewrite_update_stmt): Use it.
9428         (mark_use_interesting): Return early for debug stmts.
9429         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
9430         stmts before replacing stmt.
9431         (move_computations_stmt): Likewise.
9432         * ira-conflicts.c (add_copies): Skip debug insns.
9433         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
9434         (regstat_bb_compute_ri): Skip debug insns.
9435         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
9436         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
9437         check_loop_closed_ssa_stmt): Skip debug stmts.
9438         * tree-tailcall.c (find_tail_calls): Likewise.
9439         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
9440         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
9441         (build_var_debug_value_stat): Declare.
9442         (build_var_debug_value): Define.
9443         (target_for_debug_bind): Declare.
9444         * reload.c (find_equiv_reg): Skip debug insns.
9445         * rtlanal.c (reg_used_between_p): Skip debug insns.
9446         (side_effects_p): Likewise.
9447         (canonicalize_condition): Likewise.
9448         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
9449         insns never depend on debug insns.
9450         (create_ddg_dep_no_link): Likewise.
9451         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
9452         Don't add inter-loop dependencies for debug insns.
9453         (build_intra_loop_deps): Likewise.
9454         (create_ddg): Count debug insns.
9455         * ddg.h (struct ddg::num_debug): New.
9456         (num_backargs): Pair up with previous int field.
9457         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
9458         -fcompare-debug-second.
9459         * final.c (get_attr_length_1): Skip debug insns.
9460         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
9461         * gcc.c (invoke_as): Call compare-debug-dump-opt.
9462         (driver_self_specs): Map -fdump-final-insns to
9463         -fdump-final-insns=..
9464         (get_local_tick): New.
9465         (compare_debug_dump_opt_spec_function): Test for . argument and
9466         compute output name.  Compute temp output spec without flag name.
9467         Compute -frandom-seed.
9468         (OPT): Undef after use.
9469         * cfgloopanal.c (num_loop_insns): Skip debug insns.
9470         (average_num_loop_insns): Likewise.
9471         * params.h (MIN_NONDEBUG_INSN_UID): New.
9472         * gimple.def (GIMPLE_DEBUG): New.
9473         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
9474         * auto-inc-dec.c (merge_in_block): Skip debug insns.
9475         (merge_in_block): Fix whitespace.
9476         * toplev.c (flag_var_tracking): Update comment.
9477         (flag_var_tracking_assignments): New.
9478         (flag_var_tracking_assignments_toggle): New.
9479         (process_options): Don't open final insns dump file if we're not
9480         going to write to it.  Compute defaults for var_tracking.
9481         * df-scan.c (df_insn_rescan_debug_internal): New.
9482         (df_uses_record): Handle debug insns.
9483         * haifa-sched.c (ready): Initialize n_debug.
9484         (contributes_to_priority): Skip debug insns.
9485         (dep_list_size): New.
9486         (priority): Use it.
9487         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
9488         they're ready.  Disregard previous debug insns to make decisions.
9489         (queue_insn): Never queue debug insns.
9490         (ready_add, ready_remove_first, ready_remove): Count debug insns.
9491         (schedule_insn): Don't reject debug insns because of issue rate.
9492         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
9493         (queue_to_ready): Skip and discount debug insns.
9494         (choose_ready): Let debug insns through.
9495         (schedule_block): Check boundary debug insns.  Discount debug
9496         insns, schedule them early.  Adjust whitespace.
9497         (set_priorities): Check for boundary debug insns.
9498         (add_jump_dependencies): Use dep_list_size.
9499         (prev_non_location_insn): New.
9500         (check_cfg): Use it.
9501         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
9502         stmts.
9503         (remove_unused_ivs): Reset debug stmts.
9504         * modulo-sched.c (const_iteration_count): Skip debug insns.
9505         (res_MII): Discount debug insns.
9506         (loop_single_full_bb_p): Skip debug insns.
9507         (sms_schedule): Likewise.
9508         (sms_schedule_by_order): Likewise.
9509         (ps_has_conflicts): Likewise.
9510         * caller-save.c (refmarker_fn): New.
9511         (save_call_clobbered_regs): Replace regs with saved mem in
9512         debug insns.
9513         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
9514         Call refmarker_fn mark for hardregnos.
9515         (mark_reg_as_referenced): New.
9516         (replace_reg_with_saved_mem): New.
9517         * ipa-pure-const.c (check_stmt): Skip debug stmts.
9518         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
9519         searching back.
9520         (cse_extended_basic_block): Skip debug insns.
9521         (count_reg_usage): Likewise.
9522         (is_dead_reg): New, split out of...
9523         (set_live_p): ... here.
9524         (insn_live_p): Use it for debug insns.
9525         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
9526         (execute_optimize_stdarg): Likewise.
9527         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
9528         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
9529         changes in debug stmts as changes.
9530         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
9531         (moveup_expr): Don't move across debug insns.  Don't move
9532         debug insn if it would create a bookkeeping block.
9533         (moveup_expr_cached): Don't use cache for debug insns that
9534         are heads of blocks.
9535         (compute_av_set_inside_bb): Skip debug insns.
9536         (sel_rank_for_schedule): Schedule debug insns first.  Remove
9537         dead code.
9538         (block_valid_for_bookkeeping_p); Support lax searches.
9539         (create_block_for_bookkeeping): Adjust block numbers when
9540         encountering debug-only blocks.
9541         (find_place_for_bookkeeping): Deal with debug-only blocks.
9542         (generate_bookkeeping_insn): Accept no place to insert.
9543         (remove_temp_moveop_nops): New argument full_tidying.
9544         (prepare_place_to_insert): Deal with debug insns.
9545         (advance_state_on_fence): Debug insns don't start cycles.
9546         (update_boundaries): Take fence as argument.  Deal with
9547         debug insns.
9548         (schedule_expr_on_boundary): No full_tidying on debug insns.
9549         (fill_insns): Deal with debug insns.
9550         (track_scheduled_insns_and_blocks): Don't count debug insns.
9551         (need_nop_to_preserve_insn_bb): New, split out of...
9552         (remove_insn_from_stream): ... this.
9553         (fur_orig_expr_not_found): Skip debug insns.
9554         * rtl.def (VALUE): Move up.
9555         (DEBUG_INSN): New.
9556         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
9557         (nearest_common_dominator_of_uses): Take debug_stmts argument.
9558         Set it if debug stmts are found.
9559         (statement_sink_location): Skip debug stmts.  Propagate
9560         moving defs into debug stmts.
9561         * ifcvt.c (first_active_insn): Skip debug insns.
9562         (last_active_insns): Likewise.
9563         (cond_exec_process_insns): Likewise.
9564         (noce_process_if_block): Likewise.
9565         (check_cond_move_block): Likewise.
9566         (cond_move_convert_if_block): Likewise.
9567         (block_jumps_and_fallthru_p): Likewise.
9568         (dead_or_predicable): Likewise.
9569         * dwarf2out.c (debug_str_hash_forced): New.
9570         (find_AT_string): Add comment.
9571         (gen_label_for_indirect_string): New.
9572         (get_debug_string_label): New.
9573         (AT_string_form): Use it.
9574         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
9575         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
9576         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
9577         several operations that cannot be represented with DWARF opcodes.
9578         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
9579         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
9580         (dwarf2out_var_location): Take during-call mark into account.
9581         (output_indirect_string): Update comment.  Output if there are
9582         label and references.
9583         (prune_indirect_string): New.
9584         (prune_unused_types): Call it if debug_str_hash_forced.
9585         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
9586         (dw_long_long_const): Remove.
9587         (struct dw_val_struct): Change val_long_long type to rtx.
9588         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
9589         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
9590         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
9591         component instead of HOST_BITS_PER_LONG.
9592         (output_loc_operands): Likewise.  For const8* assert
9593         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
9594         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
9595         rather than HOST_BITS_PER_LONG is >= 64.
9596         (add_AT_long_long): Remove val_hi and val_lo arguments, add
9597         val_const_double.
9598         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
9599         HOST_BITS_PER_LONG for dw_val_class_long_long.
9600         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
9601         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
9602         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
9603         DW_OP_stack_value.
9604         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
9605         Handle DW_OP_implicit_value.
9606         (extract_int): Move prototype earlier.
9607         (mem_loc_descriptor): For SUBREG punt if inner
9608         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
9609         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
9610         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
9611         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
9612         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
9613         instead of Pmode size.
9614         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
9615         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
9616         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
9617         (concat_loc_descriptor, concatn_loc_descriptor,
9618         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
9619         (add_location_or_const_value_attribute): Likewise.  For single
9620         location loc_lists attempt to use add_const_value_attribute
9621         for constant decls.  Add DW_AT_const_value even if
9622         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
9623         in its expression.
9624         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
9625         (control_flow_insn_p): Likewise.
9626         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
9627         (separate_decls_in_region_debug_bind): New.
9628         (separate_decls_in_region): Process debug bind stmts afterwards.
9629         * recog.c (verify_changes): Handle debug insns.
9630         (extract_insn): Likewise.
9631         (peephole2_optimize): Skip debug insns.
9632         * dse.c (scan_insn): Skip debug insns.
9633         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
9634         Pass it on.
9635         (setup_id_for_insn): Handle debug insns.
9636         (maybe_tidy_empty_bb): Adjust whitespace.
9637         (tidy_control_flow): Skip debug insns.
9638         (sel_remove_insn): Adjust for debug insns.
9639         (sel_estimate_number_of_insns): Skip debug insns.
9640         (create_insn_rtx_from_pattern): Handle debug insns.
9641         (create_copy_of_insn_rtx): Likewise.
9642         * sel-sched-.h (sel_bb_end): Declare.
9643         (sel_bb_empty_or_nop_p): New.
9644         (get_all_loop_exits): Use it.
9645         (_eligible_successor_edge_p): Likewise.
9646         (return_nop_to_pool): Adjust.
9647         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
9648         * ira-lives.c (process_bb_node_lives): Skip debug insns.
9649         * gimple-pretty-print.c (dump_gimple_debug): New.
9650         (dump_gimple_stmt): Use it.
9651         (dump_bb_header): Skip gimple debug stmts.
9652         * regmove.c (optimize_reg_copy_1): Discount debug insns.
9653         (fixup_match_2): Likewise.
9654         (regmove_backward_pass): Likewise.  Simplify combined
9655         replacement.  Handle debug insns.
9656         * function.c (instantiate_virtual_regs): Handle debug insns.
9657         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
9658         * print-rtl.h: Include cselib.h.
9659         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
9660         * df.h (df_inns_rescan_debug_internal): Declare.
9661         * gcse.c (alloc_hash_table): Estimate n_insns.
9662         (cprop_insn): Don't regard debug insns as changes.
9663         (bypass_conditional_jumps): Skip debug insns.
9664         (one_pre_gcse_pass): Adjust.
9665         (one_code_hoisting_pass): Likewise.
9666         (compute_ld_motion_mems): Skip debug insns.
9667         (one_cprop_pass): Adjust.
9668         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
9669         (if_convertible_stmt_p): Handle debug stmts.
9670         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
9671         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
9672         * ira-build.c (create_bb_allocnos): Skip debug insns.
9673         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
9674         (has_single_use): Likewise.
9675         (single_imm_use): Likewise.
9676         (num_imm_uses): Likewise.
9677         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
9678         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
9679         (create_outofssa_var_map): Likewise.
9680         * lower-subreg.c (adjust_decomposed_uses): New.
9681         (resolve_debug): New.
9682         (decompose_multiword_subregs): Use it.
9683         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
9684         * emit-rtl.c: Include params.h.
9685         (cur_debug_insn_uid): Define.
9686         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
9687         (copy_rtx_if_shared_1): Handle debug insns.
9688         (reset_used_flags): Likewise.
9689         (set_used_flags): LIkewise.
9690         (get_max_insn_count): New.
9691         (next_nondebug_insn): New.
9692         (prev_nondebug_insn): New.
9693         (make_debug_insn_raw): New.
9694         (emit_insn_before_noloc): Handle debug insns.
9695         (emit_jump_insn_before_noloc): Likewise.
9696         (emit_call_insn_before_noloc): Likewise.
9697         (emit_debug_insn_before_noloc): New.
9698         (emit_insn_after_noloc): Handle debug insns.
9699         (emit_jump_insn_after_noloc): Likewise.
9700         (emit_call_insn_after_noloc): Likewise.
9701         (emit_debug_insn_after_noloc): Likewise.
9702         (emit_insn_after): Take loc from earlier non-debug insn.
9703         (emit_jump_insn_after): Likewise.
9704         (emit_call_insn_after): Likewise.
9705         (emit_debug_insn_after_setloc): New.
9706         (emit_debug_insn_after): New.
9707         (emit_insn_before): Take loc from later non-debug insn.
9708         (emit_jump_insn_before): Likewise.
9709         (emit_call_insn_before): Likewise.
9710         (emit_debug_insn_before_setloc): New.
9711         (emit_debug_insn_before): New.
9712         (emit_insn): Handle debug insns.
9713         (emit_debug_insn): New.
9714         (emit_jump_insn): Handle debug insns.
9715         (emit_call_insn): Likewise.
9716         (emit): Likewise.
9717         (init_emit): Take min-nondebug-insn-uid into account.
9718         Initialize cur_debug_insn_uid.
9719         (emit_copy_of_insn_after): Handle debug insns.
9720         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
9721         location of single rhs in place.
9722         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
9723         (floor_sdiv_adjust): New.
9724         (cell_sdiv_adjust): New.
9725         (cell_udiv_adjust): New.
9726         (round_sdiv_adjust): New.
9727         (round_udiv_adjust): New.
9728         (wrap_constant): Moved from cselib.
9729         (unwrap_constant): New.
9730         (expand_debug_expr): New.
9731         (expand_debug_locations): New.
9732         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
9733         debug bind stmts.
9734         (gimple_expand_cfg): Expand debug locations.
9735         * cselib.c: Include tree-pass.h.
9736         (struct expand_value_data): New.
9737         (cselib_record_sets_hook): New.
9738         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
9739         (cselib_clear_table): Move, and implemnet in terms of...
9740         (cselib_reset_table_with_next_value): ... this.
9741         (cselib_get_next_unknown_value): New.
9742         (discard_useless_locs): Don't discard preserved values.
9743         (cselib_preserve_value): New.
9744         (cselib_preserved_value_p): New.
9745         (cselib_preserve_definitely): New.
9746         (cselib_clear_preserve): New.
9747         (cselib_preserve_only_values): New.
9748         (new_cselib_val): Take rtx argument.  Dump it in details.
9749         (cselib_lookup_mem): Adjust.
9750         (expand_loc): Take regs_active in struct.  Adjust.  Silence
9751         dumps unless details are requested.
9752         (cselib_expand_value_rtx_cb): New.
9753         (cselib_expand_value_rtx): Rename and reimplment in terms of...
9754         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
9755         without details.  Copy more subregs.  Try to resolve values
9756         using a callback.  Wrap constants.
9757         (cselib_subst_to_values): Adjust.
9758         (cselib_log_lookup): New.
9759         (cselib_lookup): Call it.
9760         (cselib_invalidate_regno): Don't count preserved values as useless.
9761         (cselib_invalidate_mem): Likewise.
9762         (cselib_record_set): Likewise.
9763         (struct set): Renamed to cselib_set, moved to cselib.h.
9764         (cselib_record_sets): Adjust.  Call hook.
9765         (cselib_process_insn): Reset table when it would be cleared.
9766         (dump_cselib_val): New.
9767         (dump_cselib_table): New.
9768         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
9769         (remove_forwarder_block): Support moving debug stmts.
9770         * cselib.h (cselib_record_sets_hook): Declare.
9771         (cselib_expand_callback): New type.
9772         (cselib_expand_value_rtx_cb): Declare.
9773         (cselib_reset_table_with_next_value): Declare.
9774         (cselib_get_next_unknown_value): Declare.
9775         (cselib_preserve_value): Declare.
9776         (cselib_preserved_value_p): Declare.
9777         (cselib_preserve_only_values): Declare.
9778         (dump_cselib_table): Declare.
9779         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
9780         (try_crossjump_to_edge): Likewise.
9781         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
9782         dominated blocks when debug stmts are present.
9783         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
9784         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
9785         (set_var_live_on_entry): Likewise.
9786         * loop-invariant.c (find_invariants_bb): Skip debug insns.
9787         * cfglayout.c (curr_location, last_location): Make static.
9788         (set_curr_insn_source_location): Don't avoid bouncing.
9789         (get_curr_insn_source_location): New.
9790         (get_curr_insn_block): New.
9791         (duplicate_insn_chain): Handle debug insns.
9792         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
9793         into debug stmts.
9794         * common.opt (fcompare-debug): Move to sort order.
9795         (fdump-unnumbered-links): Likewise.
9796         (fvar-tracking-assignments): New.
9797         (fvar-tracking-assignments-toggle): New.
9798         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
9799         because of debug stmts.
9800         (mark_stmt_if_obviously_necessary): Mark debug stmts.
9801         (eliminate_unnecessary_stmts): Walk dominated blocks before
9802         dominators.
9803         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
9804         * ira.c (memref_used_between_p): Skip debug insns.
9805         (update_equiv_regs): Likewise.
9806         * sched-deps.c (sd_lists_size): Accept empty list.
9807         (sd_init_insn): Mark debug insns.
9808         (sd_finish_insn): Unmark them.
9809         (sd_add_dep): Reject non-debug deps on debug insns.
9810         (fixup_sched_groups): Give debug insns group treatment.
9811         Skip debug insns.
9812         (sched_analyze_reg): Don't mark debug insns for sched before call.
9813         (sched_analyze_2): Handle debug insns.
9814         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
9815         insns.
9816         (deps_analyze_insn): Handle debug insns.
9817         (deps_start_bb): Skip debug insns.
9818         (init_deps): Initialize last_debug_insn.
9819         * tree-ssa.c (target_for_debug_bind): New.
9820         (find_released_ssa_name): New.
9821         (propagate_var_def_into_debug_stmts): New.
9822         (propagate_defs_into_debug_stmts): New.
9823         (verify_ssa): Skip debug bind stmts without values.
9824         (warn_uninialized_vars): Skip debug stmts.
9825         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
9826         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
9827         (rtx_equal_p): Likewise.
9828         * ira-costs.c (scan_one_insn): Skip debug insns.
9829         (process_bb_node_for_hard_reg_moves): Likewise.
9830         * rtl.h (DEBUG_INSN_P): New.
9831         (NONDEBUG_INSN_P): New.
9832         (MAY_HAVE_DEBUG_INSNS): New.
9833         (INSN_P): Accept debug insns.
9834         (RTX_FRAME_RELATED_P): Likewise.
9835         (INSN_DELETED_P): Likewise
9836         (PAT_VAR_LOCATION_DECL): New.
9837         (PAT_VAR_LOCATION_LOC): New.
9838         (PAT_VAR_OCATION_STATUS): New.
9839         (NOTE_VAR_LOCATION_DECL): Reimplement.
9840         (NOTE_VAR_LOCATION_LOC): Likewise.
9841         (NOTE_VAR_LOCATION_STATUS): Likewise.
9842         (INSN_VAR_LOCATION): New.
9843         (INSN_VAR_LOCATION_DECL): New.
9844         (INSN_VAR_LOCATION_LOC): New.
9845         (INSN_VAR_LOCATION_STATUS): New.
9846         (gen_rtx_UNKNOWN_VAR_LOC): New.
9847         (VAR_LOC_UNKNOWN_P): New.
9848         (NOTE_DURING_CALL_P): New.
9849         (SCHED_GROUP_P): Accept debug insns.
9850         (emit_debug_insn_before): Declare.
9851         (emit_debug_insn_before_noloc): Declare.
9852         (emit_debug_insn_beore_setloc): Declare.
9853         (emit_debug_insn_after): Declare.
9854         (emit_debug_insn_after_noloc): Declare.
9855         (emit_debug_insn_after_setloc): Declare.
9856         (emit_debug_insn): Declare.
9857         (make_debug_insn_raw): Declare.
9858         (prev_nondebug_insn): Declare.
9859         (next_nondebug_insn): Declare.
9860         (delegitimize_mem_from_attrs): Declare.
9861         (get_max_insn_count): Declare.
9862         (wrap_constant): Declare.
9863         (unwrap_constant): Declare.
9864         (get_curr_insn_source_location): Declare.
9865         (get_curr_insn_block): Declare.
9866         * tree-inline.c (insert_debug_decl_map): New.
9867         (processing_debug_stmt): New.
9868         (remap_decl): Don't create new mappings in debug stmts.
9869         (remap_gimple_op_r): Don't add references in debug stmts.
9870         (copy_tree_body_r): Likewise.
9871         (remap_gimple_stmt): Handle debug bind stmts.
9872         (copy_bb): Skip debug stmts.
9873         (copy_edges_for_bb): Likewise.
9874         (copy_debug_stmt): New.
9875         (copy_debug_stmts): New.
9876         (copy_body): Copy debug stmts at the end.
9877         (insert_init_debug_bind): New.
9878         (insert_init_stmt): Take id.  Skip and emit debug stmts.
9879         (setup_one_parameter): Remap variable earlier, register debug mapping.
9880         (estimate_num_insns): Skip debug stmts.
9881         (expand_call_inline): Preserve debug_map.
9882         (optimize_inline_calls): Check for no debug_stmts left-overs.
9883         (unsave_expr_now): Preserve debug_map.
9884         (copy_gimple_seq_and_replace_locals): Likewise.
9885         (tree_function_versioning): Check for no debug_stmts left-overs.
9886         Init and destroy debug_map as needed.  Split edges unconditionally.
9887         (build_duplicate_type): Init and destroy debug_map as needed.
9888         * tree-inline.h: Include gimple.h instead of pointer-set.h.
9889         (struct copy_body_data): Add debug_stmts and debug_map.
9890         * sched-int.h (struct ready_list): Add n_debug.
9891         (struct deps): Add last_debug_insn.
9892         (DEBUG_INSN_SCHED_P): New.
9893         (BOUNDARY_DEBUG_INSN_P): New.
9894         (SCHEDULE_DEBUG_INSN_P): New.
9895         (sd_iterator_cond): Accept empty list.
9896         * combine.c (create_log_links): Skip debug insns.
9897         (combine_instructions): Likewise.
9898         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
9899         return value is always unshared.
9900         (struct rtx_subst_pair): New.
9901         (auto_adjust_pair): New.
9902         (propagate_for_debug_subst): New.
9903         (propagate_for_debug): New.
9904         (try_combine): Skip debug insns.  Propagate removed defs into
9905         debug insns.
9906         (next_nonnote_nondebug_insn): New.
9907         (distribute_notes): Use it.  Skip debug insns.
9908         (distribute_links): Skip debug insns.
9909         * tree-outof-ssa.c (set_location_for_edge): Likewise.
9910         * resource.c (mark_target_live_regs): Likewise.
9911         * var-tracking.c: Include cselib.h and target.h.
9912         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
9913         MO_VAL_SET.
9914         (micro_operation_type_name): New.
9915         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
9916         (struct micro_operation_def): Update comments.
9917         (decl_or_value): New type.  Use instead of decls.
9918         (struct emit_note_data_def): Add vars.
9919         (struct attrs_def): Use decl_or_value.
9920         (struct variable_tracking_info_def): Add permp, flooded.
9921         (struct location_chain_def): Update comment.
9922         (struct variable_part_def): Use decl_or_value.
9923         (struct variable_def): Make var_part a variable length array.
9924         (valvar_pool): New.
9925         (scratch_regs): New.
9926         (cselib_hook_called): New.
9927         (dv_is_decl_p): New.
9928         (dv_is_value_p): New.
9929         (dv_as_decl): New.
9930         (dv_as_value): New.
9931         (dv_as_opaque): New.
9932         (dv_onepart_p): New.
9933         (dv_pool): New.
9934         (IS_DECL_CODE): New.
9935         (check_value_is_not_decl): New.
9936         (dv_from_decl): New.
9937         (dv_from_value): New.
9938         (dv_htab_hash): New.
9939         (variable_htab_hash): Use it.
9940         (variable_htab_eq): Support values.
9941         (variable_htab_free): Free from the right pool.
9942         (attrs_list_member, attrs_list_insert): Use decl_or_value.
9943         (attrs_list_union): Adjust.
9944         (attrs_list_mpdv_union): New.
9945         (tie_break_pointers): New.
9946         (canon_value_cmp): New.
9947         (unshare_variable): Return possibly-modified slot.
9948         (vars_copy_1): Adjust.
9949         (var_reg_decl_set): Adjust.  Split out of...
9950         (var_reg_set): ... this.
9951         (get_init_value): Adjust.
9952         (var_reg_delete_and_set): Adjust.
9953         (var_reg_delete): Adjust.
9954         (var_regno_delete): Adjust.
9955         (var_mem_decl_set): Split out of...
9956         (var_mem_set): ... this.
9957         (var_mem_delete_and_set): Adjust.
9958         (var_mem_delete): Adjust.
9959         (val_store): New.
9960         (val_reset): New.
9961         (val_resolve): New.
9962         (variable_union): Adjust.  Speed up merge of 1-part vars.
9963         (variable_canonicalize): Use unshared slot.
9964         (VALUED_RECURSED_INTO): New.
9965         (find_loc_in_1pdv): New.
9966         (struct dfset_merge): New.
9967         (insert_into_intersection): New.
9968         (intersect_loc_chains): New.
9969         (loc_cmp): New.
9970         (canonicalize_loc_order_check): New.
9971         (canonicalize_values_mark): New.
9972         (canonicalize_values_star): New.
9973         (variable_merge_over_cur): New.
9974         (variable_merge_over_src): New.
9975         (dataflow_set_merge): New.
9976         (dataflow_set_equiv_regs): New.
9977         (remove_duplicate_values): New.
9978         (struct dfset_post_merge): New.
9979         (variable_post_merge_new_vals): New.
9980         (variable_post_merge_perm_vals): New.
9981         (dataflow_post_merge_adjust): New.
9982         (find_mem_expr_in_1pdv): New.
9983         (dataflow_set_preserve_mem_locs): New.
9984         (dataflow_set_remove_mem_locs): New.
9985         (dataflow_set_clear_at_call): New.
9986         (onepart_variable_different_p): New.
9987         (variable_different_p): Use it.
9988         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
9989         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
9990         if not needed.
9991         (track_loc_p): Pass it true.
9992         (struct count_use_info): New.
9993         (find_use_val): New.
9994         (replace_expr_with_values): New.
9995         (log_op_type): New.
9996         (use_type): New, partially split out of...
9997         (count_uses): ... this.  Count new micro-ops.
9998         (count_uses_1): Adjust.
9999         (count_stores): Adjust.
10000         (count_with_sets): New.
10001         (VAL_NEEDS_RESOLUTION): New.
10002         (VAL_HOLDS_TRACK_EXPR): New.
10003         (VAL_EXPR_IS_COPIED): New.
10004         (VAL_EXPR_IS_CLOBBERED): New.
10005         (add_uses): Adjust.  Generate new micro-ops.
10006         (add_uses_1): Adjust.
10007         (add_stores): Generate new micro-ops.
10008         (add_with_sets): New.
10009         (find_src_status): Adjust.
10010         (find_src_set_src): Adjust.
10011         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
10012         Handle new micro-ops.  Canonicalize value equivalances.
10013         (vt_find_locations): Compute total size of hash tables for
10014         dumping.  Perform merge for var-tracking-assignments.  Don't
10015         disregard single-block loops.
10016         (dump_attrs_list): Handle decl_or_value.
10017         (dump_variable): Take variable.  Deal with decl_or_value.
10018         (dump_variable_slot): New.
10019         (dump_vars): Use it.
10020         (dump_dataflow_sets): Adjust.
10021         (set_slot_part): New, extended to support one-part variables
10022         after splitting out of...
10023         (set_variable_part): ... this.
10024         (clobber_slot_part): New, split out of...
10025         (clobber_variable_part): ... this.
10026         (delete_slot_part): New, split out of...
10027         (delete_variable_part): .... this.
10028         (check_wrap_constant): New.
10029         (vt_expand_loc_callback): New.
10030         (vt_expand_loc): New.
10031         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
10032         EMIT_NOTE_AFTER_CALL_INSN.
10033         (emit_notes_for_differences_1): Adjust.  Handle values.
10034         (emit_notes_for_differences_2): Likewise.
10035         (emit_notes_for_differences): Adjust.
10036         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
10037         Adjust.  Handle new micro-ops.
10038         (vt_add_function_parameters): Adjust.  Create and bind values.
10039         (vt_initialize): Adjust.  Initialize scratch_regs and
10040         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
10041         operations.  Move some code to count_with_sets and add_with_sets.
10042         (delete_debug_insns): New.
10043         (vt_debug_insns_local): New.
10044         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
10045         cselib.
10046         (var_tracking_main): If var-tracking-assignments is enabled
10047         but var-tracking isn't, delete debug insns and leave.  Likewise
10048         if we exceed limits or fail the stack adjustments tests, and
10049         after all var-tracking processing.
10050         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
10051         (dataflow_set): Add traversed_vars.
10052         (value_chain, const_value_chain): New typedefs.
10053         (value_chain_pool, value_chains): New variables.
10054         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
10055         add_value_chains, add_cselib_value_chains, remove_value_chain,
10056         remove_value_chains, remove_cselib_value_chains): New functions.
10057         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
10058         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
10059         static inlines.
10060         (shared_hash_find_slot_unshare, shared_hash_find_slot,
10061         shared_hash_find_slot_noinsert, shared_hash_find): Update.
10062         (dst_can_be_shared): New variable.
10063         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
10064         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
10065         different from set->vars, look up slot again instead of using the
10066         passed in slot.
10067         (dataflow_set_init): Initialize traversed_vars.
10068         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
10069         lookup if set->vars is shared.  Don't keep slot cleared before
10070         calling unshare_variable.  Unshare set->vars if needed.  Adjust
10071         unshare_variable callers.  Clear dst_can_be_shared if needed.
10072         Even ->refcount == 1 vars must be unshared if set->vars is shared
10073         and var needs to be modified.
10074         (dataflow_set_union): Set traversed_vars during canonicalization.
10075         (VALUE_CHANGED, DECL_CHANGED): Define.
10076         (set_dv_changed, dv_changed_p): New static inlines.
10077         (track_expr_p): Clear DECL_CHANGED.
10078         (dump_dataflow_sets): Set it.
10079         (variable_was_changed): Call set_dv_changed.
10080         (emit_note_insn_var_location): Likewise.
10081         (changed_variables_stack): New variable.
10082         (check_changed_vars_1, check_changed_vars_2): New functions.
10083         (emit_notes_for_changes): Do nothing if changed_variables is
10084         empty.  Traverse changed_variables with check_changed_vars_1,
10085         call check_changed_vars_2 on each changed_variables_stack entry.
10086         (emit_notes_in_bb): Add SET argument.  Just clear it at the
10087         beginning, use it instead of local &set, don't destroy it at the end.
10088         (vt_emit_notes): Call dataflow_set_clear early on all
10089         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
10090         computed set, dataflow_set_clear also VTI(bb)->in when we are
10091         done with the basic block.  Initialize changed_variables_stack,
10092         free it afterwards.  If ENABLE_CHECKING verify that after noting
10093         differences to an empty set value_chains hash table is empty.
10094         (vt_initialize): Initialize value_chains and value_chain_pool.
10095         (vt_finalize): Delete value_chains htab, free value_chain_pool.
10096         (variable_tracking_main): Call dump_dataflow_sets before calling
10097         vt_emit_notes, not after it.
10098         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
10099         (propagate_var_def_into_debug_stmts): Declare.
10100         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
10101         (df_set_note): Reject debug insns.
10102         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
10103         add notes to debug insns.
10104         (df_note_bb_compute): Adjust.  Likewise.
10105         (df_simulate_uses): Skip debug insns.
10106         (df_simulate_initialize_backwards): Likewise.
10107         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
10108         (subst_stack_regs_pat): Reject debug insns.
10109         (convert_regs_1): Handle debug insns.
10110         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
10111         (print-rtl.o): Depend on cselib.h.
10112         (cselib.o): Depend on TREE_PASS_H.
10113         (var-tracking.o): Depend on cselib.h and TARGET_H.
10114         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
10115         (init_ready_list): Skip boundary debug insns.
10116         (add_branch_dependences): Skip debug insns.
10117         (free_block_dependencies): Check for blocks with only debug insns.
10118         (compute_priorities): Likewise.
10119         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
10120         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
10121         all callers.
10122         (gimple_build_debug_bind_stat): New.
10123         (empty_body_p): Skip debug stmts.
10124         (gimple_has_side_effects): Likewise.
10125         (gimple_rhs_has_side_effects): Likewise.
10126         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
10127         (gimple_build_debug_bind_stat): Declare.
10128         (gimple_build_debug_bind): Define.
10129         (is_gimple_debug): New.
10130         (gimple_debug_bind_p): New.
10131         (gimple_debug_bind_get_var): New.
10132         (gimple_debug_bind_get_value): New.
10133         (gimple_debug_bind_get_value_ptr): New.
10134         (gimple_debug_bind_set_var): New.
10135         (gimple_debug_bind_set_value): New.
10136         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
10137         (gimple_debug_bind_reset_value): New.
10138         (gimple_debug_bind_has_value_p): New.
10139         (gsi_next_nondebug): New.
10140         (gsi_prev_nondebug): New.
10141         (gsi_start_nondebug_bb): New.
10142         (gsi_last_nondebug_bb): New.
10143         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
10144         (print_insn): Handle DEBUG_INSN.
10145         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
10146         of first insn prevail.
10147         (first_stmt): Skip debug stmts.
10148         (first_non_label_stmt): Likewise.
10149         (last_stmt): Likewise.
10150         (has_zero_uses_1): New.
10151         (single_imm_use_1): New.
10152         (verify_gimple_debug): New.
10153         (verify_types_in_gimple_stmt): Handle debug stmts.
10154         (verify_stmt): Likewise.
10155         (debug_loop_num): Skip debug stmts.
10156         (remove_edge_and_dominated_blocks): Remove dominators last.
10157         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
10158         (linearize_expr): Likewise.
10159         * config/i386/i386.c (ix86_delegitimize_address): Call
10160         default implementation.
10161         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
10162         (group_barrier_needed): Skip debug insns.
10163         (emit_insn_group_barriers): Likewise.
10164         (emit_all_insn_group_barriers): Likewise.
10165         (ia64_variable_issue): Handle debug insns.
10166         (ia64_dfa_new_cycle): Likewise.
10167         (final_emit_insn_group_barriers): Skip debug insns.
10168         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
10169         def cfa without frame.
10170         (process_set): Likewise.
10171         (process_for_unwind_directive): Pass frame on.
10172         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
10173         (rs6000_delegitimize_address): New.
10174         (rs6000_debug_adjust_cost): Handle debug insns.
10175         (is_microcoded_insn): Likewise.
10176         (is_cracked_insn): Likewise.
10177         (is_nonpipeline_insn): Likewise.
10178         (insn_must_be_first_in_group): Likewise.
10179         (insn_must_be_last_in_group): Likewise.
10180         (force_new_group): Likewise.
10181         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
10182         contains only debug insns.
10183         (rtl_merge_blocks): Skip debug insns.
10184         (purge_dead_edges): Likewise.
10185         (rtl_block_ends_with_call_p): Skip debug insns.
10186         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
10187         (mark_reg_dependencies): Skip debug insns.
10188         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
10189         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
10190         * tree-ssa-threadedge.c
10191         (record_temporary_equivalences_from_stmts): Skip debug stmts.
10192         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
10193         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
10194         (copyprop_hardreg_forward_1): Handle debug insns.
10195         * reload1.c (reload): Skip debug insns.  Replace unassigned
10196         pseudos in debug insns with their equivalences.
10197         (eliminate_regs_in_insn): Skip debug insns.
10198         (emit_input_reload_insns): Skip debug insns at first, adjust
10199         them later.
10200         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
10201         (get_indirect_ref_operands): Pass opf_no_vops on.
10202         (get_expr_operands): Likewise.  Skip debug stmts.
10203         (parse_ssa_operands): Scan debug insns with opf_no_vops.
10204
10205 2009-09-01  Richard Henderson  <rth@redhat.com>
10206
10207         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
10208         stmt_ends_pp_p statements at least once.
10209         * tree-vrp.c (vrp_initialize): Likewise.
10210         (vrp_visit_stmt): Be prepared for non-interesting stmts.
10211
10212 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
10213
10214         PR bootstrap/41205
10215         Fix AIX bootstrap after PR debug/30161
10216         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
10217         that is a GNU extension.
10218         (tmpl_value_parm_die_table): Move the definition of this global
10219         outside #ifdef DWARF2_DEBUGGING_INFO region.
10220
10221 2009-09-01  Richard Guenther  <rguenther@suse.de>
10222
10223         * tree.c (tree_expr_size): New function.
10224         * tree.h (tree_expr_size): Declare.
10225         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
10226         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
10227         * langhooks.c (lhd_expr_size): Remove.
10228         * langhooks.h (struct lang_hooks): Remove expr_size.
10229         * explow.c (expr_size): Use tree_expr_size.
10230         (int_expr_size): Likewise.
10231         * langhooks-def.h (lhd_expr_size): Remove.
10232         (LANG_HOOKS_EXPR_SIZE): Likewise.
10233         (LANG_HOOKS_INITIALIZER): Adjust.
10234
10235 2009-09-01  Richard Guenther  <rguenther@suse.de>
10236
10237         * tree-flow.h (mark_addressable): Move declaration ...
10238         * tree.h (mark_addressable): ... here.
10239         * stmt.c (expand_asm_operands): Use mark_addressable, not
10240         lang_hooks.mark_addressable.
10241         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
10242         LANG_HOOKS_MARK_ADDRESSABLE.
10243         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
10244         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
10245
10246 2009-08-31  Chris Demetriou  <cgd@google.com>
10247
10248         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
10249         vectorize if not TARGET_SSE2.
10250
10251 2009-08-31  DJ Delorie  <dj@redhat.com>
10252
10253         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
10254         registers if no coprocessor is enabled.
10255
10256 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
10257
10258         PR debug/30161
10259         * cgraph.h (cgraph_get_node): Declare ...
10260         * cgraph.c (cgraph_get_node): ... new function.
10261         * dwarf2out.c (gen_generic_params_dies,
10262         generic_parameter_die, tree_add_const_value_attribute_for_decl,
10263         make_ith_pack_parameter_name,
10264         append_entry_to_tmpl_value_parm_die_table,
10265         gen_remaining_tmpl_value_param_die_attribute): New functions.
10266         (gen_subprogram_die): Generate debug info for template parameters
10267         if debug info level is higher than DINFO_LEVEL_TERSE.
10268         Use tree_add_const_value_attribute_for_decl instead of
10269         tree_add_const_value_attribute.
10270         (gen_const_die): Use tree_add_const_value_attribute_for_decl
10271         instead of tree_add_const_value_attribute.
10272         (gen_struct_or_union_type_die): Generate debug
10273         info for template parameters if debug info level is higher than
10274         DINFO_LEVEL_TERSE.
10275         (tree_add_const_value_attribute): Handle integral and pointer
10276         constants. Update comment.
10277         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
10278         (dwarf_attr_name): Support DW_AT_GNU_template_name.
10279         (reference_to_unused): Fix thinko. Remove redundant predicates from
10280         tests.
10281         (tree_add_const_value_attribute): Make this work for constant
10282         expressions only.
10283         tree_add_const_value_attribute_for_decl is to be used for variable
10284         DECLs now.
10285         (add_location_or_const_value_attribute): Use
10286         tree_add_const_value_attribute_for_decl now.
10287         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
10288         DW_TAG_template_value_param DIEs after function DIEs have been
10289         emitted.
10290         * langhooks.h (lang_hooks_for_types): Add
10291         get_argument_pack_elems.
10292         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
10293         (lang_hooks): Added get_innermost_generic_parms,
10294         get_innermost_generic_args.
10295         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
10296         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
10297         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
10298         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
10299
10300 2009-08-31  DJ Delorie  <dj@redhat.com>
10301
10302         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
10303         it once we start generating the prologue or epilogue.
10304         (mep_call_saves_register): If the frame is locked, re-use
10305         cached values.
10306         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
10307         (mep_expand_prologue): Call it.
10308         (mep_expand_epilogue): Likewise.
10309         (mep_start_function): Use the same logic as mep_expand_prologue.
10310         (mep_pass_by_reference): Make logic more readable.
10311         (mep_return_in_memory): Zero-sized objects are passed in memory.
10312         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
10313
10314 2009-08-31  Richard Guenther  <rguenther@suse.de>
10315
10316         * builtins.c (fold_builtin_memory_op): Use the alias oracle
10317         to query if the memory regions for memmove overlap.
10318         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
10319         asserts on pointers, instead deal with odd trees.
10320         (ptr_derefs_may_alias_p): Likewise.
10321         (refs_may_alias_p_1): Constructor bases also never alias.
10322
10323 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
10324
10325         * doc/install.texi (Final install): Adjust reference on where to
10326         order printed manuals.
10327
10328 2009-08-30  Olivier Hainque  <hainque@adacore.com>
10329
10330         * dwarf2out.c (switch_to_frame_table_section): Move
10331         definition prior to first use.
10332
10333 2009-08-30  Richard Guenther  <rguenther@suse.de>
10334
10335         PR tree-optimization/41186
10336         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
10337         (ao_ref_init_from_ptr_and_size): New function.
10338         (ref_maybe_used_by_call_p_1): Be more precise tracking
10339         used ranges for builtin functions.
10340         (ref_maybe_used_by_call_p): Adjust.
10341         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
10342         ranges for builtin functions.
10343         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
10344
10345 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
10346
10347         PR target/41081
10348         * fwprop.c (get_reg_use_in): Delete.
10349         (free_load_extend): New function.
10350         (forward_propagate_subreg): Use it.
10351
10352 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
10353
10354         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
10355
10356 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
10357
10358         PR/41184
10359         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
10360         padding.
10361
10362 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
10363
10364         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
10365         fini or fini_array section.
10366
10367 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10368
10369         * graphite-dependences.c (graphite_legal_transform_bb): Call
10370         pbb_remove_duplicate_pdrs.
10371         * graphite-poly.c (can_collapse_pdr): Removed.
10372         (pdr_find_duplicate): Removed.
10373         (can_collapse_pdrs): New.
10374         (pbb_remove_duplicate_pdrs): New.
10375         (new_poly_dr): Do not look for duplicates.
10376         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
10377         (PBB_PDR_DUPLICATES_REMOVED): New.
10378         (pbb_remove_duplicate_pdrs): Declared.
10379
10380 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10381
10382         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
10383         the strides by multiplying by PDR_NB_REFS.
10384         * graphite-poly.c (can_collapse_pdr): New.
10385         (pdr_find_duplicate): New.
10386         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
10387         Initialize PDR_NB_REFS.
10388         * graphite-poly.h (struct poly_dr): Add field nb_refs.
10389         (PDR_NB_REFS): New.
10390         (new_poly_dr): Number of subscripts is a graphite_dim_t.
10391
10392 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10393
10394         PR middle-end/40965
10395         * graphite-poly.c (apply_poly_transforms): Remove legality test before
10396         any transform.
10397
10398 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10399
10400         * graphite-dependences.c (pddr_original_scattering): Return NULL
10401         for read-read dependence relations.
10402         * graphite-poly.h (enum poly_dr_type): Fix comment.
10403         (pdr_read_p): New.
10404         (pdr_write_p): New.
10405         (pdr_may_write_p): New.
10406
10407 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10408
10409         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
10410         (struct poly_dr): Same.
10411         (new_poly_dr): Same.
10412         * graphite-poly.c (new_poly_dr): Same.
10413         * graphite-dependences.c (dot_deps): Disable call to system.
10414
10415 2009-08-28  Cary Coutant  <ccoutant@google.com>
10416
10417         PR debug/41063
10418         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
10419         struct/union/enum types local to a function.
10420
10421 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
10422             Sebastian Pop  <sebastian.pop@amd.com>
10423
10424         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
10425         pbb_strip_mine_time_depth.  Changed the implementation so that
10426         transformation is expressed as a transformation on
10427         time (scatttering) dimensions.  Also, ensures that the 2d+1
10428         scheduling format is preserved.
10429         (pbb_strip_mine_profitable_p): Profitability is based on the
10430         iteration number of a given time (scattering) dimension,
10431         and not on a original loop depth dimension.
10432         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
10433         (pbb_do_strip_mine): Call psct_dynamic_dim.
10434         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
10435         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
10436         (pbb_nb_dynamic_scattering_transform): New.
10437         (psct_dynamic_dim): New.
10438
10439 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
10440
10441         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
10442         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
10443         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
10444         * graphite-interchange.c (build_linearized_memory_access): Same.
10445         (memory_stride_in_loop): Same.
10446
10447 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10448
10449         * graphite-dependences.c (pddr_original_scattering): New.
10450         (graphite_legal_transform_dr): Call pddr_original_scattering.
10451         (dot_deps_1): New.
10452         (dot_deps): New.
10453         * graphite-dependences.h (dot_deps): Declared.
10454         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
10455         (print_pdr): Print PDR_ID.
10456         * graphite-poly.h (struct poly_dr): Add field id.
10457         (PDR_ID): New.
10458         (pbb_index): New.
10459         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
10460
10461 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10462
10463         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
10464         not delete the original dependence relation.
10465
10466 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10467
10468         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
10469         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
10470         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
10471         (free_poly_ddr): New.
10472         (pddr_is_empty): New.
10473         (dependence_polyhedron_1): Now returns a poly_ddr_p.
10474         (dependence_polyhedron): Same.  Remove useless gcc_assert.
10475         Remove fprintfs.
10476         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
10477         (graphite_carried_dependence_level_k): Call pddr_is_empty.
10478         * graphite-dependences.h (enum poly_dependence_kind): New.
10479         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
10480         (PDRP_SOURCE): Renamed PDDR_SOURCE.
10481         (PDRP_SINK): Renamed PDDR_SINK.
10482         (PDRP_DDP): Renamed PDDR_DDP.
10483         (PDDR_KIND): New.
10484         (free_poly_ddr): Declared.
10485         * graphite-poly.c (new_scop): Use the new hash function names.
10486         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
10487         into original_pddrs.
10488         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
10489
10490 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10491
10492         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
10493         bounds with LT_EXPR to make niter analysis more precise on code
10494         generated by Graphite.
10495
10496 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10497
10498         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
10499         (graphite_legal_transform_bb): Same.
10500         (poly_drs_may_alias_p): Same.
10501
10502 2009-08-28  Richard Guenther  <rguenther@suse.de>
10503
10504         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
10505
10506 2009-08-28  Jan Beulich  <jbeulich@novell.com>
10507
10508         * config/i386/netware.c: Include langhooks.h.
10509         (i386_nlm_encode_section_info): Simplify.
10510         (netware_override_options): Delete.
10511         * config/i386/netware.h (netware_override_options): Delete
10512         declaration.
10513         (OVERRIDE_OPTIONS): Delete definition.
10514         (SUBTARGET_OVERRIDE_OPTIONS): Define.
10515         (ASM_COMMENT_START): Define.
10516         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
10517
10518 2009-08-28  Jan Beulich  <jbeulich@novell.com>
10519
10520         * configure.ac: For in-tree ld, do a plain version check to
10521         determine whether comdat groups are supported.
10522         * configure: Regenerate.
10523
10524 2009-08-28  Olivier Hainque  <hainque@adacore.com>
10525
10526         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
10527         always defined.  Reflect definition or absence of such for
10528         COLLECT_EXPORT_LIST.  Readability helper.
10529         (scanfilter): New enum, to help control what symbols
10530         are to be considered or ignored by scan_prog_file.
10531         (enum pass): Rename as "scanpass", moved together with scanfilter
10532         prior to scan_prog_file's prototype.
10533         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
10534         Group prototype with the scanpass/scanfilter definitions, factorize
10535         head comments for the several implementations at the prototype.
10536         (main): Reorganize the first pass link control to let AIX
10537         drag only the needed frame tables in executables.  Prevent
10538         frame tables collection during the scan aimed at static ctors.
10539         Pre-link and scan for frame tables later to compensate.
10540         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
10541         A C statement to issue assembly directives that create a reference
10542         to the given DWARF table identifier label from the current function
10543         section.
10544         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
10545         to differentiate first time section entry.  Only emit a .data
10546         tables start identifier label the first time around.
10547         (switch_to_frame_table_section): New function.  Helper for
10548         output_call_frame_info to switch possibly BACK into the eh_frame
10549         or the debug_frame section depending on FOR_EH.
10550         (output_call_frame_info): Use helper to first enter the proper
10551         frame section.
10552         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
10553         emit a link to the frame table start label from each function
10554         section.
10555         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
10556         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
10557         * config/rs6000/rs6000-protos.h: Declare it.
10558         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
10559
10560 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
10561
10562         * config/sh/sh.c (split_branches): Check the result of
10563         next_active_insn.
10564
10565 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
10566
10567         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
10568         using -pthread -fopenmp
10569
10570 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
10571
10572         * doc/service.texi (service directory): Update URL.
10573
10574 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
10575
10576         PR rtl-optimization/40861
10577         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
10578         extract word from a multi-word subreg for negative byte positions.
10579
10580 2009-08-27  Tristan Gingold  <gingold@adacore.com>
10581             Douglas B Rupp  <rupp@gnat.com>
10582
10583         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
10584         (SECTION_VMS_OVERLAY): Define.
10585         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
10586         attribute.
10587         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
10588         for common_object.
10589         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
10590         common_object declarations.
10591         (ia64_section_type_flags): Set section flag for common_object.
10592         * config/ia64/ia64-protos.h
10593         (ia64_vms_output_aligned_decl_common): Declare.
10594         (ia64_vms_elf_asm_named_section): Declare.
10595
10596 2009-08-27  Michael Matz  <matz@suse.de>
10597
10598         * expr.c (expand_expr_real_2): New function taking exploded
10599         unary or binary expression, split out from ...
10600         (expand_expr_real_1): ... here.  Move over all unary/binary
10601         switch parts to above function, in particular these codes:
10602         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
10603         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
10604         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
10605         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
10606         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
10607         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
10608         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
10609         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
10610         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
10611         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
10612         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
10613         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
10614         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
10615         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
10616         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
10617         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
10618         VEC_PACK_FIX_TRUNC_EXPR.
10619         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
10620         full expression.
10621
10622 2009-08-27  Richard Guenther  <rguenther@suse.de>
10623
10624         * gengtype.c (main): Handle uint64_t.
10625         * ipa-utils.c (get_base_var): Indent properly.
10626         * tree-ssa-live.c (debug_scope_block): New function.
10627         * tree-flow.h (debug_scope_block): Declare.
10628         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
10629         * basic-block.h (enum profile_status): Rename to
10630         enum profile_status_d.
10631         (x_profile_status): Adjust type.
10632
10633 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
10634
10635         PR debug/41170
10636         * dwarf2out.c (get_context_die): Declare this static function.
10637         (gen_type_die_with_usage): Make sure a DIE is a generated for
10638         the context of a typedef.
10639
10640 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
10641
10642         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
10643         switch.
10644
10645 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
10646
10647         * config/mips/mips-protos.h (mips_output_sync): Declare.
10648         (mips_sync_loop_insns): Likewise.
10649         (mips_output_sync_loop): Replace first two parameters with an rtx.
10650         * config/mips/mips.c (mips_multi_member): New structure.
10651         (mips_multi_members): New variable.
10652         (mips_multi_start): New function.
10653         (mips_multi_add): Likewise.
10654         (mips_multi_add_insn): Likewise.
10655         (mips_multi_add_label): Likewise.
10656         (mips_multi_last_index): Likewise.
10657         (mips_multi_copy_insn): Likewise.
10658         (mips_multi_set_operand): Likewise.
10659         (mips_multi_write): Likewise.
10660         (mips_print_operand_punctuation): Remove '%|' and '%-'.
10661         (mips_init_print_operand_punct): Update accordingly.
10662         (mips_start_ll_sc_sync_block): New function.
10663         (mips_end_ll_sc_sync_block): Likewise.
10664         (mips_output_sync): Likewise.
10665         (mips_sync_insn1_template): Likewise.
10666         (mips_sync_insn2_template): Likewise.
10667         (mips_get_sync_operand): Likewise.
10668         (mips_process_sync_loop): Likewise.
10669         (mips_output_sync_loop): Use mips_process_sync_loop.
10670         (mips_sync_loop_insns): New function.
10671         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
10672         (MIPS_COMPARE_AND_SWAP_12): Likewise.
10673         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
10674         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
10675         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
10676         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
10677         (MIPS_SYNC_OLD_OP_12): Likewise.
10678         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
10679         (MIPS_SYNC_NEW_OP_12): Likewise.
10680         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
10681         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
10682         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
10683         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
10684         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
10685         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
10686         * config/mips/mips.md (sync_mem): New attribute.
10687         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
10688         (sync_exclusive_mask, sync_required_oldval): Likewise.
10689         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
10690         (sync_release_barrier): Likewise.
10691         (length): Handle sync loops.
10692         (sync): Use mips_output_sync.
10693         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
10694         (sync_compare_and_swap<mode>): Set the new sync_* attributes
10695         and use mips_output_sync_loop.
10696         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
10697         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
10698         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
10699         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
10700         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
10701         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
10702         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
10703         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
10704         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
10705
10706 2009-08-26  Richard Guenther  <rguenther@suse.de>
10707
10708         PR middle-end/41163
10709         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
10710         the types to not match.
10711         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
10712         verification.
10713         * tree-ssa.c (useless_type_conversion_p): Conversions to
10714         pointers to unprototyped functions are useless.
10715
10716 2009-08-26  Richard Guenther  <rguenther@suse.de>
10717
10718         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
10719         whole-program condition, prepare to be called for non-globals.
10720         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
10721         params build a representative with known type and track its fields.
10722
10723 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
10724
10725         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
10726         clearing by a taken branch.
10727         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
10728         effectively after bbro pass.
10729         (sync_nand<mode>): Ditto.
10730         (sync_old_<fetchop_name><mode>): Ditto.
10731         (sync_old_nand<mode>): Ditto.
10732         (sync_new_<fetchop_name><mode>): Dito.
10733         (sync_new_nand<mode>): Ditto.
10734         (sync_compare_and_swap<mode>_1): Ditto.
10735         (*sync_compare_and_swap<mode>): Ditto.
10736         (sync_lock_test_and_set<mode>_1): Ditto.
10737         ("sync_lock_test_and_set<mode>): Ditto.
10738
10739 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
10740
10741         * hwint.h (HOST_LONG_FORMAT): New macro
10742         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
10743         Use HOST_PTR_PRINTF.
10744         * system.h (HOST_PTR_PRINTF): Resurrect old macro
10745         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
10746         (HOST_PTR_PRINTF): Document.
10747
10748 2009-08-25 Jan Hubicka  <jh@suse.cz>
10749
10750         * config/i386/bmmintrin.h: Replace by #error.
10751
10752         Revert:
10753         Michael Meissner  <michael.meissner@amd.com>
10754         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
10755         Tony Linthicum  <tony.linthicum@amd.com>
10756
10757         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
10758         (TARGET_ROUND): New macro for the round/ptest instructions which
10759         are shared between SSE4.1 and SSE5.
10760         (OPTION_MASK_ISA_ROUND): Ditto.
10761         (OPTION_ISA_ROUND): Ditto.
10762         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
10763         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
10764
10765         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
10766         (-mfused-madd): New switch to give users control over whether the
10767         compiler optimizes to use the multiply/add SSE5 instructions.
10768
10769         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
10770         (ix86_handle_option): Turn off 3dnow if -msse5.
10771         (override_options): Add SSE5 support.
10772         (print_operand): %Y prints comparison codes for SSE5 com/pcom
10773         instructions.
10774         (ix86_expand_sse_movcc): Add SSE5 support.
10775         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
10776         vector type to the next largest size.
10777         (ix86_expand_sse5_pack): New function to use pperm to pack a
10778         vector type to the next smallest size.
10779         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
10780         (IX86_BUILTIN_FMADDSD): Ditto.
10781         (IX86_BUILTIN_FMADDPS): Ditto.
10782         (IX86_BUILTIN_FMADDPD): Ditto.
10783         (IX86_BUILTIN_FMSUBSS): Ditto.
10784         (IX86_BUILTIN_FMSUBSD): Ditto.
10785         (IX86_BUILTIN_FMSUBPS): Ditto.
10786         (IX86_BUILTIN_FMSUBPD): Ditto.
10787         (IX86_BUILTIN_FNMADDSS): Ditto.
10788         (IX86_BUILTIN_FNMADDSD): Ditto.
10789         (IX86_BUILTIN_FNMADDPS): Ditto.
10790         (IX86_BUILTIN_FNMADDPD): Ditto.
10791         (IX86_BUILTIN_FNMSUBSS): Ditto.
10792         (IX86_BUILTIN_FNMSUBSD): Ditto.
10793         (IX86_BUILTIN_FNMSUBPS): Ditto.
10794         (IX86_BUILTIN_FNMSUBPD): Ditto.
10795         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
10796         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
10797         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
10798         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
10799         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
10800         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
10801         (IX86_BUILTIN_PPERM): Ditto.
10802         (IX86_BUILTIN_PERMPS): Ditto.
10803         (IX86_BUILTIN_PERMPD): Ditto.
10804         (IX86_BUILTIN_PMACSSWW): Ditto.
10805         (IX86_BUILTIN_PMACSWW): Ditto.
10806         (IX86_BUILTIN_PMACSSWD): Ditto.
10807         (IX86_BUILTIN_PMACSWD): Ditto.
10808         (IX86_BUILTIN_PMACSSDD): Ditto.
10809         (IX86_BUILTIN_PMACSDD): Ditto.
10810         (IX86_BUILTIN_PMACSSDQL): Ditto.
10811         (IX86_BUILTIN_PMACSSDQH): Ditto.
10812         (IX86_BUILTIN_PMACSDQL): Ditto.
10813         (IX86_BUILTIN_PMACSDQH): Ditto.
10814         (IX86_BUILTIN_PMADCSSWD): Ditto.
10815         (IX86_BUILTIN_PMADCSWD): Ditto.
10816         (IX86_BUILTIN_PHADDBW): Ditto.
10817         (IX86_BUILTIN_PHADDBD): Ditto.
10818         (IX86_BUILTIN_PHADDBQ): Ditto.
10819         (IX86_BUILTIN_PHADDWD): Ditto.
10820         (IX86_BUILTIN_PHADDWQ): Ditto.
10821         (IX86_BUILTIN_PHADDDQ): Ditto.
10822         (IX86_BUILTIN_PHADDUBW): Ditto.
10823         (IX86_BUILTIN_PHADDUBD): Ditto.
10824         (IX86_BUILTIN_PHADDUBQ): Ditto.
10825         (IX86_BUILTIN_PHADDUWD): Ditto.
10826         (IX86_BUILTIN_PHADDUWQ): Ditto.
10827         (IX86_BUILTIN_PHADDUDQ): Ditto.
10828         (IX86_BUILTIN_PHSUBBW): Ditto.
10829         (IX86_BUILTIN_PHSUBWD): Ditto.
10830         (IX86_BUILTIN_PHSUBDQ): Ditto.
10831         (IX86_BUILTIN_PROTB): Ditto.
10832         (IX86_BUILTIN_PROTW): Ditto.
10833         (IX86_BUILTIN_PROTD): Ditto.
10834         (IX86_BUILTIN_PROTQ): Ditto.
10835         (IX86_BUILTIN_PROTB_IMM): Ditto.
10836         (IX86_BUILTIN_PROTW_IMM): Ditto.
10837         (IX86_BUILTIN_PROTD_IMM): Ditto.
10838         (IX86_BUILTIN_PROTQ_IMM): Ditto.
10839         (IX86_BUILTIN_PSHLB): Ditto.
10840         (IX86_BUILTIN_PSHLW): Ditto.
10841         (IX86_BUILTIN_PSHLD): Ditto.
10842         (IX86_BUILTIN_PSHLQ): Ditto.
10843         (IX86_BUILTIN_PSHAB): Ditto.
10844         (IX86_BUILTIN_PSHAW): Ditto.
10845         (IX86_BUILTIN_PSHAD): Ditto.
10846         (IX86_BUILTIN_PSHAQ): Ditto.
10847         (IX86_BUILTIN_FRCZSS): Ditto.
10848         (IX86_BUILTIN_FRCZSD): Ditto.
10849         (IX86_BUILTIN_FRCZPS): Ditto.
10850         (IX86_BUILTIN_FRCZPD): Ditto.
10851         (IX86_BUILTIN_CVTPH2PS): Ditto.
10852         (IX86_BUILTIN_CVTPS2PH): Ditto.
10853         (IX86_BUILTIN_COMEQSS): Ditto.
10854         (IX86_BUILTIN_COMNESS): Ditto.
10855         (IX86_BUILTIN_COMLTSS): Ditto.
10856         (IX86_BUILTIN_COMLESS): Ditto.
10857         (IX86_BUILTIN_COMGTSS): Ditto.
10858         (IX86_BUILTIN_COMGESS): Ditto.
10859         (IX86_BUILTIN_COMUEQSS): Ditto.
10860         (IX86_BUILTIN_COMUNESS): Ditto.
10861         (IX86_BUILTIN_COMULTSS): Ditto.
10862         (IX86_BUILTIN_COMULESS): Ditto.
10863         (IX86_BUILTIN_COMUGTSS): Ditto.
10864         (IX86_BUILTIN_COMUGESS): Ditto.
10865         (IX86_BUILTIN_COMORDSS): Ditto.
10866         (IX86_BUILTIN_COMUNORDSS): Ditto.
10867         (IX86_BUILTIN_COMFALSESS): Ditto.
10868         (IX86_BUILTIN_COMTRUESS): Ditto.
10869         (IX86_BUILTIN_COMEQSD): Ditto.
10870         (IX86_BUILTIN_COMNESD): Ditto.
10871         (IX86_BUILTIN_COMLTSD): Ditto.
10872         (IX86_BUILTIN_COMLESD): Ditto.
10873         (IX86_BUILTIN_COMGTSD): Ditto.
10874         (IX86_BUILTIN_COMGESD): Ditto.
10875         (IX86_BUILTIN_COMUEQSD): Ditto.
10876         (IX86_BUILTIN_COMUNESD): Ditto.
10877         (IX86_BUILTIN_COMULTSD): Ditto.
10878         (IX86_BUILTIN_COMULESD): Ditto.
10879         (IX86_BUILTIN_COMUGTSD): Ditto.
10880         (IX86_BUILTIN_COMUGESD): Ditto.
10881         (IX86_BUILTIN_COMORDSD): Ditto.
10882         (IX86_BUILTIN_COMUNORDSD): Ditto.
10883         (IX86_BUILTIN_COMFALSESD): Ditto.
10884         (IX86_BUILTIN_COMTRUESD): Ditto.
10885         (IX86_BUILTIN_COMEQPS): Ditto.
10886         (IX86_BUILTIN_COMNEPS): Ditto.
10887         (IX86_BUILTIN_COMLTPS): Ditto.
10888         (IX86_BUILTIN_COMLEPS): Ditto.
10889         (IX86_BUILTIN_COMGTPS): Ditto.
10890         (IX86_BUILTIN_COMGEPS): Ditto.
10891         (IX86_BUILTIN_COMUEQPS): Ditto.
10892         (IX86_BUILTIN_COMUNEPS): Ditto.
10893         (IX86_BUILTIN_COMULTPS): Ditto.
10894         (IX86_BUILTIN_COMULEPS): Ditto.
10895         (IX86_BUILTIN_COMUGTPS): Ditto.
10896         (IX86_BUILTIN_COMUGEPS): Ditto.
10897         (IX86_BUILTIN_COMORDPS): Ditto.
10898         (IX86_BUILTIN_COMUNORDPS): Ditto.
10899         (IX86_BUILTIN_COMFALSEPS): Ditto.
10900         (IX86_BUILTIN_COMTRUEPS): Ditto.
10901         (IX86_BUILTIN_COMEQPD): Ditto.
10902         (IX86_BUILTIN_COMNEPD): Ditto.
10903         (IX86_BUILTIN_COMLTPD): Ditto.
10904         (IX86_BUILTIN_COMLEPD): Ditto.
10905         (IX86_BUILTIN_COMGTPD): Ditto.
10906         (IX86_BUILTIN_COMGEPD): Ditto.
10907         (IX86_BUILTIN_COMUEQPD): Ditto.
10908         (IX86_BUILTIN_COMUNEPD): Ditto.
10909         (IX86_BUILTIN_COMULTPD): Ditto.
10910         (IX86_BUILTIN_COMULEPD): Ditto.
10911         (IX86_BUILTIN_COMUGTPD): Ditto.
10912         (IX86_BUILTIN_COMUGEPD): Ditto.
10913         (IX86_BUILTIN_COMORDPD): Ditto.
10914         (IX86_BUILTIN_COMUNORDPD): Ditto.
10915         (IX86_BUILTIN_COMFALSEPD): Ditto.
10916         (IX86_BUILTIN_COMTRUEPD): Ditto.
10917         (IX86_BUILTIN_PCOMEQUB): Ditto.
10918         (IX86_BUILTIN_PCOMNEUB): Ditto.
10919         (IX86_BUILTIN_PCOMLTUB): Ditto.
10920         (IX86_BUILTIN_PCOMLEUB): Ditto.
10921         (IX86_BUILTIN_PCOMGTUB): Ditto.
10922         (IX86_BUILTIN_PCOMGEUB): Ditto.
10923         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
10924         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
10925         (IX86_BUILTIN_PCOMEQUW): Ditto.
10926         (IX86_BUILTIN_PCOMNEUW): Ditto.
10927         (IX86_BUILTIN_PCOMLTUW): Ditto.
10928         (IX86_BUILTIN_PCOMLEUW): Ditto.
10929         (IX86_BUILTIN_PCOMGTUW): Ditto.
10930         (IX86_BUILTIN_PCOMGEUW): Ditto.
10931         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
10932         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
10933         (IX86_BUILTIN_PCOMEQUD): Ditto.
10934         (IX86_BUILTIN_PCOMNEUD): Ditto.
10935         (IX86_BUILTIN_PCOMLTUD): Ditto.
10936         (IX86_BUILTIN_PCOMLEUD): Ditto.
10937         (IX86_BUILTIN_PCOMGTUD): Ditto.
10938         (IX86_BUILTIN_PCOMGEUD): Ditto.
10939         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
10940         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
10941         (IX86_BUILTIN_PCOMEQUQ): Ditto.
10942         (IX86_BUILTIN_PCOMNEUQ): Ditto.
10943         (IX86_BUILTIN_PCOMLTUQ): Ditto.
10944         (IX86_BUILTIN_PCOMLEUQ): Ditto.
10945         (IX86_BUILTIN_PCOMGTUQ): Ditto.
10946         (IX86_BUILTIN_PCOMGEUQ): Ditto.
10947         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
10948         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
10949         (IX86_BUILTIN_PCOMEQB): Ditto.
10950         (IX86_BUILTIN_PCOMNEB): Ditto.
10951         (IX86_BUILTIN_PCOMLTB): Ditto.
10952         (IX86_BUILTIN_PCOMLEB): Ditto.
10953         (IX86_BUILTIN_PCOMGTB): Ditto.
10954         (IX86_BUILTIN_PCOMGEB): Ditto.
10955         (IX86_BUILTIN_PCOMFALSEB): Ditto.
10956         (IX86_BUILTIN_PCOMTRUEB): Ditto.
10957         (IX86_BUILTIN_PCOMEQW): Ditto.
10958         (IX86_BUILTIN_PCOMNEW): Ditto.
10959         (IX86_BUILTIN_PCOMLTW): Ditto.
10960         (IX86_BUILTIN_PCOMLEW): Ditto.
10961         (IX86_BUILTIN_PCOMGTW): Ditto.
10962         (IX86_BUILTIN_PCOMGEW): Ditto.
10963         (IX86_BUILTIN_PCOMFALSEW): Ditto.
10964         (IX86_BUILTIN_PCOMTRUEW): Ditto.
10965         (IX86_BUILTIN_PCOMEQD): Ditto.
10966         (IX86_BUILTIN_PCOMNED): Ditto.
10967         (IX86_BUILTIN_PCOMLTD): Ditto.
10968         (IX86_BUILTIN_PCOMLED): Ditto.
10969         (IX86_BUILTIN_PCOMGTD): Ditto.
10970         (IX86_BUILTIN_PCOMGED): Ditto.
10971         (IX86_BUILTIN_PCOMFALSED): Ditto.
10972         (IX86_BUILTIN_PCOMTRUED): Ditto.
10973         (IX86_BUILTIN_PCOMEQQ): Ditto.
10974         (IX86_BUILTIN_PCOMNEQ): Ditto.
10975         (IX86_BUILTIN_PCOMLTQ): Ditto.
10976         (IX86_BUILTIN_PCOMLEQ): Ditto.
10977         (IX86_BUILTIN_PCOMGTQ): Ditto.
10978         (IX86_BUILTIN_PCOMGEQ): Ditto.
10979         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
10980         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
10981         (enum multi_arg_type): New enum for describing the various SSE5
10982         intrinsic argument types.
10983         (bdesc_multi_arg): New table for SSE5 intrinsics.
10984         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
10985         (ix86_expand_multi_arg_builtin): New function for creating SSE5
10986         intrinsics.
10987         (ix86_expand_builtin): Add SSE5 intrinsic support.
10988         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
10989         operand instructions.
10990         (ix86_expand_sse5_multiple_memory): New function to split the
10991         second memory reference from SSE5 instructions.
10992         (type_has_variadic_args_p): Delete in favor of stdarg_p.
10993         (ix86_return_pops_args): Use stdarg_p to determine if the function
10994         has variable arguments.
10995         (ix86_setup_incoming_varargs): Ditto.
10996         (x86_this_parameter): Ditto.
10997
10998         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
10999         declaration.
11000         (ix86_expand_sse5_pack): Ditto.
11001         (ix86_sse5_valid_op_p): Ditto.
11002         (ix86_expand_sse5_multiple_memory): Ditto.
11003
11004         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
11005         constant for SSE5 support.
11006         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
11007         (UNSPEC_SSE5_TRUEFALSE): Ditto.
11008         (UNSPEC_SSE5_PERMUTE): Ditto.
11009         (UNSPEC_SSE5_ASHIFT): Ditto.
11010         (UNSPEC_SSE5_LSHIFT): Ditto.
11011         (UNSPEC_FRCZ): Ditto.
11012         (UNSPEC_CVTPH2PS): Ditto.
11013         (UNSPEC_CVTPS2PH): Ditto.
11014         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
11015         (PCOM_TRUE): Ditto.
11016         (COM_FALSE_S): Ditto.
11017         (COM_FALSE_P): Ditto.
11018         (COM_TRUE_S): Ditto.
11019         (COM_TRUE_P): Ditto.
11020         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
11021         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
11022         types.
11023         (memory attribute): Ditto.
11024         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
11025         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
11026         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
11027         (floor<mode>2): Ditto.
11028         (ceil<mode>2): Ditto.
11029         (btrunc<mode>2): Ditto.
11030         (nearbyintdf2): Ditto.
11031         (nearbyintsf2): Ditto.
11032         (sse_setccsf): Disable if SSE5.
11033         (sse_setccdf): Ditto.
11034         (sse5_setcc<mode>): New support for SSE5 conditional move.
11035         (sse5_pcmov_<mode>): Ditto.
11036
11037         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
11038         (SSEMODEF4): Ditto.
11039         (SSEMODEF2P): Ditto.
11040         (ssemodesuffixf4): New mode attribute for SSE5.
11041         (ssemodesuffixf2s): Ditto.
11042         (ssemodesuffixf2c): Ditto.
11043         (sserotatemax): Ditto.
11044         (ssescalarmode): Ditto.
11045         (sse_maskcmpv4sf3): Disable if SSE5.
11046         (sse_maskcmpv2df3): Ditto.
11047         (sse_vmmaskcmpv4sf3): Ditto.
11048         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
11049         (sse5_vmfmadd<mode>4): Ditto.
11050         (sse5_fmsub<mode>4): Ditto.
11051         (sse5_vmfmsub<mode>4): Ditto.
11052         (sse5_fnmadd<mode>4): Ditto.
11053         (sse5_vmfnmadd<mode>4): Ditto.
11054         (sse5_fnmsub<mode>4): Ditto.
11055         (sse5_vmfnmsub<mode>4): Ditto.
11056         (sse5i_fmadd<mode>4): Ditto.
11057         (sse5i_fmsub<mode>4): Ditto.
11058         (sse5i_fnmadd<mode>4): Ditto.
11059         (sse5i_fnmsub<mode>4): Ditto.
11060         (sse5i_vmfmadd<mode>4): Ditto.
11061         (sse5i_vmfmsub<mode>4): Ditto.
11062         (sse5i_vmfnmadd<mode>4): Ditto.
11063         (sse5i_vmfnmsub<mode>4): Ditto.
11064         (mulv16qi3): Add SSE5 support.
11065         (mulv4si3): Ditto.
11066         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
11067         (sse2_mulv4si3): Disable if SSE5.
11068         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
11069         (sse4_1_roundps): Ditto.
11070         (sse4_1_roundsd): Ditto.
11071         (sse4_1_roundss): Ditto.
11072         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
11073         be generated.
11074         (sse_maskcmpsf3): Ditto.
11075         (sse_vmmaskcmpv4sf3): Ditto.
11076         (sse2_maskcmpv2df3): Ditto.
11077         (sse2_maskcmpdf3): Ditto.
11078         (sse2_vmmaskcmpv2df3): Ditto.
11079         (sse2_eq<mode>3): Ditto.
11080         (sse2_gt<mode>3): Ditto.
11081         (sse5_pcmov_<mode>): Add SSE5 support.
11082         (vec_unpacku_hi_v16qi): Ditto.
11083         (vec_unpacks_hi_v16qi): Ditto.
11084         (vec_unpacku_lo_v16qi): Ditto.
11085         (vec_unpacks_lo_v16qi): Ditto.
11086         (vec_unpacku_hi_v8hi): Ditto.
11087         (vec_unpacks_hi_v8hi): Ditto.
11088         (vec_unpacku_lo_v8hi): Ditto.
11089         (vec_unpacks_lo_v8hi): Ditto.
11090         (vec_unpacku_hi_v4si): Ditto.
11091         (vec_unpacks_hi_v4si): Ditto.
11092         (vec_unpacku_lo_v4si): Ditto.
11093         (vec_unpacks_lo_v4si): Ditto.
11094         (sse5_pmacsww): New SSE5 intrinsic insn.
11095         (sse5_pmacssww): Ditto.
11096         (sse5_pmacsdd): Ditto.
11097         (sse5_pmacssdd): Ditto.
11098         (sse5_pmacssdql): Ditto.
11099         (sse5_pmacssdqh): Ditto.
11100         (sse5_pmacsdqh): Ditto.
11101         (sse5_pmacsswd): Ditto.
11102         (sse5_pmacswd): Ditto.
11103         (sse5_pmadcsswd): Ditto.
11104         (sse5_pmadcswd): Ditto.
11105         (sse5_pcmov_<move>): Conditional move support on SSE5.
11106         (sse5_phaddbw): New SSE5 intrinsic insn.
11107         (sse5_phaddbd): Ditto.
11108         (sse5_phaddbq): Ditto.
11109         (sse5_phaddwd): Ditto.
11110         (sse5_phaddwq): Ditto.
11111         (sse5_phadddq): Ditto.
11112         (sse5_phaddubw): Ditto.
11113         (sse5_phaddubd): Ditto.
11114         (sse5_phaddubq): Ditto.
11115         (sse5_phadduwd): Ditto.
11116         (sse5_phadduwq): Ditto.
11117         (sse5_phaddudq): Ditto.
11118         (sse5_phsubbw): Ditto.
11119         (sse5_phsubwd): Ditto.
11120         (sse5_phsubdq): Ditto.
11121         (sse5_pperm): Ditto.
11122         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
11123         (sse5_pperm_zero_v16qi_v8hi): Ditto.
11124         (sse5_pperm_sign_v8hi_v4si): Ditto.
11125         (sse5_pperm_zero_v8hi_v4si): Ditto.
11126         (sse5_pperm_sign_v4si_v2di): Ditto.
11127         (sse5_pperm_sign_v4si_v2di): Ditto.
11128         (sse5_pperm_pack_v2di_v4si): Ditto.
11129         (sse5_pperm_pack_v4si_v8hi): Ditto.
11130         (sse5_pperm_pack_v8hi_v16qi): Ditto.
11131         (sse5_perm<mode>): New SSE5 intrinsic insn.
11132         (rotl<mode>3): Ditto.
11133         (sse5_rotl<mode>3): Ditto.
11134         (sse5_ashl<mode>3): Ditto.
11135         (sse5_lshl<mode>3): Ditto.
11136         (sse5_frcz<mode>2): Ditto.
11137         (sse5s_frcz<mode>2): Ditto.
11138         (sse5_cvtph2ps): Ditto.
11139         (sse5_cvtps2ph): Ditto.
11140         (sse5_vmmaskcmp<mode>3): Ditto.
11141         (sse5_com_tf<mode>3): Ditto.
11142         (sse5_maskcmp<mode>3): Ditto.
11143         (sse5_maskcmp_uns<mode>3): Ditto.
11144         (sse5_maskcmp_uns2<mode>3): Ditto.
11145         (sse5_pcom_tf<mode>3): Ditto.
11146
11147         * config/i386/predicates.md (sse5_comparison_float_operator):
11148         New predicate to match the comparison operators supported by
11149         the SSE5 com instruction.
11150         (ix86_comparison_int_operator): New predicate to match just the
11151         signed int comparisons.
11152         (ix86_comparison_uns_operator): New predicate to match just the
11153         unsigned int comparisons.
11154
11155         * doc/invoke.texi (-msse5): Add documentation.
11156         (-mfused-madd): Ditto.
11157
11158         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
11159
11160         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
11161         mmintrin-common.h.
11162         (x86_64-*-*): Ditto.
11163
11164         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
11165
11166         * config/i386/bmmintrin.h: New file, provide common x86 compiler
11167         intrinisics for SSE5.
11168
11169         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
11170         mmintrin-common.h.
11171
11172         * config/i386/mmintrin-common.h: New file, to contain common
11173         instructions between SSE4.1 and SSE5.
11174
11175         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
11176         FOREACH_FUNCTION_ARGS to iterate over the argument list.
11177         (gen_regparm_prefix): Ditto.
11178
11179         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
11180         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
11181         prototype_p to determine if a function is prototyped.
11182
11183 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
11184
11185         * c-common.c (c_common_reswords) add the alignof keyword,
11186         with same RID as __alignof and __alignof__
11187
11188 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
11189
11190         * hooks.h (hook_bool_const_int_const_int_true): Declare.
11191         * hooks.c (hook_bool_const_int_const_int_true): New function.
11192         * target.h (struct gcc_target): Add can_eliminate field.
11193         * target-def.h (TARGET_CAN_ELIMINATE): Define.
11194         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
11195         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
11196         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
11197         (elim_table): Revise comment.
11198         * system.h (CAN_ELIMINATE): Poison.
11199         * defaults.h (CAN_ELIMINATE): Remove.
11200         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
11201
11202         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
11203         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
11204         Define macro.
11205         (alpha_vms_can_eliminate): Declare as static, change return type to
11206         bool.
11207         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
11208
11209         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
11210         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
11211         (arm_can_eliminate): New function.
11212
11213         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
11214         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
11215         (avr_can_eliminate): Declare as static.
11216         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
11217
11218         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
11219         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
11220         (bfin_can_eliminate): New function.
11221
11222         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
11223         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
11224         (crx_can_eliminate): New function.
11225
11226         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
11227         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
11228         (fr30_can_eliminate): New function.
11229
11230         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
11231         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
11232         (frv_can_eliminate): New function.
11233
11234         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
11235         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
11236         (h8300_can_eliminate): New function.
11237
11238         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
11239         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
11240         (i386_can_eliminate): Declare as static, change return type to bool.
11241         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
11242
11243         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
11244         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
11245         (ia64_can_eliminate): New function.
11246
11247         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
11248         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
11249         (iq2000_can_eliminate): New function.
11250
11251         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
11252         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
11253         (m32r_can_eliminate): New function.
11254
11255         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
11256         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
11257         (m68hc11_can_eliminate): New function.
11258
11259         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
11260         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
11261         (m68k_can_eliminate): New function.
11262
11263         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
11264         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
11265         (mep_can_eliminate): New function.
11266
11267         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
11268         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
11269         (mips_can_eliminate): New function.
11270
11271         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
11272         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
11273         (rs6000_can_eliminate): New function.
11274
11275         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
11276         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
11277         (s390_can_eliminate): Declare as static.
11278         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
11279
11280         * config/score/score.h (CAN_ELIMINATE): Remove macro.
11281         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
11282         (score_can_eliminate): New function.
11283
11284         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
11285         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
11286         (sparc_can_eliminate): Declare as static.
11287         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
11288
11289         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
11290         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
11291         (xstormy16_can_eliminate): New function.
11292
11293         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
11294         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
11295         (v850_can_eliminate): New function.
11296
11297 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
11298
11299         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
11300         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
11301         (*movdfcc_ext[1234]): Disable for IEEE mode.
11302
11303 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
11304
11305         * gimplify.c (prepare_gimple_addressable): New static function.
11306         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
11307         it addressable.
11308         (gimplify_addr_expr): Invoke it similarly on the operand instead of
11309         manually fiddling with it.
11310
11311 2009-08-25  Michael Matz  <matz@suse.de>
11312
11313         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
11314         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
11315         full expression.
11316         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
11317         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
11318         (do_jump): Split out code for simple binary comparisons into ...
11319         (do_jump_1): ... this, taking the individual operands and code.
11320         Change callers to helper function above accordingly.
11321         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
11322         comparisons.
11323
11324 2009-08-25  Michael Matz  <matz@suse.de>
11325
11326         * expr.h (struct separate_ops, sepops): New type for passing
11327         around an exploded simple expression.
11328         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
11329         Use this structure instead of expression tree.
11330         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
11331         expression, only its type.
11332         (expand_vec_cond_expr): Take type and individual operands instead
11333         of full expression.
11334         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
11335         expand_vec_shift_expr): Change prototype accordingly.
11336         * tree-vect-stmts.c (vectorizable_condition): Change call of
11337         expand_vec_cond_expr_p to pass only type.
11338         * expr.c (do_store_flags): Change prototype and implementation
11339         to take an exploded expression.
11340         (expand_expr_real_1): New local ops initialized with details
11341         of the full expression.  Use it instead of full
11342         expression in calls to do_store_flags, expand_vec_cond_expr,
11343         expand_widen_pattern_expr and expand_vec_shift_expr.
11344
11345 2009-08-25  Michael Matz  <matz@suse.de>
11346
11347         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
11348         treeop2 initialized with first three operands of the full expression.
11349         Substitute all TREE_OPERAND (exp, [012]) calls with them.
11350
11351 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
11352
11353         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
11354         (__gthread_objc_condition_allocate): Mark arguments as unused.
11355         (__gthread_objc_condition_deallocate): Likewise.
11356         (__gthread_objc_condition_wait): Likewise.
11357         (__gthread_objc_condition_broadcast): Likewise.
11358         (__gthread_objc_condition_signal): Likewise.
11359         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
11360         (__gthread_objc_thread_id): Likewise.
11361
11362 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
11363
11364         PR middle-end/41149
11365         * tree-pretty-print.c (print_call_name): Print the correct call name
11366         for procedure pointer components.
11367
11368 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
11369
11370         * config/ia64/ia64.c (ia64_promote_function_mode): Call
11371         default_promote_function_mode when not VMS.
11372
11373 2009-08-24  Olivier Hainque  <hainque@adacore.com>
11374
11375         * convert.c (convert_to_integer): Don't assume an input pointer is
11376         POINTER_SIZE wide.  Fetch from the type instead.
11377
11378 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11379
11380         * configure.ac (AC_PREREQ): Bump to 2.64.
11381
11382 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
11383
11384         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
11385         (process_command): Don't search standard_exec_prefix_1 and
11386         standard_exec_prefix_2.
11387
11388 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11389
11390         * config/arm/arm.c (output_return_instruction): Handle for
11391         unified syntax.
11392
11393 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11394
11395         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
11396
11397 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11398
11399         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
11400         (*arm_movdf_vfp): Likewise.
11401
11402 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11403
11404         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
11405         (vashr<mode>3): Rename from ashr<mode>3.
11406         (vlshr<mode>3): Rename from lshr<mode>3.
11407
11408 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
11409
11410         PR/40786
11411         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
11412         (check_format_info_main): Use scalar_identify_flag.
11413         (check_format_types): Check for scalar size identity if
11414         scalar_identify_flag is set.
11415         (printf_length_specs): Extend by new field.
11416         (asm_fprintf_length_specs): Likewise.
11417         (gcc_diag_length_specs): Likewise.
11418         (scanf_length_specs): Likewise.
11419         (strfmon_length_specs): Likewise.
11420         (gcc_gfc_length_specs): Likewise.
11421         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
11422         (ms_printf_flag_specs): Likewise.
11423         * c-format.h (format_length_info): Add new member scalar_identity_flag.
11424
11425 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
11426
11427         PR target/40718
11428         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
11429         (*call_value_pop_1): Ditto.
11430         (*sibcall_pop_1): New insn pattern.
11431         (*sibcall_value_pop_1): Ditto.
11432
11433 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
11434
11435         PR target/41081
11436         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
11437         ashrsi3_64): New.
11438
11439 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
11440
11441         PR target/41081
11442         * fwprop.c (try_fwprop_subst): Allow multiple sets.
11443         (get_reg_use_in): New function.
11444         (forward_propagate_subreg): Propagate through subreg of zero_extend
11445         or sign_extend.
11446
11447 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
11448
11449         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
11450         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
11451
11452 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11453
11454         * configure.ac: Remove --with-datarootdir, --with-docdir,
11455         --with-htmldir switches.  No need to call AC_SUBST for
11456         datarootdir, docdir, htmldir any more.
11457         * configure: Regenerate.
11458         * doc/install.texi (Configuration): Document --datarootdir,
11459         --docdir, --htmldir, --pdfdir; update documentation for
11460         --infodir, --mandir.
11461         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
11462         M4 to 1.4.6.
11463
11464         * aclocal.m4: Regenerate.
11465         * config.in: Regenerate.
11466         * configure: Regenerate.
11467
11468 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
11469             Olivier Hainque  <hainque@adacore.com>
11470
11471         * config/ia64/ia64.c: Include libfuncs.h.
11472         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
11473         (ia64_expand_call): Use reg 25 on VMS.
11474         (ia64_initialize_trampoline): Fix for VMS ABI.
11475         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
11476         (ia64_function_arg): Initialize reg 25 on VMS.
11477         Fix OpenVMS ABI issues for varargs.
11478         For OpenVMS, emit the Argument Information register set in the
11479         incoming/sibcall case as well.
11480         (ia64_arg_type): New function.
11481         (ia64_function_arg_advance): Keep track of cum->words.
11482         Fix OpenVMS ABI issues for varargs.
11483         (ia64_function_value): On VMS, promote mode of non-aggregate types.
11484         (ia64_override_options): Set flag_no_common on VMS.
11485         (ia64_init_builtins): Disable FWRITE builtin.
11486         (ia64_asm_output_external): Call DO_CRTL_NAMES.
11487         (ia64_vms_init_libfuncs): Add decc$ routines.
11488         (ia64_vms_valid_pointer_mode): New function.
11489         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
11490         (ia64_promote_function_mode): New function
11491         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
11492         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
11493         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
11494         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
11495         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
11496         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
11497         Suppress trailing '#' if VALUE is numeric.
11498         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
11499         ia64_promote_function_mode.
11500         (TARGET_VALID_POINTER_MODE): Define.
11501
11502 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
11503
11504         PR target/40671
11505         * config/rs6000/rs6000.c (rs6000_override_options): Use
11506         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
11507
11508         PR target/41145
11509         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
11510         reporting of vector + decimal/boolean/complex error.
11511
11512 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
11513
11514         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
11515         __vector double TYPE_DECL.
11516
11517 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
11518
11519         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
11520         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
11521         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
11522         to pointer to enum machine_mode.  Update all callers as needed.
11523
11524 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
11525
11526         * config/alpha/alpha.md (exception_receiver): Emit alternative
11527         GP load sequence if flag_reorder_blocks_and_partition is set.
11528         (*exception_receiver_2): Also enable when
11529         flag_reorder_blocks_and_partition is set.
11530
11531 2009-08-20  Matt Rice  <ratmice@gmail.com>
11532             Diego Novillo  <dnovillo@google.com>
11533
11534         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
11535         tree-ssa-sccvn.h.
11536
11537 2009-08-20  Richard Guenther  <rguenther@suse.de>
11538
11539         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
11540         * c-tree.h (c_dup_lang_specific_decl): Remove.
11541         (struct lang_decl, struct lang_type): Move definitions ...
11542         * c-lang.h: ... here.  New file.
11543         * c-decl.c: Include c-lang.h.
11544         (c_dup_lang_specific_decl): Remove.
11545         * c-typeck.c: Include c-lang.h.
11546         * Makefile.in (c-decl.o): Add c-lang.h dependency.
11547         (c-typeck.o): Likewise.
11548         * c-config-lang.in (gtfiles): Add c-lang.h.
11549         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
11550         like c-tree.h.
11551
11552 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
11553
11554         * config/alpha/alpha.c (alpha_end_function): Do not clear
11555         crtl->emit structure and free insn locators if cfun->is_thunk is true,
11556         this is now handled in generic code.
11557
11558 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
11559
11560         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
11561         (s390_z10_fix_long_loop_prediction): New function.
11562         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
11563         (s390_reorg): Walk over the INSNs and invoke
11564         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
11565
11566 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
11567
11568         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
11569         "*brx_64bit", "*brx_31bit"): New patterns.
11570         * config/s390/s390.c ('E'): New output modifier.
11571
11572 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11573             Richard Earnshaw  <richard.earnshaw@arm.com>
11574
11575         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
11576         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
11577
11578 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11579
11580         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
11581         patterns.
11582         * pa.c (emit_move_sequence): Check if address of operand1 is valid
11583         for mode mode of operand0 when doing secondary reload for SAR.
11584
11585 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
11586
11587         PR middle-end/41123
11588         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
11589         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
11590
11591 2009-08-19  Jason Merrill  <jason@redhat.com>
11592
11593         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
11594         supported template depth in C++0x.
11595
11596 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
11597
11598         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
11599         free_after_compilation.
11600         * config/score/score7.c (score7_output_mi_thunk): Likewise.
11601         * config/score/score3.c (score3_output_mi_thunk): Likewise.
11602         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
11603         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
11604         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
11605         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
11606         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
11607
11608 2009-08-19  Ian Lance Taylor  <iant@google.com>
11609
11610         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
11611         of (plus (mult (neg B) C) A).
11612
11613 2009-08-18  Michael Matz  <matz@suse.de>
11614
11615         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
11616         instead of comparing TYPE_MAIN_VARIANT for equality.
11617         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
11618         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
11619         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
11620         * gimplify.c (goa_lhs_expr_p): Ditto and use
11621         STRIP_USELESS_TYPE_CONVERSION.
11622
11623 2009-08-18  Michael Matz  <matz@suse.de>
11624
11625         * tree-ssa-structalias.c (create_variable_info_for): Also mark
11626         first field in a struct.
11627         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
11628
11629 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
11630
11631         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
11632         locators before emit_insn is called.  Remove assert that
11633         cfun->is_thunk.
11634         (alpha_end_function): Clear crtl->emit structure and free insn
11635         locators if cfun->is_thunk is true.
11636
11637 2009-08-18  Jason Merrill  <jason@redhat.com>
11638
11639         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
11640         type if available.
11641         * configure.ac: Test for it.
11642         * configure, config.in: Regenerate.
11643         * doc/install.texi: Document --enable-gnu-unique-object.
11644
11645 2009-08-18  Richard Guenther  <rguenther@suse.de>
11646
11647         PR middle-end/41094
11648         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
11649         pow(x,y*z) only if x is nonnegative.
11650
11651 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
11652
11653         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
11654         on jumps.
11655
11656         PR target/40971
11657         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
11658         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
11659
11660 2009-08-17  DJ Delorie  <dj@redhat.com>
11661
11662         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
11663         * config/m32c/prologue.md (epilogue_freit): New.
11664         (fset_b): New.
11665         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
11666         (bank_switch_p): Likewise.
11667         (fast_interrupt_p): Likewise.
11668         (interrupt_p): Likewise.
11669         (m32c_conditional_register_usage): Round memregs size up.
11670         (need_to_save): We only need to save $a0 when we use ENTER.
11671         (interrupt_p): Check for fast_interrupt too.
11672         (bank_switch_p): New.
11673         (fast_interrupt_p): New.
11674         (m32c_attribute_table): Add bank_switch and fast_interrupt.
11675         (m32c_emit_prolog): Support bank switching and fast interrupts.
11676         * doc/extend.texi (Function Attributes): Add bank_switch and
11677         fast_interrupt.
11678
11679 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
11680
11681         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
11682         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
11683
11684 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
11685
11686         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
11687         (menu): Add IA-64/VMS Options.
11688         (IA-64/VMS Options): Likewise.
11689
11690 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
11691
11692         PR target/38599
11693         * config/mips/mips.md (*lwxs): Use :P for pointer values.
11694
11695 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
11696
11697         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
11698         (mips_pop_asm_switch): Likewise.
11699         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
11700         with...
11701         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
11702         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
11703         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
11704         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
11705         instead of set_noreorder.
11706         (mips_output_function_prologue): Use the new functions.
11707         (mips_output_function_epilogue): Likewise.
11708         (mips_need_noat_wrapper_p): New function, split out from...
11709         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
11710         Use mips_push_asm_switch and mips_pop_asm_switch.
11711         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
11712         and mips_pop_asm_switch.
11713         (ASM_OUTPUT_REG_POP): Likewise.
11714         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
11715         Use mips_pop_asm_switch.
11716         (mips_asm_switch): New structure.
11717         (set_noreorder, set_nomacro): Replace with...
11718         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
11719         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
11720         instead of set_nomacro.
11721         (fix_truncsfsi2_macro): Likewise.
11722         (cprestore): Likewise.
11723         (hazard): Use mips_noreorder instead of set_noreorder.
11724         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
11725
11726 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
11727
11728         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
11729         from prev_active_insn.
11730
11731 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
11732
11733         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
11734         * config/avr/avr.c (avr_override_options): Initialize
11735         avr_current_arch variable.
11736         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
11737         __AVR_HAVE_16BIT_SP__ according to the device type.
11738         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
11739         TARGET_TINY_STACK.
11740         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
11741         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
11742
11743 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
11744
11745         PR debug/37801
11746         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
11747         generating inlined subroutine die only. We shouldn't be
11748         called for anything else.
11749         (gen_block_die): Don't generate inline subroutine debug info for
11750         abstract blocks.
11751
11752 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
11753
11754         * graphite-poly.c (print_pbb): Print PBB index.
11755
11756 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
11757
11758         PR middle-end/40981
11759         * graphite-interchange.c (ppl_max_for_le): Moved...
11760         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
11761         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
11762         ppl_Pointset_Powerset_C_Polyhedron_maximize.
11763         * graphite-ppl.h (ppl_max_for_le): Declared.
11764
11765 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
11766
11767         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
11768         supported on all platforms.
11769         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
11770         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
11771         * c-pragma.c: Likewise.
11772         * target-def.h (TARGET_INITIALIZER): Remove
11773         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
11774         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
11775
11776 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
11777
11778         * config/ia64/fde-vms.c: New file.
11779         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
11780         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
11781         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
11782         (uw_frame_state_for): Only register a personality routine if it is
11783         known to be compatible with our expectations.
11784         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
11785         Declare unw_table_entry stack variable and
11786         mod all calls to _Unwind_FindTableEntry to add arg.
11787         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
11788         (_Unwind_FindTableEntry): Add arg to prototype.
11789
11790 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
11791
11792         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
11793         field 'signal_pfs_loc'.
11794         (uw_frame_state_for): Remove duplicate code dealing with leaf
11795         procedures without unwind info.
11796         If in the frame after unwinding through a signal handler, restore
11797         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
11798         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
11799         'pfs_loc' to the AR.PFS location in the signal context; instead
11800         set 'signal_pfs_loc'.
11801         Manually generate the unwind info for the AR.PFS register.
11802         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
11803         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
11804         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
11805         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
11806         instead set 'signal_pfs_loc'.
11807         Remove code preventing the AR.PFS register from being restored
11808         from the signal context.
11809
11810 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
11811             Tristan Gingold  <gingold@adacore.com>
11812
11813         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
11814         * config/ia64/t-vms: New file.
11815         * config/ia64/vms64.h: New file.
11816         * config/ia64/vms.h: New file.
11817         * config/ia64/vms-crtinit.asm: New file.
11818         * config/ia64/vms_symvec_libgcc_s.opt: New file.
11819         * config/ia64/vms-unwind.h: New file.
11820
11821 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
11822
11823         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
11824         TFmode compares.
11825
11826 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11827
11828         PR middle-end/30789
11829         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
11830         Move declaration...
11831         * real.h (do_mpc_arg2): ... here.
11832         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
11833         and RDIV_EXPR.
11834
11835 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
11836
11837         * final.c (add_debug_prefix_map): Don't use GC memory for
11838         old_prefix and new_prefix.
11839
11840 2009-08-14  Richard Guenther  <rguenther@suse.de>
11841
11842         * ipa-prop.c (compute_complex_pass_through): If we cannot
11843         compute a non-varying offset for IPA_JF_ANCESTOR punt.
11844
11845 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11846
11847         * c-lex.c (c_lex_with_flags): Increase size of local variable
11848         to avoid memory clobber.
11849
11850 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
11851
11852         PR target/40934
11853         * config/i386/i386.c (ix86_fp_comparison_strategy):
11854         Only enable/disable sahf at function granularity.
11855
11856 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
11857
11858         PR rtl-optimization/41064
11859         * reload1.c (reload_as_needed): Don't call extract_insn
11860         for known invalid replacements after calling
11861         validate_replace_rtx_group and verify_changes.
11862
11863 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
11864
11865         PR target/41019
11866         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
11867         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
11868         ix86_expand_fp_vcond.
11869         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
11870         Assert that operation is supported by ix86_expand_int_vcond.
11871         (vcondu<SSEMODE124C8:mode>): Ditto.
11872
11873 2009-08-13  DJ Delorie  <dj@redhat.com>
11874
11875         * config/i386/djgpp-stdint.h: New.
11876         * config.gcc (djgpp): Use it.
11877
11878 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
11879
11880         * config/sh/sh.c (sh_override_options): When flag_exceptions or
11881         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
11882
11883 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11884
11885         * tree-ssa-loop-prefetch.c
11886         (prune_ref_by_group_reuse): Enhance probabilistic analysis
11887         for long-stride pruning.
11888         (compute_miss_rate): New function to compute the probability
11889         that two memory references access different cache lines.
11890
11891 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
11892
11893         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
11894
11895 2009-08-13  Richard Guenther  <rguenther@suse.de>
11896
11897         PR middle-end/41047
11898         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
11899         use the constant pointer type.
11900         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
11901         of CV qualifiers on the target pointer type.
11902         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
11903         conversion check before restrict check.
11904
11905 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11906
11907         PR target/41029
11908         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
11909
11910 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11911
11912         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
11913
11914 2009-08-12  Richard Guenther  <rguenther@suse.de>
11915
11916         PR tree-optimization/41011
11917         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
11918         and reference constructing.
11919
11920 2009-08-12  Xinliang David Li  <davidxl@google.com>
11921
11922         PR tree-optimization/41012
11923         * tree-flow.h : New external interface.
11924         * gimple-low.c (check_call_arg): Change to public function.
11925         Remove argument mismatch check in lowering.
11926         * tree-inline.h (tree_can_inline_p): Interface change.
11927         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
11928         into this function.
11929         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
11930         Call change to tree_can_inline_p function.
11931         (cgraph_decide_inlining_incrementally): Ditto.
11932
11933 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
11934
11935         PR tree-optimization/41031
11936         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
11937         on the partition variable rather than promote_mode on the source
11938         type.  Assert that the partition variable's type has the same
11939         mode as the source value's.
11940
11941 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
11942
11943         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
11944         for for_return == 2.
11945         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
11946         comments.
11947         * calls.c (expand_call): Fix typo.
11948         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
11949         and PARM_DECL.
11950         * stmt.c (expand_value_return): Use promote_function_mode to copy out
11951         of pseudo.
11952         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
11953         * config/cris/cris.c (cris_promote_function_mode): Likewise.
11954         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
11955         * config/pa/pa.c (pa_promote_function_mode): Likewise.
11956
11957 2009-08-12  Andrew Haley  <aph@redhat.com>
11958
11959         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
11960
11961 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11962
11963         PR bootstrap/40103
11964         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
11965
11966 2009-08-12  Richard Guenther  <rguenther@suse.de>
11967
11968         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
11969         * gimplify.c (gimplify_modify_expr): Do not use
11970         lang_hooks.types_compatible_p.
11971         * tree-ssa.c (useless_type_conversion_p): For aggregates
11972         just return false if the canonical types differ.
11973
11974 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11975
11976         PR middle-end/40980
11977         * sese.c (convert_for_phi_arg): New.
11978         (add_guard_exit_phis): Use convert_for_phi_arg.
11979
11980 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11981
11982         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
11983         unknown subscript upper bounds.
11984
11985 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11986             Pranav Garg  <pranav.garg2107@gmail.com>
11987
11988         * graphite-interchange.c (gather_access_strides): Removed.
11989         (ppl_max_for_le): New.
11990         (build_linearized_memory_access): New.
11991         (memory_stride_in_loop): New.
11992         (pbb_interchange_profitable_p): Reimplemented.
11993         * graphite-ppl.h (ppl_new_id_map): New.
11994         (ppl_interchange): New.
11995
11996 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11997
11998         * graphite-interchange.c (compute_subscript): Removed.
11999         (compute_array_size_cstr): Removed.
12000         (compute_array_size_poly): Removed.
12001         (compute_array_size): Removed.
12002         (gather_access_strides_poly): Removed.
12003         (gather_access_strides): Empty.
12004
12005 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12006
12007         * graphite-dependences.c (dependence_polyhedron_1): Replace
12008         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
12009         (graphite_legal_transform_dr): Same.
12010         (graphite_carried_dependence_level_k): Same.
12011         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
12012         Initialize PDR_NB_SUBSCRIPTS.
12013         (print_pdr_access_layout): Replace pdr_nb_subscripts with
12014         PDR_NB_SUBSCRIPTS.
12015         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
12016         (PDR_NB_SUBSCRIPTS): New.
12017         (pdr_nb_subscripts): Removed.
12018         (pdr_dim): Simplified.
12019         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
12020         with PDR_NB_SUBSCRIPTS.
12021
12022 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12023
12024         * graphite-interchange.c (compute_array_size): Remove use of
12025         PDR_DATA_CONTAINER.
12026         * graphite-poly.c (new_poly_dr): Remove argument data_container.
12027         Do not initialize PDR_DATA_CONTAINER.
12028         (print_pdr): Do not print PDR_DATA_CONTAINER.
12029         * graphite-poly.h (struct poly_dr): Remove data_container field.
12030         (PDR_DATA_CONTAINER): Removed.
12031         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
12032         PDR_DATA_CONTAINER.
12033         (build_poly_dr): Same.
12034
12035 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
12036             Sebastian Pop  <sebastian.pop@amd.com>
12037
12038         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
12039         copy of the dependence polyhedron.  Free the temporary objects.
12040         (graphite_carried_dependence_level_k): Free unused objects before
12041         returning.
12042
12043 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12044
12045         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
12046         Early return without analyzing the data dependences if no
12047         transform has been done.  Call restore_scattering if the transform
12048         is not legal.
12049         (graphite-interchange.c): Same.
12050         * graphite-poly.c (print_scattering_function): Test for
12051         PBB_TRANSFORMED.
12052         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
12053         (apply_poly_transforms): Do not gcc_assert that
12054         the transform is legal.
12055         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
12056         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
12057         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
12058         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
12059         * graphite-poly.h (struct poly_scattering): New.
12060         (struct poly_bb): Add original, transformed, and saved fields.
12061         Remove transformed_scattering, original_scattering,
12062         nb_local_variables and nb_scattering_transform fields.
12063         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
12064         (poly_scattering_new): New.
12065         (poly_scattering_free): New.
12066         (poly_scattering_copy): New.
12067         (store_scattering_pbb): New.
12068         (store_scattering): New.
12069         (restore_scattering_pbb): New.
12070         (restore_scattering): New.
12071         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
12072         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
12073
12074 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12075
12076         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
12077         (print_scop): Same.
12078
12079 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12080
12081         * Makefile.in (graphite.o): Depends on PREDICT_H.
12082         * graphite.c: Include predict.h.
12083         (graphite_finalize): Call tree_estimate_probability.
12084         * predict.c (predict_loops): Do not call scev_initialize and
12085         scev_finalize.
12086         (tree_estimate_probability_bb): New.
12087         (tree_estimate_probability): Do not initialize loops: move that
12088         code to the driver.  Call tree_estimate_probability_bb.
12089         (tree_estimate_probability_driver): New.
12090         (pass_profile): Use tree_estimate_probability_driver.
12091         * predict.h (tree_estimate_probability): Declared.
12092
12093 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12094
12095         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
12096         * graphite-dependences.c (graphite_legal_transform): Add time to
12097         TV_GRAPHITE_DATA_DEPS.
12098         (dependency_between_pbbs_p): Same.
12099         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
12100
12101 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
12102
12103         PR rtl-optimization/41033
12104         * alias.c (nonoverlapping_component_refs_p): Punt when strict
12105         aliasing is disabled.
12106
12107 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
12108
12109         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
12110         si_mask_operand, and_load_operand, low_bitmask_operand,
12111         and_reg_operand, and_operand): New predicates.
12112         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
12113         * config/mips/mips.c (and_operands_ok): New function.
12114         * config/mips/mips-protos.h (and_operands_ok): Declare it.
12115         * config/mips/mips.md (move_type): Add ext_ins and logical.
12116         (type): Handle them.
12117         (and<mode>3): Use and_reg_operand as the second operand's predicate.
12118         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
12119         shift_shift.  Remove commutative constraint modifier.
12120         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
12121         shift_shift.
12122         (*clear_upper32_dext): Remove define_insn_and_split.
12123         (*clear_upper32): Turn this define_insn_and_split ...
12124         (splitter for ANDing register with 0xffff_ffff): .. into this.
12125
12126 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
12127
12128         * combine.c (try_widen_shift_mode): Factor out code to check if an
12129         integer constant is a low-order bitmask from here ...
12130         * rtlanal.c (low_bitmask_len): ... to here.
12131         * rtl.h (low_bitmask_len): Declare.
12132
12133 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
12134
12135         PR target/8603
12136         * config/alpha/alpha.md (addsi3): Remove expander.
12137         (addsi3): Rename from *addsi3_internal insn pattern.
12138         (subsi3): Remove expander.
12139         (subsi3): Rename from *subsi3_internal insn pattern.
12140
12141 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
12142
12143         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
12144         FWRITE_UNLOCKED.
12145
12146 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
12147             Eric Botcazou  <botcazou@adacore.com>
12148             Douglas B Rupp  <rupp@gnat.com>
12149
12150         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
12151         that records that fit in 64 bits are returned by immediate value,
12152         as required by OpenVMS Calling Standard.
12153         (function_value): Adjust for above modification.
12154         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
12155         virtual_incoming_args_rtx as base object, not next_arg.
12156         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
12157
12158 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12159
12160         * reload.c (find_reloads_subreg_address): Check the original
12161         req_equiv_mem address to detect the case where an address is
12162         not valid in the outer mode.
12163
12164 2009-08-11  Richard Guenther  <rguenther@suse.de>
12165
12166         PR bootstrap/40788
12167         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
12168
12169 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
12170
12171         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
12172         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
12173
12174 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
12175             Douglas B Rupp  <rupp@gnat.com>
12176
12177         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
12178         PT_STACK when frame_pointer_needed on OpenVMS.
12179         (alpha_pv_save_size, alpha_using_fp): Remove.
12180         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
12181         with proper processing for PT_NULL.
12182         (alpha_vms_initial_elimination_offset): New function. Support for
12183         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
12184         (alpha_sa_size): Force procedure type to PT_STACK when
12185         frame_pointer_needed on OpenVMS.
12186         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
12187         (alpha_using_fp): Likewise.
12188         (alpha_vms_can_eliminate): Add prototype.
12189         (alpha_vms_initial_elimination_offset): Likewise.
12190         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
12191         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
12192
12193 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
12194             Douglas B Rupp  <rupp@gnat.com>
12195
12196         * config/alpha/alpha.c (common_object_handler): New function.
12197         (vms_attribute_table): Declare a single attribute "common_object".
12198         (vms_output_aligned_decl_common): New global function.
12199         (SECTION_VMS_OVERLAY): Delete.
12200         (SECTION_VMS_GLOBAL): Likewise.
12201         (SECTION_VMS_INITIALIZE): Likewise.
12202         (vms_asm_named_section): Remove support for above flags.
12203         (vms_section_type_flags): Delete.
12204         (TARGET_SECTION_TYPE_FLAGS): Likewise.
12205         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
12206         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
12207         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
12208
12209 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
12210
12211         PR target/41015
12212         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
12213         (sub_ddmmss): Likewise.
12214
12215 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
12216
12217         PR bootstrap/41018
12218         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
12219         year.
12220
12221 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12222
12223         PR target/37053
12224         * reload1.c (reload_as_needed): Use cancel_changes to completely
12225         undo a failed replacement attempt.
12226
12227 2009-08-10  Richard Guenther  <rguenther@suse.de>
12228
12229         PR middle-end/41006
12230         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
12231         (useless_type_conversion_p): ... here.  Require pointer targets
12232         to be compatible.
12233
12234 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
12235
12236         PR c++/40866
12237         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
12238         loose the original type of the statement list.
12239
12240 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12241
12242         * config/alpha/alpha.c: Include libfuncs.h
12243         (avms_asm_output_extern): New function.
12244         (alpha_init_libfuncs): Init some decc libfuncs.
12245         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
12246         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
12247         (DO_CRTL_NAMES): Define.
12248         (LIB_SPEC): Remove.
12249         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
12250         (LONG_TYPE_SIZE): Define.
12251         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
12252         (SUBTARGET_SWITCHES): Define malloc64 switch.
12253         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
12254         (MASK_RETURN_ADDR): Define.
12255         doc/invoke.texi (mmalloc64): Document switch.
12256
12257 2009-08-09  Olivier Hainque  <hainque@adacore.com>
12258             Douglas B Rupp  <rupp@gnat.com>
12259
12260         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
12261         uses_condition_handler.
12262         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
12263         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
12264         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
12265         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
12266         (code_for_builtin): New insn codes for the new alpha_builtins.
12267         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
12268         (alpha_sa_size): Account for uses_condition_handler.
12269         (alpha_expand_prologue): Likewise.
12270         (alpha_start_function): Likewise.
12271         (alpha_expand_epilogue): Likewise.
12272         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
12273         establish/revert expanders.
12274         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
12275         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
12276         New expander, resorting to the alpha.c associated function.
12277         (builtin_revert_vms_condition_handler): Likewise.
12278         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
12279         __gcc_shell_handler, the static VMS condition handler used as
12280         an indirection wrapper to the current dynamically established
12281         handler.
12282         * config/alpha/vms-unwind.h: Complete rewrite.
12283         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
12284         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
12285
12286 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
12287             Douglas B Rupp  <rupp@gnat.com>
12288
12289         * config/alpha/alpha.c (alpha_links): Add 'target' field.
12290         (alpha_need_linkage): Handle aliases.  Return function symbol.
12291         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
12292         Use ultimate alias target for the linkage name.
12293         * config/alpha/alpha.md (movmemdi): Use the symbol returned
12294         by alpha_need_linkage for the function symbol.
12295         (setmemdi): Likewise.
12296
12297 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12298
12299         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
12300         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
12301         (ASM_WEAKEN_LABEL): Define.
12302         (CRT_CALL_STATIC_FUNCTION): Define.
12303         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
12304         (ENDFILE_SPEC): Define.
12305         (INIT_SECTION_ASM_OP): Define.
12306         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
12307         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
12308         crtend.o crtendS.o.
12309         (MULTILIB_OSDIRNAMES): Define.
12310         (shlib_version): Define.
12311         (SHLIB_EXT): Define.
12312         (SHLIB_OBJS): Define.
12313         (SHLIB_NAME): Define.
12314         (SHLIB_MULTILIB): Define.
12315         (SHLIB_INSTALL): Define.
12316         (SHLIB_SYMVEC): Define.
12317         (SHLIB_SYMVECX2): Define.
12318         (SHLIB_LINK): Define.
12319
12320 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12321
12322         * config/alpha/alpha.c (alpha_initialize_trampoline):
12323         Initialize VMS trampoline IAW ABI for bounded procedure calls.
12324         (alpha_start_function): Emit transfer address on nested functions
12325         for VMS trampoline call.
12326         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
12327         since no longer used.
12328         * config/alpha/vms-tramp.asm: Remove.
12329         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
12330         since now only data initialized at runtime.
12331
12332 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12333
12334         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
12335         (LINK_GCC_C_SEQUENCE_SPEC): Define.
12336         (MD_EXEC_PREFIX): Remove, no longer used.
12337         (MD_STARTFILE_PREFIX): Likewise.
12338         (INCLUDE_DEFAULTS): Likewise.
12339         * config/alpha/t-vms:
12340         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
12341
12342 2009-08-09  Richard Guenther  <rguenther@suse.de>
12343
12344         PR tree-optimization/41016
12345         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
12346         (operand_precision): Remove.
12347         (integral_operand_p): Likewise.
12348         (recognize_single_bit_test): Adjust.
12349
12350 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
12351
12352         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
12353         operation overflows.  Likewise non-cast unary arithmetic.
12354         If one arm of a conditional expression is always taken,
12355         inhibit evaluation warnings for the other arm.  Likewise inhibit
12356         evaluation warnings for the second && or || operand if the first
12357         operand is enough to determine the result.
12358         * c-typeck.c (build_conditional_expr): Apply the same inhibition
12359         rules here.
12360         (build_binary_op): Prevent duplicate evaluation warnings.
12361
12362 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
12363
12364         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
12365         and destination have different modes, Use promote_mode to
12366         determine the signedness of the conversion.  Assert that the
12367         promoted source mode matches the destination mode.  Don't pass
12368         the destination and destination mode to expand_expr if the source
12369         mode is different.  Simplify conversion logic.
12370
12371 2009-08-09  Ira Rosen  <irar@il.ibm.com>
12372
12373         PR tree-optimization/41008
12374         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
12375         from condition only in case it's a comparison. Adjust checks.
12376
12377 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
12378
12379         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
12380         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
12381         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
12382         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
12383         (dump_cand): Handle them.
12384         (struct iv_cand): New members COST_STEP and AINC_USE.
12385         (stmt_after_increment): Likewise.
12386         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
12387         callers changed.  Use gimple_uid comparison instead of scanning.
12388         (add_candidate_1): When looking for identical candidates, take
12389         AINC_USE into account.  Set it for new candidates.
12390         (force_expr_to_var_cost): Cast target_spill_cost to int.
12391         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
12392         All callers changed.  Check for availability of autoinc addressing
12393         modes, both in general for a given mode, and in the specific use case.
12394         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
12395         changed.
12396         (get_computation_cost): Likewise.
12397         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
12398         add_autoinc_candidates): New static functions.
12399         (add_candidate): Call add_autoinc_candidates for candidates based on
12400         a USE_ADDRESS use.
12401         (find_iv_candidates): Call set_autoinc_for_original_candidates.
12402         (determine_use_iv_cost_address): If we have an autoinc candidate at
12403         the matching use, verify autoinc is possible and subtract the cost
12404         of the candidate's step from the cost.
12405         (determine_iv_cost): Record the cost of the increment in the COST_STEP
12406         member of the candidate.
12407         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
12408         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
12409
12410 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12411
12412         * config.build (ia64-hp-*vms*): New target.
12413         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
12414         with ia64-hp-*vms*.
12415         * config.gcc (ia64-hp-*vms*): New target.
12416         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
12417         with ia64-hp-*vms*.
12418         * config.host (ia64-hp-*vms*): New target.
12419         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
12420         with ia64-hp-*vms*.
12421
12422 2009-08-08  Richard Guenther  <rguenther@suse.de>
12423
12424         PR tree-optimization/40991
12425         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
12426
12427 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
12428
12429         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
12430         mode check.  Do truncations in an integer mode.
12431         (force_to_mode): Handle subregs for all mode types.  Only do
12432         arithmetic simplifications on integer modes.
12433
12434 2009-08-07  Richard Guenther  <rguenther@suse.de>
12435
12436         PR tree-optimization/40999
12437         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
12438         (maybe_fold_reference): Lookup constant initializers.
12439         (fold_gimple_assign): Likewise.
12440
12441 2009-08-07  Richard Guenther  <rguenther@suse.de>
12442
12443         * tree-ssa.c (useless_type_conversion_p_1): Only for types
12444         that require structural equality defer to the langhook.
12445
12446 2009-08-07  Martin Jambor  <mjambor@suse.cz>
12447
12448         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
12449         comments.
12450         (struct ipa_pass_through_data): New type.
12451         (struct ipa_ancestor_jf_data): New type.
12452         (union jump_func_value): Removed field formal_id, added fields
12453         pass_through and ancestor.
12454         (struct ipa_param_call_note): Changed type of formal_id to int from
12455         unsigned.
12456         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
12457         operations jump functions and ancestor jump functions.
12458         (compute_complex_pass_through): New function.
12459         (compute_scalar_jump_functions): Call compute_complex_pass_through,
12460         reflect changes in the jump function strucutre.
12461         (update_jump_functions_after_inlining): Ignore complex pass-through
12462         and ancestor jump functions.
12463         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
12464         polynomial pass-through with operation jump functions.
12465
12466 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
12467
12468         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
12469         fde->dw_fde_begin as begin label instead of hot/cold label.
12470         Use LLSDAC label instead of LLSDA for second section lsda.
12471         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
12472         label instead of LLSDA if it is true.
12473         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
12474         callers.
12475         * except.c (add_call_site, dw2_size_of_call_site_table): Add
12476         SECTION argument.  Use it as index into crtl->eh.call_site_record
12477         array.
12478         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
12479         use it to determine how to print table entries instead of using
12480         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
12481         label instead of normal begin label as base.
12482         (sjlj_assign_call_site_values): Adjust add_call_site caller.
12483         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
12484         ensure no EH range spans between sections and that landing pads
12485         are always in the corresponding section.
12486         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
12487         for crtl->eh.call_site_record being an array rather than scalar.
12488         (output_one_function_exception_table): New function, copied
12489         from output_function_exception_table.  Adjust
12490         dw2_size_of_call_site_table, dw2_output_call_site_table
12491         callers.  For SECOND section use *C suffixed labels.
12492         (output_function_exception_table): Call
12493         output_one_function_exception_table and, when doing hot/cold
12494         partitioning, also another time for the second section.
12495         * opts.c: Include except.h.
12496         (decode_options): Allow -freorder-blocks-and-partition with
12497         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
12498         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
12499         * function.h (struct rtl_eh): Change call_site_record from
12500         scalar into array of 2 elements.
12501
12502 2009-08-07  Martin Jambor  <mjambor@suse.cz>
12503
12504         * ipa-prop.c (count_formal_params_1): New function.
12505         (ipa_get_vector_of_formal_parms): New function.
12506         (get_vector_of_formal_parm_types): New function.
12507         (ipa_modify_formal_parameters): New function.
12508         (ipa_modify_call_arguments): New function.
12509         (index_in_adjustments_multiple_times_p): New function.
12510         (ipa_combine_adjustments): New function.
12511         (ipa_dump_param_adjustments): New function.
12512         * ipa-prop.h (struct ipa_parm_adjustment): New type.
12513         (ipa_get_vector_of_formal_parms): Declare.
12514         (ipa_modify_formal_parameters): Declare.
12515         (ipa_modify_call_arguments): Declare.
12516         (ipa_combine_adjustments): Declare.
12517         (ipa_dump_param_adjustments): Declare.
12518         (build_ref_for_offset): Declare.
12519         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
12520         * tree-sra.c: Include ipa-prop.c.
12521         (build_ref_for_offset): Make public.
12522
12523 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
12524
12525         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
12526
12527 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
12528
12529         * gcc/doc/extend.texi (__builtin_extract_return_address)
12530         (__builtin_frob_return_address): Document.
12531
12532 2009-08-06  Paul Brook  <paul@codesourcery.com>
12533
12534         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
12535         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
12536         implementation on ARMv6-M.
12537
12538 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12539
12540         * doc/extend.texi (pcs): Document new attribute for ARM.
12541
12542 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12543
12544         * arm.c (pcs_attribute_args): Comment out unsupported attribute
12545         variants.
12546
12547 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12548
12549         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
12550         warning ().
12551
12552 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12553
12554         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
12555
12556 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12557
12558         Merge ARM/hard_vfp_branch to trunk.
12559
12560         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
12561
12562         * arm.c (libcall_eq): New function.
12563         (libcall_hash): New function.
12564         (add_libcall): New function.
12565         (arm_libcall_uses_aapcs_base): New function.
12566         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
12567         libcalls using the base PCS.
12568         (arm_init_cumulative_args): Likewise.
12569
12570         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
12571
12572         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
12573         Use base ABI for conversion libfuncs between HFmode and SFmode.
12574
12575         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
12576
12577         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
12578         V4SImode as representatives of all 64-bit and 128-bit vector
12579         types.  Allow vector types without vector modes.
12580         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
12581         without vector modes like BLKmode.
12582         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
12583         BLKmode.  Avoid unsupported vector modes or TImode moves for
12584         non-TARGET_NEON.
12585         (aapcs_vfp_allocate_return_reg): Likewise.
12586         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
12587         V8QImode if TARGET_NEON || TARGET_IWMMXT.
12588
12589         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
12590
12591         * config/arm/arm.c (arm_handle_pcs_attribute): New.
12592         (arm_get_pcs_model): Pass attribute arguments to
12593         arm_pcs_from_attribute.
12594         (arm_init_cumulative_args): Use base AAPCS for conversions from
12595         floating-point types to DImode.
12596         (arm_attribute_table): Add pcs attribute.
12597         (arm_handle_pcs_attribute): New.
12598         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
12599         conversions from floating-point types to DImode, also declare them
12600         to use base AAPCS and declare functions they call to use base
12601         AAPCS and their RTABI names.
12602
12603         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
12604
12605         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
12606         -mfloat-abi=hard not being supported for VFP.
12607
12608         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
12609
12610         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
12611         SYMBOL_REF to hard_libcall_value.
12612
12613         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
12614             Richard Earnshaw  <rearnsha@arm.com>
12615
12616         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
12617         has been put on the stack, all remaining co-processory arguments for
12618         that co-processor also go on the stack.
12619
12620         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
12621
12622         * config/arm/arm.c (arm_return_in_memory): Handle returning
12623         vectors of suitable size in registers also for AAPCS case.
12624
12625         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
12626
12627         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
12628
12629         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
12630
12631         ARM Hard-VFP calling convention
12632         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
12633         * target.h (gcc_target): Add libcall_value to table of call hooks.
12634         * targhooks.h (default_libcall_value): Default implementation.
12635         * targhooks.c (default_libcall_value): Likewise.
12636         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
12637         * optabs.c (expand_unop): Use it.
12638         * expr.h (hard_libcall_value): Pass the function RTX through.
12639         * calls.c (emit_library_call_value_1): Update call to
12640         hard_libcall_value.
12641         * explow.c (hard_libcall_value): Use new target hook.
12642         * config/arm/arm.c: Include cgraph.h
12643         (TARGET_FUNCTION_VALUE): Override default hook.
12644         (arm_pcs_default): New variable.
12645         (arm_override_options): Don't fault hard calling convention with VFP.
12646         Add support for AAPCS variants.
12647         (arm_function_value): Make static.  Handle AAPCS variants.
12648         (arm_libcall_value): New function.
12649         (arm_apply_result_size): Handle VFP registers in results.
12650         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
12651         conventions.
12652         (pcs_attribute_args): New variable.
12653         (arm_pcs_from_attribute): New function.
12654         (arm_get_pcs_model): New function.
12655         (aapcs_vfp_cum_init): New function.
12656         (aapcs_vfp_sub_candidate): New function.
12657         (aapcs_vfp_is_return_candidate): New function.
12658         (aapcs_vfp_is_call_candidate): New function.
12659         (aapcs_vfp_allocate): New function.
12660         (aapcs_vfp_allocate_return_reg): New function.
12661         (aapcs_vfp_advance): New function.
12662         (aapcs_cp_arg_layout): New variable.
12663         (aapcs_select_call_coproc): New function.
12664         (aapcs_select_return_coproc): New function.
12665         (aapcs_allocate_return_reg): New function.
12666         (aapcs_libcall_value): New function.
12667         (aapcs_layout_arg): New function.
12668         (arm_init_cumulative_args): Initialize AAPCS args data.
12669         (arm_function_arg): Handle AAPCS variants using new interface.
12670         (arm_arg_parital_bytes): Likewise.
12671         (arm_function_arg_advance): New function.
12672         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
12673         calling conventions.
12674         (arm_setup_incoming_varargs): Handle new AAPCS args data.
12675         * arm.h (NUM_VFP_ARG_REGS): Define.
12676         (LIBCALL_VALUE): Update.
12677         (FUNCTION_VALUE): Delete.
12678         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
12679         (arm_pcs): New enum.
12680         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
12681         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
12682         (FUNCTION_ARG_REGNO_P): Add VFP regs.
12683         * arm-protos.h (arm_function_arg_advance): Add.
12684         (aapcs_libcall_value): Add.
12685         (arm_function_value): Delete.
12686
12687 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
12688             H.J. Lu  <hongjiu.lu@intel.com>
12689
12690         PR target/40957
12691         * config/i386/i386.c (standard_sse_mode_p): Remove.
12692         (standard_sse_constant_p): Return 2 for integer mode
12693         vector_all_ones_operand when SSE2 is enabled.
12694         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
12695         (ix86_expand_vector_move): Do not check for negative values from
12696         standard_sse_constant_p.
12697
12698 2009-08-06  Richard Guenther  <rguenther@suse.de>
12699
12700         * tree-ssa.c (useless_type_conversion_p_1): Make function and
12701         array type comparisons frontend independent.
12702         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
12703         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
12704         out array reference lower bound and element size operands.
12705         (ao_ref_init_from_vn_reference): Properly compute the offset
12706         for ARRAY_RANGE_REF.
12707         (vn_reference_fold_indirect): Fill out array reference lower
12708         bound and element size operands.
12709         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
12710         a non gimple valued reference operand which can happen for
12711         array reference lower bound or element size.
12712         (create_component_ref_by_pieces_1): Properly generate the
12713         element size operand for array references.
12714
12715 2009-08-06  Richard Guenther  <rguenther@suse.de>
12716
12717         PR tree-optimization/40964
12718         * tree.c (iterative_hash_host_wide_int): Export.
12719         * tree.h (iterative_hash_host_wide_int): Declare.
12720         * tree-ssa-structalias.c (heapvar_map): New struct.
12721         (heapvar_map_eq): New function.
12722         (heapvar_map_hash): Likewise.
12723         (heapvar_lookup): Adjust.
12724         (heapvar_insert): Likewise.
12725         (make_constraint_from_heapvar): Allow multiple heap variables
12726         per decl at different offsets.
12727         (init_alias_heapvars): Adjust.
12728
12729 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
12730
12731         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
12732         * mips_output_sync_loop (mips_output_sync_loop): Only emit
12733         trailing sync if TARGET_SYNC_AFTER_SC.
12734
12735 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
12736
12737         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
12738         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
12739         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
12740         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
12741         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
12742         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
12743         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
12744         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
12745         test_and_set_12): Rewrite calls to mips_output_sync_loop.
12746         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
12747         the prototype declaration match the definition.
12748         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
12749         instructions explicitly.  Add barrier_before and operands
12750         parameters.
12751         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
12752         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
12753         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
12754         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
12755         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
12756         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
12757
12758 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
12759
12760         * tree-ssa-alias.c: Fix intervals to use [) syntax.
12761
12762 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
12763             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
12764
12765         PR target/40906
12766         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
12767         source operand.
12768
12769 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
12770
12771         PR rtl-optimization/40924
12772         * dse.c (canon_address): Before calling cselib_expand_value_rtx
12773         make sure canon_rtx (mem_address) isn't simpler than
12774         canon_rtx (expanded_mem_address).
12775
12776 2009-08-05  Li Feng  <nemokingdom@gmail.com>
12777
12778         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
12779         for each poly_bb_p.
12780         (build_scop_drs): Build alias set for each SCoP.
12781
12782 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
12783
12784         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
12785         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
12786         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
12787         (MIPS_ARCH_FLOAT_SPEC): Likewise.
12788         (BASE_DRIVER_SELF_SPECS): Likewise.
12789
12790 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
12791
12792         * tree-ssa-alias.c: Fix some comment typos.
12793
12794 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
12795
12796         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
12797         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
12798
12799 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
12800
12801         PR c/39902
12802         * simplify-rtx.c (simplify_binary_operation_1): Disable
12803         simplifications for decimal float operations.
12804
12805 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
12806
12807         PR middle-end/40943
12808         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
12809         operand of INDIRECT_REF.
12810
12811 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
12812
12813         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
12814         constants referencing TLS symbols.
12815
12816 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
12817
12818         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
12819         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
12820
12821 2009-08-03  Richard Guenther  <rguenther@suse.de>
12822
12823         * tree.c (make_vector_type): Build a main variant first,
12824         get the canonical one and then build the variant.
12825         * tree-ssa.c (useless_type_conversion_p_1): Handle
12826         fixed-point types.
12827         (useless_type_conversion_p): Conversions to pointers to
12828         incomplete record types are useless.
12829
12830 2009-08-03  Richard Guenther  <rguenther@suse.de>
12831
12832         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
12833         file will be created.
12834         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
12835         * toplev.c (compile_file): Adjust comment.
12836
12837 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
12838
12839         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
12840         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
12841         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12842         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
12843         (sh_promote_function_mode): Fix typo.
12844
12845 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
12846
12847         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
12848
12849 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12850
12851         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
12852         declaration arguments.
12853
12854 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
12855
12856         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
12857         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
12858         (ix86_split_ashl): Ditto.
12859         (ix86_expand_vector_init_one_nonzero): Ditto.
12860         (ix86_expand_vector_set): Ditto.
12861         (ix86_expand_reduc_v4sf): Ditto.
12862
12863 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
12864
12865         * explow.c (promote_function_mode): Remove assert.
12866         * config/sh/sh.c (sh_promote_function_mode): Declare.
12867
12868 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12869
12870         * config/pa/pa.c (pa_promote_function_mode): Declare.
12871         Change to static.  Fix promote_mode call.
12872
12873         * gthr-dce.h (CONST_CAST2): Define if not defined.
12874         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
12875
12876         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
12877
12878 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
12879
12880         * expr.c (store_constructor): Use promote_decl_mode.  Remove
12881         now write-only variable unsignedp.
12882         (expand_expr_real_1): Use promote_decl_mode.
12883         * expr.h (promote_function_mode, promote_decl_mode): New.
12884         (promote_mode): Remove last argument.
12885         * function.c (assign_temp): Drop last argument of promote_mode.
12886         (assign_parm_find_data_types): Use promote_function_mode.
12887         (assign_parm_setup_reg): Likewise.
12888         (expand_function_end): Use promote_function_mode.
12889         * calls.c (initialize_argument_information): Use promote_function_mode.
12890         (precompute_arguments): Use promote_mode instead of checking if
12891         only PROMOTE_FUNCTION_MODE is defined.
12892         (expand_call): When making sibcall decisions, use promote_function_mode.
12893         Below, remove an if for targetm.calls.promote_function_return and
12894         and use promote_function_mode.
12895         (emit_library_call_value_1): Use promote_function_mode, fix bug
12896         where promote_mode was passed FOR_CALL == 0 for a return value in an
12897         assertion.
12898         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
12899         * explow.c (promote_function_mode, promote_decl_mode): New.
12900         (promote_mode): Keep only the FOR_CALL == 0 case.
12901         * combine.c (setup_incoming_promotion): Remove test of
12902         promote_function_args.  Use promote_function_mode.
12903         * stmt.c (expand_value_return): Use promote_decl_mode.
12904         (expand_decl): Use promote_decl_mode.
12905
12906         * expr.c (store_constructor): Use promote_decl_mode.  Remove
12907         now write-only variable unsignedp.
12908         (expand_expr_real_1): Use promote_decl_mode.
12909         * expr.h (promote_function_mode, promote_decl_mode): New.
12910         (promote_mode): Remove last argument.
12911         * function.c (assign_temp): Drop last argument of promote_mode.
12912         (assign_parm_find_data_types): Use promote_function_mode.
12913         (assign_parm_setup_reg): Likewise.
12914         (expand_function_end): Use promote_function_mode.
12915         * calls.c (initialize_argument_information): Use promote_function_mode.
12916         (precompute_arguments): Use promote_mode instead of checking if
12917         only PROMOTE_FUNCTION_MODE is defined.
12918         (expand_call): When making sibcall decisions, use promote_function_mode.
12919         Below, remove an if for targetm.calls.promote_function_return and
12920         and use promote_function_mode.
12921         (emit_library_call_value_1): Use promote_function_mode, fix bug
12922         where promote_mode was passed FOR_CALL == 0 for a return value in an
12923         assertion.
12924         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
12925         * explow.c (promote_function_mode, promote_decl_mode): New.
12926         (promote_mode): Keep only the FOR_CALL == 0 case.
12927         * combine.c (setup_incoming_promotion): Remove test of
12928         promote_function_args.  Use promote_function_mode.
12929         * stmt.c (expand_value_return): Use promote_decl_mode.
12930         (expand_decl): Use promote_decl_mode.
12931
12932         * explow.c (promote_function_mode): Just call the target hook.
12933         * targhooks.c (default_promote_function_mode,
12934         default_promote_function_mode_always_promote): New.
12935         * targhooks.h (default_promote_function_mode,
12936         default_promote_function_mode_always_promote): Declare.
12937         * target.h (promote_function_args, promote_function_return): Remove.
12938         (promote_function_mode): New.
12939         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
12940         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12941         (TARGET_PROMOTE_FUNCTION_MODE): New.
12942         (TARGET_CALLS): Adjust.
12943         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
12944         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
12945
12946         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
12947         * config/s390/s390.c (s390_promote_function_mode): ... here,
12948         with pointer handling.
12949         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12950         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12951
12952         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
12953         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
12954         with pointer handling.
12955         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12956         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12957
12958         * config/sh/sh-protos.h (sh_promote_function_mode): New.
12959         * config/sh/sh.c (sh_promote_function_mode): New.
12960         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12961         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12962
12963         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
12964         * config/cris/cris.c (cris_promote_function_mode): ... here.
12965         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12966         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
12967
12968         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
12969         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
12970         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12971         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
12972
12973         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
12974         * config/arm/arm.c (arm_promote_function_mode): ... here, without
12975         complex type handling.
12976         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12977         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12978
12979         * config/pa/pa.c (pa_promote_function_mode): New.
12980         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12981         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12982
12983         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
12984         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12985         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
12986         * config/xtensa/xtensa.c: Likewise.
12987         * config/stormy16/stormy16.c: Likewise.
12988         * config/iq2000/iq2000.c: Likewise.
12989         * config/rs6000/rs6000.c: Likewise.
12990         * config/picochip/picochip.c: Likewise.
12991         * config/arc/arc.c: Likewise.
12992         * config/mcore/mcore.c: Likewise.
12993         * config/score/score.c: Likewise.
12994         * config/mips/mips.c: Likewise.
12995         * config/bfin/bfin.c: Likewise.
12996         * config/ia64/ia64.c: Likewise (disabled though).
12997
12998         * config/frv/frv.h: Remove pointless remark.
12999
13000         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
13001         TARGET_PROMOTE_FUNCTION_ARGS,
13002         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
13003         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
13004
13005 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
13006
13007         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
13008         -floop-parallelize-all.
13009         * toplev.c (process_options): Rename flag_graphite_force_parallel to
13010         flag_loop_parallelize_all.
13011         * tree-ssa-loop.c (gate_graphite_transforms): Same.
13012         * graphite.c (graphite_transform_loops): Same.
13013         * common.opt: Same.
13014         * graphite-poly.c (apply_poly_transforms): Same.
13015
13016 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
13017
13018         PR tree-optimization/40914
13019         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
13020         if set, then check the delta field of the PMF record.
13021         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
13022         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
13023         call is stored in the delta.
13024
13025 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
13026
13027         * config/mips/mips.md (*clear_upper32_dext): New pattern.
13028
13029 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
13030
13031         * config/i386/bsd.h (ASM_BYTE): New define.
13032         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
13033         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
13034         .byte.  Use fputs or putc instead of fprintf where appropriate.
13035         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
13036         fputs or putc instead of fprintf where appropriate.
13037         * config/i386/i386elf.h: Ditto.
13038         * config/i386/sysv4.h: Ditto.
13039
13040         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
13041         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
13042         (*tls_global_dynamic_64): Ditto.
13043
13044 2009-07-31  Christian Bruel  <christian.bruel@st.com>
13045
13046         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
13047
13048 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13049
13050         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
13051         Remove dead code for MINUS.
13052
13053 2009-07-31  Anthony Green  <green@moxielogic.com>
13054
13055         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
13056         $r12 in prologue.
13057         (moxie_expand_epilogue): Ditto for epilogue.
13058         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
13059         incoming arguments.
13060         (moxie_function_arg): Ditto.
13061         (moxie_pass_by_reference): Ditto.
13062         (moxie_arg_partial_bytes): Ditto.
13063         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
13064         (FUNCTION_ARG_ADVANCE) Ditto.
13065         (REG_PARM_STACK_SPACE) Ditto.
13066         (FUNCTION_ARG_REGNO_P) Dito.
13067
13068         * config.gcc: Add moxie linux config support.
13069         * gcc/config/moxie/uclinux.h: New file.
13070
13071 2009-07-31  DJ Delorie  <dj@redhat.com>
13072
13073         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
13074         (UNSPECV_SP_SWITCH_E): New.
13075         (sp_switch_1): Change to an unspec.
13076         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
13077         replace $r15.
13078         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
13079         reference the new stack's address
13080
13081 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13082
13083         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
13084         graphite-clast-to-gimple.o, graphite-dependences.o,
13085         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
13086         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
13087         (graphite-blocking.o,
13088         graphite-clast-to-gimple.o, graphite-dependences.o,
13089         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
13090         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
13091         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
13092         * cfgloop.h (struct loop): Add can_be_parallel field.
13093         * common.opt (fgraphite-identity): Moved up.
13094         (fgraphite-force-parallel): New flag.
13095         * graphite.c: Rewrite.
13096         * graphite.h: Rewrite.
13097         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
13098         after Graphite.
13099         * toplev.c (graphite_out_file): New file descriptor.
13100         (graphite_in_file): New.
13101         (process_options): flag_graphite_force_parallel cannot be used without
13102         Graphite.
13103         * tree-ssa-loop.c: Include toplev.h.
13104         (gate_graphite_transforms): Enable flag_graphite for
13105         flag_graphite_force_parallel.
13106
13107 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13108
13109         * ChangeLog.graphite: New.
13110         * graphite-blocking.c: New.
13111         * graphite-clast-to-gimple.c: New.
13112         * graphite-clast-to-gimple.h: New.
13113         * graphite-dependences.c: New.
13114         * graphite-dependences.h: New.
13115         * graphite-interchange.c: New.
13116         * graphite-poly.c: New.
13117         * graphite-poly.h: New.
13118         * graphite-ppl.c: New.
13119         * graphite-ppl.h: New.
13120         * graphite-scop-detection.c: New.
13121         * graphite-scop-detection.h: New.
13122         * graphite-sese-to-poly.c: New.
13123         * graphite-sese-to-poly.h: New.
13124         * sese.c: New.
13125         * sese.h: New.
13126
13127 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13128
13129         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
13130         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
13131
13132 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13133
13134         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
13135         (scev_is_linear_expression): Return false if the evolution is not
13136         affine multivariate.
13137
13138 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13139
13140         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
13141         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
13142
13143 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13144
13145         * tree-data-ref.c (debug_data_references): New.
13146         (debug_data_reference): New.
13147         * tree-data-ref.h (debug_data_references): Declared.
13148         (debug_data_reference): Declared.
13149
13150 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13151
13152         * tree-data-ref.c (stmt_simple_memref_p: Removed.
13153         * tree-data-ref.h (scop_p): Removed.
13154         (struct data_reference): Remove field scop.
13155         (DR_SCOP): Removed.
13156         (stmt_simple_memref_p): Removed.
13157
13158 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13159
13160         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
13161         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
13162         basic block empty.
13163
13164 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13165
13166         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
13167
13168 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13169
13170         * doc/invoke.texi (-fgraphite-identity): Documented.
13171
13172 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13173
13174         * tree-scalar-evolution.c: Fix comment.
13175         (instantiate_scev_1): Return unknow from scev instantiation if the
13176         result is not above instantiate_below.
13177
13178 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13179
13180         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
13181         static anymore.  Instantiate the symbols that may have been introduced
13182         by chrec_apply.
13183         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
13184         Declared.
13185
13186 2009-07-30  DJ Delorie  <dj@redhat.com>
13187
13188         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
13189         .vliw directive to VLIW sections.
13190
13191 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13192
13193         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
13194         New variables.
13195         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
13196         (AUTOHEADER): New variable.
13197         ($(srcdir)/cstamp-h.in): Use it.
13198
13199 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
13200             Pat Haugen  <pthaugen@us.ibm.com>
13201             Revital Eres <ERES@il.ibm.com>
13202
13203         * config/rs6000/vector.md (VEC_F): Add VSX support.
13204         (VEC_A): Ditto.
13205         (VEC_N): Ditto.
13206         (mov<mode>): Ditto.
13207         (vector_load_<mode>): Ditto.
13208         (vector_store_<mode>): Ditto.
13209         (vector GPR move split): Ditto.
13210         (vec_reload_and_plus_<mptrsize>): Ditto.
13211         (vec_reload_and_reg_<mptrsize>): Ditto.
13212         (add<mode>3): Ditto.
13213         (sub<mode>3): Ditto.
13214         (mul<mode>3): Ditto.
13215         (neg<mode>2): Ditto.
13216         (abs<mode>2): Ditto.
13217         (smin<mode>3): Ditto.
13218         (smax<mode>3): Ditto.
13219         (vector_eq<mode>): Ditto.
13220         (vector_gt<mode>): Ditto.
13221         (vector_ge<mode>): Ditto.
13222         (vector_gtu<mode>): Ditto.
13223         (vector_select_<mode>_uns): Ditto.
13224         (vector_eq_<mode>_p): Ditto.
13225         (vector_gt_<mode>_p): Ditto.
13226         (vector_ge_<mode>_p): Ditto.
13227         (vector_gtu_<mode>_p): Ditto.
13228         (cr6_test_for_zero): Ditto.
13229         (cr6_test_for_zero_reverse): Ditto.
13230         (cr6_test_for_lt): Ditto.
13231         (cr6_test_for_lt_reverse): Ditto.
13232         (xor<mode>3): Ditto.
13233         (ior<mode>3): Ditto.
13234         (and<mode>3): Ditto.
13235         (one_cmpl<mode>2): Ditto.
13236         (nor<mode>2): Ditto.
13237         (andc<mode>2): Ditto.
13238         (float<VEC_int<mode>2): Ditto.
13239         (unsigned_float<VEC_int><mode>2): Ditto.
13240         (fix_trunc<mode><VEC_int>2): Ditto.
13241         (fixuns_trunc<mode><VEC_int>2): Ditto.
13242         (vec_init<mode>):
13243         (vec_set<mode>): Ditto.
13244         (vec_extract<mode>): Ditto.
13245         (vec_interleave_highv4sf): Ditto.
13246         (vec_interleave_lowv4sf): Ditto.
13247         (vec_realign_load_<mode>): Ditto.
13248         (vec_shl_<mode>): Ditto.
13249         (vec_shr_<mode>): Ditto.
13250         (div<mode>3): New patterns for VSX.
13251         (vec_interleave_highv2df): Ditto.
13252         (vec_interleave_lowv2df): Ditto.
13253         (vec_pack_trunc_v2df): Ditto.
13254         (vec_pack_sfix_trunc_v2df): Ditto.
13255         (vec_pack_ufix_trunc_v2df): Ditto.
13256         (vec_unpacks_hi_v4sf): Ditto.
13257         (vec_unpacks_lo_v4sf): Ditto.
13258         (vec_unpacks_float_hi_v4si): Ditto.
13259         (vec_unpacks_float_lo_v4si): Ditto.
13260         (vec_unpacku_float_hi_v4si): Ditto.
13261         (vec_unpacku_float_lo_v4si): Ditto.
13262         (movmisalign<mode>): Ditto.
13263         (vector_ceil<mode>2): New patterns for vectorizing math library.
13264         (vector_floor<mode>2): Ditto.
13265         (vector_btrunc<mode>2): Ditto.
13266         (vector_copysign<mode>3): Ditto.
13267
13268         * config/rs6000/predicates.md (easy_vector_constant_msb): New
13269         predicate for setting the high bit in each word, used for copysign.
13270
13271         * config/rs6000/ppc-asm.h (f19): Whitespace.
13272         (f32-f63): Define if VSX.
13273         (v0-v31): Define if Altivec.
13274         (vs0-vs63): Define if VSX.
13275
13276         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
13277
13278         * config/rs6000/power7.md: New file, provide tuning parameters for
13279         -mcpu=power7.
13280
13281         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
13282         (rs6000_cpu_cpp_builtins): Ditto.
13283         (altivec_overloaded_builtins): Ditto.
13284         (altivec_resolve_overloaded_builtin): Ditto.
13285
13286         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
13287         debug switch to disable vectorizing simple math builtin
13288         functions.
13289
13290         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
13291         Vectorize simple math builtin functions.
13292         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
13293         hook to vectorize math builtins.
13294         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
13295         (rs6000_builtin_conversion): Add VSX/power7 support.
13296         (rs6000_builtin_vec_perm): Ditto.
13297         (vsplits_constant): Add support for loading up a vector constant
13298         with just the high bit set in each part.
13299         (rs6000_expand_vector_init): Add VSX/power7 support.
13300         (rs6000_expand_vector_set): Ditto.
13301         (rs6000_expand_vector_extract): Ditto.
13302         (rs6000_emit_move): Ditto.
13303         (bdesc_3arg): Ditto.
13304         (bdesc_2arg): Ditto.
13305         (bdesc_1arg): Ditto.
13306         (rs6000_expand_ternop_builtin): Ditto.
13307         (altivec_expand_builtin): Ditto.
13308         (rs6000_expand_unop_builtin): Ditto.
13309         (rs6000_init_builtins): Ditto.
13310         (altivec_init_builtins): Ditto.
13311         (builtin_function_type): Ditto.
13312         (rs6000_common_init_builtins): Ditto.
13313         (rs6000_handle_altivec_attribute); Ditto.
13314         (rs6000_mangle_type): Ditto.
13315         (rs6000_vector_mode_supported_p): Ditto.
13316         (rs6000_mode_dependent_address): Altivec addresses with AND -16
13317         are mode dependent.
13318
13319         * config/rs6000/vsx.md: New file for VSX support.
13320
13321         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
13322         identifing values with just the most significant bit set.
13323         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
13324         vectorized builtins.
13325
13326         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
13327         (UNSPEC_VRFIM): Delete.
13328         (splitter for loading up vector with most significant bit): New
13329         splitter for vectorizing copysign.
13330         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
13331         vectorizing simple math functions.
13332         (altivec_vrfip): Add support for vectorizing simple math functions.
13333         (altivec_vrfim): Ditto.
13334         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
13335
13336         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
13337         (power7.md, vsx.md): Include for power7 support.
13338         (copysigndf3): Use VSX instructions if -mvsx.
13339         (negdf2_fpr): Ditto.
13340         (absdf2_fpr): Ditto.
13341         (nabsdf2_fpr): Ditto.
13342         (adddf3_fpr): Ditto.
13343         (subdf3_fpr): Ditto.
13344         (muldf3_fpr): Ditto.
13345         (divdf3_fpr): Ditto.
13346         (fix_truncdfdi2_fpr): Ditto.
13347         (cmpdf_internal1): Ditto.
13348         (fred, fred_fpr): Convert into expander/insn to add VSX support.
13349         (btruncdf2, btruncdf2_fpr): Ditto.
13350         (ceildf2, ceildf2_fpr): Ditto.
13351         (floordf2, floordf2_fpr): Ditto.
13352         (floatdidf2, floatdidf2_fpr): Ditto.
13353         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
13354         (fmsubdf4_fpr): Ditto.
13355         (fnmadddf4_fpr_1): Ditto.
13356         (fnmadddf4_fpr_2): Ditto.
13357         (fnmsubdf4_fpr_1): Ditto.
13358         (fnmsubdf4_fpr_2): Ditto.
13359         (fixuns_truncdfdi2): Add expander for VSX support.
13360         (fix_truncdfdi2): Ditto.
13361         (fix_truncdfsi2): Ditto.
13362         (ftruncdf2): Ditto.
13363         (btruncsf2): Whitespace.
13364         (movdf_hardfloat32): Add support for VSX registers.
13365         (movdf_softfloat32): Ditto.
13366         (movdf_hardfloat64): Ditto.
13367         (movdf_hardfloat64_mfpgpr): Ditto.
13368         (movdf_softfloat64): Ditto.
13369         (movti splitters): Add check for vector registers supporting
13370         TImode in the future.
13371         (bpermd): Add power7 bpermd instruction.
13372
13373         * config/rs6000/altivec.h (vec_div): Define if VSX.
13374         (vec_mul): Ditto.
13375         (vec_msub): Ditto.
13376         (vec_nmadd): Ditto.
13377         (vec_nearbyint): Ditto.
13378         (vec_rint): Ditto.
13379         (vec_sqrt): Ditto.
13380         (all predicates): Use the generic builtin function, and not the V4SF
13381         specific function so that the predicates will work with VSX's V2DF.
13382         (vec_all_*): Ditto.
13383         (vec_any_*): Ditto.
13384
13385         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
13386         Document new VSX functions and types.
13387
13388         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
13389         switches.
13390
13391         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
13392         "wa", and "j" constraints.  Modify "v" to talk about Altivec
13393         instead of just vector.
13394
13395 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
13396
13397         PR debug/26475
13398         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
13399         location for phi arguments.
13400         (rewrite_update_phi_arguments): Find locations for reaching defs.
13401         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
13402         Add location to add_phi_arg calls.
13403         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
13404         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
13405         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
13406         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
13407         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
13408         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
13409         * tree-phinodes.c (make_phi_node): Initialize location.
13410         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
13411         (add_phi_arg): Add location parameter.
13412         (remove_phi_arg_num): Move location when moving phi argument.
13413         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
13414         location.
13415         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
13416         slpeel_update_phi_nodes_for_guard1,
13417         slpeel_update_phi_nodes_for_guard2,
13418         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
13419         vect_loop_versioning): Set locations.
13420         * tree-parloops.c (create_phi_for_local_result,
13421         transform_to_exit_first_loop, create_parallel_loop): Add locations.
13422         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
13423         * tree-vect-loop.c (get_initial_def_for_induction,
13424         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
13425         locations.
13426         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
13427         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
13428         (gimple_phi_arg_set_location): New.  Set locus.
13429         (gimple_phi_arg_has_location): New.  Check for locus.
13430         (redirect_edge_var_map_location): New.  Return locus from var_map.
13431         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
13432         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
13433         combining PHI arguments.
13434         (cond_store_replacement): Set location.
13435         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
13436         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
13437         scop_add_exit_phis_edge): Add locations.
13438         * tree-cfgcleanup.c (remove_forwarder_block,
13439         remove_forwarder_block_with_phi): Add locations.
13440         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
13441         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
13442         locations.
13443         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
13444         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
13445         flush_pending_stmts): Add source location.
13446         * lambda-code.c (perfect_nestify): Maintain location stack with argument
13447         stack to preserve locations.
13448         * tree-vect-stmts.c (vectorizable_load): Add location.
13449         * tree-inline.c (copy_phis_for_bb): Copy locus.
13450         (setup_one_parameter): Add call locus to inlined parameter stmts.
13451         (initialize_inlined_parameters): Pass in call location as parameter
13452         assignment locus.
13453         (tree_function_versioning): Pass location to setup_one_parameter.
13454         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
13455         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
13456         copy and edge lists.
13457         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
13458         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
13459         locus parameter and override the stmt default if provided.
13460         (new_elim_graph, clear_elim_graph, delete_elim_graph,
13461         elim_graph_add_edge, elim_graph_remove_succ_edge,
13462         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
13463         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
13464         eliminate_phi):  Add locus info in elimination graph for each edge and
13465         value copy.
13466         (insert_backedge_copies): Copy locus if present.
13467         * tree-flow.h (struct _edge_var_map): Add locus field.
13468         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
13469         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
13470         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
13471         locations.
13472         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
13473
13474 2009-07-30  Martin Jambor  <mjambor@suse.cz>
13475
13476         PR tree-optimization/40570
13477         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
13478         use inlining loops.
13479
13480 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
13481
13482         * ssa-loop-manip.c: Include langhooks.h.
13483         (rewrite_phi_with_iv): New.
13484         (rewrite_all_phi_nodes_with_iv): New.
13485         (canonicalize_loop_ivs): Move here from tree-parloops.c.
13486         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
13487         * tree-parloops.c (loop_parallel_p): Move out all conditions
13488         except dependency check.
13489         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
13490         (gen_parallel_loop): Call canonicalize_loop_ivs without
13491         reduction_list argument.
13492         (build_new_reduction): New.
13493         (gather_scalar_reductions): New.
13494         (try_get_loop_niter): New.
13495         (try_create_reduction_list): New.
13496         (parallleize_loops): Change the parallel conditions check.
13497         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
13498         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
13499
13500 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
13501
13502         * opt-functions.awk (opt_args): Allow argument to be enclosed in
13503         curly braces.
13504         * doc/options.texi (Option properties):  Mention new quoting syntax.
13505
13506 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
13507
13508         * config/alpha/alpha.c (alpha_start_function):
13509         Handle VMS_DEBUG_MAIN_POINTER
13510         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
13511         * doc/invoke.texi: Document -mdebug-main switch.
13512
13513 2009-07-29  Richard Henderson  <rth@redhat.com>
13514
13515         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
13516         (cgraph_create_edge_including_clones): Likewise.
13517         * tree-inline.c (copy_bb): Operate on the correct edges
13518         when updating the callgraph.
13519
13520 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
13521
13522         * config/alpha/vms-cc.c: Deleted.
13523         * config/alpha/vms-ld.c: Deleted.
13524         * config/alpha/t-vms64: Moved to config/vms
13525         * config/alpha/vms-crt0-64.c: Moved to config/vms
13526         * config/alpha/vms-crt0.c: Moved to config/vms
13527         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
13528         * config/alpha/vms-psxcrt0.c: Moved to config/vms
13529         * config/alpha/xm-vms.h: Moved to config/vms
13530         * config/alpha/x-vms: Moved to config/vms
13531         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
13532         config/vms/t-vms.
13533         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
13534         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
13535         (version): Set.
13536         * config/vms/t-vms64: Moved here from config/alpha
13537         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
13538         (argc,argv,envp): Enforce 32bit malloc'ing.
13539         * config/vms/vms-psxcrt0-64.c: Likewise.
13540         * config/vms/vms-crt0.c: Moved here from config/alpha.
13541         * config/vms/vms-psxcrt0.c: Likewise.
13542         * config/vms/vms-crtl-64.h: New file.
13543         * config/vms/vms-crtl.h: New file.
13544         * config/vms/vms.opt: New file.
13545         * config/vms/xm-vms64.h: New file.
13546         * config/vms/xm-vms.h: Moved here from config/alpha.
13547         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
13548         Set.
13549         * config/vms/x-vms: Moved here from config/alpha.
13550         (version, VMS_EXTRA_PARTS): Moved to t-vms.
13551         (vms-ld.o, vms-cc.o): Removed.
13552         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
13553
13554 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
13555
13556         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
13557         correct stack (obvious VMS fix).
13558
13559 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
13560
13561         * dwarf2out.c (output_file_names): Output VMS style file name, size,
13562         date, version info if VMS_DEBUGGING_INFO defined.
13563         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
13564         size, date calculating code moved here.
13565
13566 2009-07-29  Paul Brook  <paul@codesourcery.com>
13567
13568         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
13569         do_push/do_pop.
13570
13571 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
13572
13573         PR target/40577
13574         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
13575         to DImode when generating insq_le insn.
13576
13577 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
13578
13579         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
13580         New macro set for VMS_DEBUGGGING_INFO.
13581         (AT_string_form): Use it.
13582
13583 2009-07-28  DJ Delorie  <dj@redhat.com>
13584
13585         * config/mep/mep.c (vtext_section): New.
13586         (vftext_section): New.
13587         (ftext_section): New.
13588         (mep_select_section): Add support for functions.
13589         (mep_unique_section): Likewise.
13590         (mep_asm_init_sections): Likewise.
13591         (mep_encode_section_info): Remove it from here.
13592
13593         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
13594
13595 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
13596
13597         * tree.h (TREE_DEPRECATED): Document it is used for types too.
13598         (TYPE_VECTOR_OPAQUE): Use default_def_flag
13599
13600 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
13601
13602         * dwarf2out.c (output_file_names): Test new macro
13603         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
13604         (add_comp_dir_attribute): Likewise.
13605
13606 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
13607
13608         * config/i386/mingw-w64.h (LINK_SPEC): Add
13609         separating space between commands.
13610
13611 2009-07-28  Jan Hubicka  <jh@suse.cz>
13612
13613         PR tree-optimization/40759
13614         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
13615         for renaming.
13616
13617 2009-07-27  DJ Delorie  <dj@redhat.com>
13618
13619         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
13620         types are dword-aligned.
13621         (mep_expand_va_start): Likewise.
13622
13623 2009-07-27  Olivier Hainque  <hainque@adacore.com>
13624             Douglas B Rupp  <rupp@gnat.com>
13625
13626         * convert.c (convert_to_pointer): Don't assume the target
13627         pointer type is POINTER_SIZE long. Fetch its precision instead.
13628
13629 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
13630
13631         * system.h (fopen): Undefine if macro.
13632
13633 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
13634
13635         * dwarf2out.c (output_cfi_p): Removed.
13636         (output_cfis): New function.
13637         (output_fde): New function, split from output_call_frame_info.
13638         (output_call_frame_info): Use it.
13639         (dwarf2out_switch_text_section): Use output_cfis.
13640
13641 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
13642
13643         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
13644         TARGET_BI_ARCH is specified without enabling SJLJ.
13645         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
13646         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
13647
13648 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
13649
13650         * arm.md (negdi2): Use DImode if forcing a value into a register.
13651
13652 2009-07-26  Ira Rosen  <irar@il.ibm.com>
13653
13654         PR tree-optimization/40801
13655         * tree-vect-stmts.c (vectorizable_call): Get previous copy
13656         of vector operand from the previous copy of vector statement.
13657         Pass the correct definition type value to
13658         vect_get_vec_def_for_stmt_copy().
13659
13660 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13661
13662         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
13663         const char ** conversion.
13664
13665 2009-07-25 David Daney <ddaney@caviumnetworks.com>
13666
13667         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
13668         fancy_abort() if !ENABLE_ASSERT_CHECKING.
13669         (gcc_unreachable): Invoke __builtin_unreachable() if
13670         !ENABLE_ASSERT_CHECKING.
13671
13672 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
13673
13674         PR rtl-optimization/40445
13675         * emit-rtl.c (next_nonnote_insn_bb): New function.
13676         * rtl.h (next_nonnote_insn_bb): Declare new function.
13677         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
13678         with no successors that is the successor of the ENTRY_BLOCK.
13679         Continue from the top after removing an empty fallthrough block.
13680         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
13681         of next_nonnote_insn.
13682
13683 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
13684
13685         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
13686
13687 2009-07-25  Martin Jambor  <mjambor@suse.cz>
13688
13689         * c-common.c (c_common_attribute_table): New element for noclone.
13690         (handle_noclone_attribute): New function. Forward-declare.
13691         * tree-inline.c (tree_versionable_function_p): Check for noclone
13692         attribute.
13693         * doc/extend.texi (Labels as Values): Document need for noclone.
13694         (Function Attributes): Document noclone attribute.
13695
13696 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
13697
13698         PR rtl-optimization/34999
13699         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
13700         and dw_fde_switched_cold_to_hot fields.
13701         (output_cfi_p): New function.
13702         (output_call_frame_info): If fde->dw_fde_switched_sections,
13703         output 2 FDEs instead of one with corrupted header.
13704         (dwarf2out_do_cfi_startproc): New function.
13705         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
13706         and fde->dw_fde_switched_cold_to_hot.
13707         (dwarf2out_switch_text_section): Compute
13708         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
13709         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
13710         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
13711         Otherwise, compute fde->dw_fde_switch_cfi.
13712
13713 2009-07-24  Cary Coutant  <ccoutant@google.com>
13714
13715         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
13716
13717 2009-07-24  Cary Coutant  <ccoutant@google.com>
13718
13719         * cfghooks.c (split_block): Copy discriminator to new block.
13720         * tree-cfg.c (assign_discriminator): Check location of last
13721         instruction in block as well as first.
13722
13723 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
13724
13725         * config/i386/linux.c: Use fputs or putc instead of fprintf
13726         where appropriate.
13727         * config/i386/gas.h: Ditto.
13728         * config/i386/x86-64.h: Ditto.
13729         * config/i386/att.h: Ditto.
13730
13731 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
13732
13733         * expmed.c (emit_store_flag): Use a recursive call to optimize the
13734         xor case.
13735
13736 2009-07-24  Martin Jambor  <mjambor@suse.cz>
13737
13738         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
13739         (ipa_push_func_to_list_1): Declare.
13740         (ipa_push_func_to_list): New function.
13741
13742         * ipa-prop.c (ipa_push_func_to_list_1): New function.
13743         (ipa_init_func_list): Call ipa_push_func_to_list_1.
13744         (ipa_push_func_to_list): Removed.
13745         (ipa_pop_func_from_list): Clear node_enqueued flag.
13746
13747 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13748
13749         * config/s390/s390.c (override_options): Default
13750         max-unrolled-insns to 100 for z10 tuning.
13751
13752 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
13753
13754         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
13755         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
13756         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
13757         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
13758         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
13759         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
13760         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
13761
13762 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
13763
13764         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
13765         use default set in mingw32.h header.
13766         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
13767         64-bit /mingw/include path.
13768         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
13769         path.
13770
13771 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
13772
13773         PR rtl-optimization/40209
13774         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
13775
13776 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
13777
13778         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
13779         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
13780         with the rest of string where appropriate.  Use fputs or putc
13781         instead of fprintf where appropriate.
13782
13783 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
13784             Pat Haugen  <pthaugen@us.ibm.com>
13785             Revital Eres <ERES@il.ibm.com>
13786
13787         * config/rs6000/vector.md: New file.  Move most of the vector
13788         expander support here from altivec.md to allow for the VSX vector
13789         unit in the future.  Add support for secondary_reload patterns.
13790         Rewrite the patterns for vector comparison, and vector comparison
13791         predicate instructions so that the RTL expresses the desired
13792         behavior, instead of using unspec.
13793
13794         * config/rs6000/constraints.md ("f" constraint): Use
13795         rs6000_constraints to hold the precalculated register class.
13796         ("d" constraint): Ditto.
13797         ("wd" constraint): New constraint for VSX.
13798         ("wf" constraint): Ditto.
13799         ("ws" constraint): Ditto.
13800         ("wa" constraint): Ditto.
13801         ("wZ" constraint): Ditto.
13802         ("j" constraint): Ditto.
13803
13804         * config/rs6000/predicates.md (vsx_register_operand): New
13805         predicate for VSX.
13806         (vfloat_operand): New predicate for vector.md.
13807         (vint_operand): Ditto.
13808         (vlogical_operand): Ditto.
13809         (easy_fp_constant): If VSX, 0.0 is an easy constant.
13810         (easy_vector_constant): Add VSX support.
13811         (altivec_indexed_or_indirect_operand): New predicate for
13812         recognizing Altivec style memory references with AND -16.
13813
13814         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
13815         for vector secondary reload support.
13816         (rs6000_vector_reg_class): Delete, replacing it with
13817         rs6000_constraints.
13818         (rs6000_vsx_reg_class): Ditto.
13819         (rs6000_constraints): New array to hold the register classes of
13820         each of the register constraints that can vary at runtime.
13821         (builtin_mode_to_type): New static array for builtin function type
13822         creation.
13823         (builtin_hash_table): New static hash table for builtin function
13824         type creation.
13825         (TARGET_SECONDARY_RELOAD): Define target hook.
13826         (TARGET_IRA_COVER_CLASSES): Ditto.
13827         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
13828         registers are 128 bits if VSX memory reference instructions are used.
13829         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
13830         unit is being used.
13831         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
13832         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
13833         Print several of the scheduling related parameters.
13834         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
13835         rs6000_constraints instead of rs6000_vector_reg_class.  Move
13836         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
13837         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
13838         Altivec.  Add VSX support.  Setup for secondary reload support on
13839         Altivec/VSX registers.
13840         (rs6000_override_options): Make power7 set the scheduling groups
13841         like the power5.  Add support for new debug switches to override
13842         the scheduling defaults.  Temporarily disable -mcpu=power7 from
13843         setting -mvsx.  Add support for debug switches -malways-hint,
13844         -msched-groups, and -malign-branch-targets.
13845         (rs6000_buitlin_conversion): Add support for returning unsigned
13846         vector conversion functions to fix regressions due to stricter
13847         type checking.
13848         (rs6000_builtin_mul_widen_even): Ditto.
13849         (rs6000_builtin_mul_widen_odd): Ditto.
13850         (rs6000_builtin_vec_perm): Ditto.
13851         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
13852         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
13853         to zero a register.
13854         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
13855         generated upstream.
13856         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
13857         VSX types for bit operations.  Changes to accomidate vector.md.
13858         (bdesc_2arg): Ditto.
13859         (bdesc_1arg): Ditto.
13860         (struct builtin_description_predicates): Rewrite predicate
13861         handling so that RTL describes the operation, instead of passing
13862         the instruction to be used as a string argument.
13863         (bdesc_altivec_preds): Ditto.
13864         (altivec_expand_predicate_builtin): Ditto.
13865         (altivec_expand_builtin): Ditto.
13866         (rs6000_expand_ternop_builtin): Use a switch instead of an if
13867         statement for vsldoi support.
13868         (altivec_expand_ld_builtin): Change to use new names from vector.md.
13869         (altivec_expand_st_builtin): Ditto.
13870         (paired_expand_builtin): Whitespace changes.
13871         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
13872         builtin_mode_to_type table for secondary reload.  Call
13873         builtin_function_type to build random builtin functions.
13874         (altivec_init_builtins): Change to use builtin_function_type to
13875         create builtin function types dynamically as we need them.
13876         (builtin_hash_function): New support for hashing the tree types
13877         for builtin function as we need it, rather than trying to build
13878         all of the trees that we need.  Add initial preliminary VSX support.
13879         (builtin_function_type): Ditto.
13880         (builtin_function_eq): Ditto.
13881         (builtin_hash_struct): Ditto.
13882         (rs6000_init_builtins): Ditto.
13883         (rs6000_common_init_builtins): Ditto.
13884         (altivec_init_builtins): Ditto.
13885         (rs6000_common_init_builtins): Ditto.
13886         (enum reload_reg_type): New enum for simplifing reg classes.
13887         (rs6000_reload_register_type): Simplify register classes into GPR,
13888         Vector, and other registers.  Altivec and VSX addresses in reload.
13889         (rs6000_secondary_reload_inner): Ditto.
13890         (rs6000_ira_cover_classes): New target hook, that returns the
13891         appropriate cover classes, based on -mvsx being used or not.
13892         (rs6000_secondary_reload_class): Add VSX support.
13893         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
13894         (get_vsel_insn): Ditto.
13895         (rs6000_emit_vector_compare): Rewrite vector conditional support
13896         so that where we can, we use RTL operators, instead of blindly use
13897         UNSPEC.
13898         (rs6000_emit_vector_select): Ditto.
13899         (rs6000_emit_vector_cond_expr): Ditto.
13900         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
13901         (create_TOC_reference): Add -mdebug=addr support.
13902         (emit_frame_save): VSX loads/stores need register indexed addressing.
13903
13904         * config/rs6000/rs6000.md: Include vector.md.
13905
13906         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
13907
13908         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
13909         support for V2DI, V2DF in logical, permute, select operations.
13910
13911         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
13912         switch for vsx/power7.
13913         (-mvsx-scalar-memory): Ditto.
13914         (-mvsx-align-128): Ditto.
13915         (-mallow-movmisalign): Ditto.
13916         (-mallow-df-permute): Ditto.
13917         (-msched-groups): Ditto.
13918         (-malways-hint): Ditto.
13919         (-malign-branch-targets): Ditto.
13920
13921         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
13922         hook instead.
13923         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
13924         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
13925         (rs6000_vector_reg_class): Delete.
13926         (rs6000_vsx_reg_class): Ditto.
13927         (enum rs6000_reg_class_enum): New enum for the constraints that
13928         vary based on target switches.
13929         (rs6000_constraints): New array to hold the register class for all
13930         of the register constraints that vary based on the switches used.
13931         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
13932         (enum rs6000_builtins): Add unsigned varients for the builtin
13933         declarations returned by target hooks for expanding multiplies,
13934         select, and permute operations.  Add VSX builtins.
13935         (enum rs6000_builtin_type_index): Add entries for VSX.
13936         (V2DI_type_node): Ditto.
13937         (V2DF_type_node): Ditto.
13938         (unsigned_V2DI_type_node): Ditto.
13939         (bool_long_type_node): Ditto.
13940         (intDI_type_internal_node): Ditto.
13941         (uintDI_type_internal_node): Ditto.
13942         (double_type_internal_node): Ditto.
13943
13944         * config/rs6000/altivec.md (whole file): Move all expanders to
13945         vector.md from altivec.md.  Rename insn matching functions to be
13946         altivec_foo.
13947         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
13948         (altivec_vcmp*): Ditto.
13949         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
13950         (VM): New iterator for moves that includes the VSX types.
13951         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
13952         (altivec_vperm_<mode>_uns): New, for unsigned types.
13953         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
13954         (altivec_eq<mode>): Ditto.
13955         (altivec_gt<mode>): Ditto.
13956         (altivec_gtu<mode>): Ditto.
13957         (altivec_eqv4sf): Ditto.
13958         (altivec_gev4sf): Ditto.
13959         (altivec_gtv4sf): Ditto.
13960         (altivec_vcmpbfp_p): Ditto.
13961
13962 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
13963
13964         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
13965         unsigned HWI.
13966
13967 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
13968
13969         PR target/40832
13970         * config/i386/i386.c (output_387_ffreep): Rewrite to use
13971         ASM_SHORT instead of .word.
13972         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
13973         instead of .word in asm template.
13974
13975 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
13976
13977         PR target/37488
13978         * ira-lives.c (bb_has_abnormal_call_pred): New function.
13979         (process_bb_node_lives): Use it.
13980
13981         * ira.c (setup_cover_and_important_classes): Don't setup
13982         ira_important_class_nums.  Add cover classes to the end of
13983         important classes.
13984         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
13985         New.
13986         (find_reg_class_closure): Use reorder_important_classes.
13987
13988         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
13989
13990         * config/i386/i386.c (i386_ira_cover_classes): New function.
13991         (TARGET_IRA_COVER_CLASSES): Redefine.
13992
13993         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
13994         importance of order of cover classes in the array.
13995
13996 2009-07-22  Diego Novillo  <dnovillo@google.com>
13997
13998         * tree-pass.h (TDF_EH): Define.
13999         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
14000         contains TDF_EH, print the EH region number holding GS.
14001         * tree-dump.c (dump_options): Add "eh".
14002         * doc/invoke.texi: Document it.
14003
14004 2009-07-22  Doug Kwan  <dougkwan@google.com>
14005
14006         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
14007
14008 2009-07-22  Michael Matz  <matz@suse.de>
14009
14010         PR tree-optimization/35229
14011         PR tree-optimization/39300
14012
14013         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
14014         (inhibit_phi_insertion): New function.
14015         (insert_into_preds_of_block): Call it for REFERENCEs.
14016         (init_pre): Initialize and finalize scalar evolutions.
14017         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
14018
14019 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
14020
14021         * config/i386/predicates.md (zero_extended_scalar_load_operand):
14022         Use CONST_VECTOR_NUNITS to determine number of elements.
14023
14024 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
14025
14026         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
14027         (U, W): Constraints are now deprecated and will be removed if we
14028         run out of letters.
14029         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
14030         the file.
14031         ("prefetch"): Add the stcmh instruction for prefetching.
14032         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
14033         changes.
14034         (s390_short_displacement): Return always true if compiling for
14035         machines not providing the long displacement facility.
14036         (s390_mem_constraint): Support the new constraint letter Z.
14037         (s390_check_qrst_address): New function.
14038
14039 2009-07-21  DJ Delorie  <dj@redhat.com>
14040
14041         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
14042         alone too.
14043
14044 2009-07-21  Jason Merrill  <jason@redhat.com>
14045
14046         * c-common.c (max_tinst_depth): Increase default to 1024.
14047
14048 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
14049
14050         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
14051         (vec_unpacku_float_lo_v4si): Ditto.
14052
14053 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
14054
14055         PR target/40811
14056         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
14057         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
14058         (builtin_description): Add __builtin_ia32_cvtudq2ps.
14059         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
14060
14061 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
14062
14063         PR tree-optimization/40813
14064         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
14065         it.
14066
14067 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
14068
14069         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
14070         with a NOP_EXPR if needed.
14071
14072 2009-07-21  Paul Brook <paul@codesourcery.com>
14073
14074         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
14075         Terminate debug dump with newline.
14076
14077 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14078
14079         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
14080         Cast "1" to unsigned HOST_WIDE_INT.
14081         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
14082         deposit length to the maximum length - lsb.  Extend length if
14083         HOST_BITS_PER_WIDE_INT is 32.
14084
14085 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
14086
14087         * cgraph.h (constant_pool_htab): New function.
14088         (constant_descriptor_tree): Move from varasm.c.
14089         * varasm.c (constant_pool_htab): New function.
14090         (constant_descriptor_tree): Move to cgraph.h.
14091
14092 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
14093
14094         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
14095
14096 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
14097
14098         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
14099         $(VARRAY_H).
14100
14101 2009-07-20  Xinliang David Li  <davidxl@google.com>
14102
14103         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
14104
14105 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
14106
14107         * config/mips/mips.md (move_type): Add arith.
14108         (type): Handle arith.
14109         (zero_extendsidi2): Rename this into ...
14110         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
14111         (zero_extendsidi2): New expander.
14112         (*zero_extendsidi2_dext): New pattern.
14113
14114 2009-07-20  Nick Clifton  <nickc@redhat.com>
14115
14116         * config.gcc (mips64-*-*): Add definition of tm_defines in order
14117         to set MIPS_ABI_DEFAULT.
14118         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
14119
14120 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
14121
14122         * tree-object-size.c (addr_object_size): Handle unions with
14123         array in it as last field of structs in __bos (, 1) as __bos (, 0).
14124
14125         PR tree-optimization/40792
14126         * tree.c (build_function_type_skip_args): Remove bogus assert.
14127
14128 2009-07-20  Jan Hubicka  <jh@suse.cz>
14129             Martin Jambor  <mjambor@suse.cz>
14130
14131         * cgraph.h (combined_args_to_skip): New field.
14132         * cgraph.c (cgraph_create_virtual_clone): Properly handle
14133         combined_args_to_skip and args_to_skip.
14134         * tree-inline.c (update_clone_info): New function.
14135         (tree_function_versioning): Call update_clone_info.
14136         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
14137         functions.
14138         (cgraph_materialize_all_clones): More extensive dumping, working
14139         with combined_args_to_skip rather than args_to_skip.
14140
14141 2009-07-20  Ira Rosen  <irar@il.ibm.com>
14142
14143         * tree-vectorizer.h (vectorizable_condition): Add parameters.
14144         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
14145         (get_initial_def_for_reduction): Likewise.
14146         (vectorizable_reduction): Skip the check of first operand in case
14147         of COND_EXPR. Add check that it is outer loop vectorization if
14148         nested cycle was detected. Call vectorizable_condition() for
14149         COND_EXPR. If reduction epilogue cannot be created do not fail for
14150         nested cycles (if it is not double reduction). Assert that there
14151         is only one type in the loop in case of COND_EXPR. Call
14152         vectorizable_condition() to vectorize COND_EXPR.
14153         * tree-vect-stmts.c (vectorizable_condition): Update comment.
14154         Add parameters. Allow nested cycles if called from
14155         vectorizable_reduction(). Use reduction vector variable if provided.
14156         (vect_analyze_stmt): Call vectorizable_reduction() before
14157         vectorizable_condition().
14158         (vect_transform_stmt): Update call to vectorizable_condition().
14159
14160 2009-07-20  Christian Bruel  <christian.bruel@st.com>
14161
14162         * config/sh/sh.opt (-mfmovd): Resurrect and document.
14163         * doc/invoke.texi (-mfmovd): Likewise.
14164         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
14165
14166 2009-07-20  Jan Hubicka  <jh@suse.cz>
14167
14168         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
14169         when handling SSA name.
14170
14171 2009-07-19  Jan Hubicka  <jh@suse.cz>
14172
14173         PR tree-optimization/40676
14174         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
14175         virtual PHIs in empty BBs.
14176
14177 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14178
14179         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
14180         re-expanded the compound use gen_lowpart instead to convert to the
14181         desired mode.
14182
14183 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14184
14185         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
14186         OUTER_CONST arguments.
14187         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
14188         the new wider mode will be masked off.
14189         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
14190
14191 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14192
14193         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
14194         high-order bits are zero.
14195
14196 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14197
14198         * combine.c (simplify_shift_const_1): Split code to determine
14199         shift_mode into ...
14200         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
14201         new bits shifted in are identical to the old sign bit.
14202
14203 2009-07-18  Richard Guenther  <rguenther@suse.de>
14204
14205         PR c/40787
14206         * gimplify.c (gimplify_call_expr): Reject code using results from
14207         functions returning void.
14208
14209 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
14210
14211         * doc/md.texi: Document the new PowerPC "es" constraint.
14212         Document that "m" can include automodified addresses on this target,
14213         and explain how %U must be used.  Extend the "Q" and "Z" documentation
14214         to suggest "es" as well as "m".
14215         * config/rs6000/constraints.md (es): New memory constraint.
14216         (Q, Z): Update strings to match new documentation.
14217
14218 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
14219
14220         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
14221         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
14222         * config/rs6000/predicates.md (volatile_mem_operand): Use
14223         offsettable_nonstrict_memref_p.
14224         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
14225         (*floatunssidf2_internal): Likewise.
14226         (*fix_truncdfsi2_internal): Likewise.
14227         (*fix_trunctfsi2_internal): Likewise.
14228
14229 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
14230
14231         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
14232         atmega32u2 devices.
14233         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
14234
14235 2009-07-17  Richard Guenther  <rguenther@suse.de>
14236
14237         PR c/40401
14238         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
14239         (pass_warn_unused_result): Likewise.
14240         (TODO_set_props): Remove.
14241         * omp-low.c (diagnose_omp_structured_block_errors): Change to
14242         run as a pass.
14243         (pass_diagnose_omp_blocks): Define.
14244         * c-decl.c (pop_file_scope): Do not finalize the CU here.
14245         (c_gimple_diagnostics_recursively): Remove.
14246         (finish_function): Do not call it.
14247         (c_write_global_declarations): Continue after errors.
14248         Finalize the CU here.
14249         * c-gimplify.c (c_genericize): Do not gimplify here.
14250         * c-common.c (c_warn_unused_result): Move ...
14251         * tree-cfg.c (do_warn_unused_result): ... here.
14252         (run_warn_unused_result): New function.
14253         (gate_warn_unused_result): New function.
14254         (pass_warn_unused_result): New pass.
14255         * c-common.h (c_warn_unused_result): Remove.
14256         * flags.h (flag_warn_unused_result): Declare.
14257         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
14258         * opts.c (flag_warn_unused_result): Initialize to false.
14259         * toplev.c (compile_file): Add comment.
14260         * omp-low.c (create_omp_child_function): Do not register
14261         the function with the frontend.
14262         (diagnose_omp_structured_block_errors): Prepare to be
14263         called as optimization pass.
14264         (gate_diagnose_omp_blocks): New function.
14265         (pass_diagnose_omp_blocks): New pass.
14266         * cgraph.h (cgraph_optimize): Remove.
14267         (cgraph_analyze_function): Likewise.
14268         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
14269         * cgraphunit.c (cgraph_lower_function): Lower nested functions
14270         before their parents here.
14271         (cgraph_finalize_function): Not here.
14272         (cgraph_analyze_function): Gimplify functions here.
14273         (cgraph_finalize_compilation_unit): Continue after errors.
14274         Optimize the callgraph from here.
14275         (cgraph_optimize): Make static.
14276         * langhooks.c (write_global_declarations): Finalize the CU.
14277         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
14278         (gimplify_function_tree): Assert we gimplify only once.
14279         Set PROP_gimple_any property.
14280         * tree-nested.c (gimplify_all_functions): New function.
14281         (lower_nested_functions): Gimplify all nested functions.
14282         * gimple.h (diagnose_omp_structured_block_errors): Remove.
14283         * passes.c (init_optimization_passes): Add pass_warn_unused_result
14284         and pass_diagnose_omp_blocks after gimplification.  Do not
14285         set TODO_set_props on all_lowering_passes.
14286         (execute_one_pass): Do not handle TODO_set_props.
14287         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
14288         (gimplify.o): Add tree-pass.h dependency.
14289         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
14290         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
14291         (unsave_r): Likewise.
14292         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
14293         temporary variable.
14294
14295 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
14296
14297         * doc/service.texi (Service): Restore previously removed link,
14298         which isn't broken after all.
14299
14300 2009-07-17  Richard Guenther  <rguenther@suse.de>
14301
14302         PR tree-optimization/40321
14303         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
14304         PHI nodes to the maximal set.
14305         (make_values_for_phi): Add PHI arguments to the maximal set.
14306         (execute_pre): Dump PHI_GEN and the maximal set.
14307
14308 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
14309
14310         PR c++/40780
14311         * gimplify.c (gimplify_conversion): Don't change non-conversions into
14312         VIEW_CONVERT_EXPR.
14313
14314 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
14315
14316         * doc/extend.texi (Nested Functions): Replace broken link with
14317         textual reference.
14318         * doc/service.texi (Service): Remove broken link.
14319
14320 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
14321
14322         PR bootstrap/40781
14323         * builtins.c (expand_builtin_memcmp): Use loc instead of
14324         EXPR_LOCATION (exp).
14325         (expand_builtin_strncmp): Likewise.
14326
14327 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
14328             Manuel López-Ibáñez  <manu@gcc.gnu.org>
14329
14330         PR 40435
14331         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
14332         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
14333         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
14334         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
14335         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
14336         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
14337         tree-inline.c, c-common.c, c-common.h, gimple.c,
14338         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
14339         convert.c: Add location argument to fold_{unary,binary,ternary},
14340         fold_build[123], build_call_expr, build_size_arg,
14341         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
14342         fold_build1_initializer, fold_build2_initializer,
14343         fold_build3_initializer, fold_build_call_array,
14344         fold_build_call_array_initializer, fold_single_bit_test,
14345         omit_one_operand, omit_two_operands, invert_truthvalue,
14346         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
14347         combine_comparisons, fold_builtin_*, fold_call_expr,
14348         build_range_check, maybe_fold_offset_to_address, round_up,
14349         round_down.
14350
14351 2009-07-16  Jason Merrill  <jason@redhat.com>
14352
14353         PR libstdc++/37907
14354         * c-common.c (c_common_reswords): Add __is_standard_layout
14355         and __is_trivial.
14356         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
14357         * doc/implement-cxx.texi: New.
14358         * doc/gcc.texi: Include it.
14359
14360 2009-07-16  DJ Delorie  <dj@redhat.com>
14361
14362         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
14363         compares that may be indirectly affected by previous instructions.
14364
14365 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14366
14367         * builtins.c (do_mpc_arg2): New.
14368         (fold_builtin_2): Fold builtin cpow.
14369         * real.h (HAVE_mpc_pow): New.
14370
14371 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
14372
14373         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
14374         comparison to skip unprofitable schedule
14375
14376 2009-07-16  Simon Baldwin  <simonb@google.com>
14377
14378         * gcc.c (option_map): New flag -no-canonical-prefixes.
14379         * (display_help): Print help text for new flag.
14380         * (process_command): Move options translation and language specifics
14381         and handle new flag early.  Use it to set a function pointer to a
14382         prefix builder.  Replace make_relative_prefix calls with calls to
14383         the function pointed to.  Ignore new flag in regular options handling.
14384         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
14385
14386 2009-07-15  DJ Delorie  <dj@redhat.com>
14387
14388         * config/mep/mep.md (sibcall_internal): Change register to avoid
14389         argument registers.
14390         (sibcall_value_internal): Likewise.
14391
14392 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
14393
14394         PR rtl-optimization/40710
14395         * resource.c (mark_target_live_regs): Reset DF problem to LR.
14396
14397 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
14398
14399         * config/mips/mips.md (*extenddi_truncate<mode>,
14400         *extendsi_truncate<mode>): Change type attribute to move_type
14401         with shift_shift.  Split out code handling exts from here ...
14402         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
14403         pattern.
14404         (*extendhi_truncateqi): Change type attribute to move_type with
14405         shift_shift.  Split out code handling exts from here ...
14406         (*extendhi_truncateqi_exts): ... to this new pattern.
14407
14408 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
14409
14410         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
14411         instead of "and" with inverted sign bit mask value.  Use
14412         "nonimmediate_operand" for operand 1 and operand 2 predicate.
14413         Allocate registers only for operand 4 and operand 5.
14414
14415 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
14416
14417         PR middle-end/40747
14418         * fold-const.c (fold_cond_expr_with_comparison): When folding
14419         < and <= to MIN, make sure the MIN uses the same type as the
14420         comparison's operands.
14421
14422 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
14423
14424         * arm.md (ior_xor): New code iterator.
14425         (split for ior/xor with shift and zero-extend): New split pattern.
14426         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
14427
14428 2009-07-15  Richard Guenther  <rguenther@suse.de>
14429
14430         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
14431         offset member.
14432
14433 2009-07-15  Richard Guenther  <rguenther@suse.de>
14434
14435         PR middle-end/40753
14436         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
14437
14438 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
14439
14440         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
14441         handle 2.6.30 kernel.
14442
14443 2009-07-15  DJ Delorie  <dj@redhat.com>
14444
14445         * config/mep/mep.md (sibcall_internal): Change register to allow
14446         for 24-bit addresses.
14447         (sibcall_value_internal): Likewise.
14448
14449 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
14450
14451         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
14452         that are enabled/disabled by the flags introduced by a previous patch.
14453
14454 2009-07-14  DJ Delorie  <dj@redhat.com>
14455
14456         * config/mep/mep.md (sibcall_internal): Include non-toggling
14457         non-jmp case.
14458         (sibcall_value_internal): Likewise.
14459
14460 2009-07-14  Taras Glek  <tglek@mozilla.com>
14461             Rafael Espindola  <espindola@google.com>
14462
14463         * doc/sourcebuild.texi: Document install-plugin target.
14464         * configure.ac: Added install-plugin target to language makefiles.
14465         * configure: Regenerate.
14466         * Makefile.in (install-plugin): Install more headers,
14467         depend on lang.install-plugin.
14468
14469 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14470
14471         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
14472         translation.
14473
14474 2009-07-14  DJ Delorie  <dj@redhat.com>
14475
14476         * config/mep/mep.c (mep_vliw_jmp_match): New function.
14477         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
14478         * config/mep/mep.md (sibcall_internal): Change test from
14479         mep_vliw_mode_match to mep_vliw_jmp_match.
14480         (sibcall_value_internal): Likewise.
14481
14482 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
14483
14484         * config/i386/sse.md (copysign<mode>3): New expander.
14485         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
14486         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
14487         Use ix86_build_const_vector.
14488         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
14489         IX86_BUILTIN_CPYSGNPD.
14490         (builtin_description): Add __builtin_ia32_copysignps and
14491         __builtin_ia32_copysignpd.
14492         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
14493         and BUILT_IN_COPYSIGNF.
14494
14495 2009-07-13  Jason Merrill  <jason@redhat.com>
14496
14497         * builtins.c (can_trust_pointer_alignment): New fn.
14498         (get_pointer_alignment): Factor it out from here.
14499         * tree.h: Declare it.
14500
14501 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
14502
14503         * config/rs6000/predicates.md (offsettable_mem_operand): Test
14504         RTX_AUTOINC class.
14505
14506 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
14507
14508         PR debug/40705
14509         PR c++/403057
14510         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
14511
14512 2009-07-14  Richard Guenther  <rguenther@suse.de>
14513             Andrey Belevantsev <abel@ispras.ru>
14514
14515         PR middle-end/40745
14516         * cfgexpand.c (partition_stack_vars): Do not bother to update
14517         alias information when not optimizing.
14518
14519 2009-07-14  Richard Guenther  <rguenther@suse.de>
14520             Andrey Belevantsev <abel@ispras.ru>
14521
14522         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
14523         (pt_solution_set): Likewise.
14524         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
14525         * tree-ssa-structalias.c (pt_solution_set): New function.
14526         * final.c (rest_of_clean_state): Free SSA data structures.
14527         * print-rtl.c (print_decl_name): Remove.
14528         (print_mem_expr): Implement in terms of print_generic_expr.
14529         * alias.c (ao_ref_from_mem): New function.
14530         (rtx_refs_may_alias_p): Likewise.
14531         (true_dependence): Query alias-export info.
14532         (canon_true_dependence): Likewise.
14533         (write_dependence_p): Likewise.
14534         * tree-dfa.c (get_ref_base_and_extent): For void types leave
14535         size unknown.
14536         * emit-rtl.c (component_ref_for_mem_expr): Remove.
14537         (mem_expr_equal_p): Use operand_equal_p.
14538         (set_mem_attributes_minus_bitpos): Do not use
14539         component_ref_for_mem_expr.
14540         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
14541         (update_alias_info_with_stack_vars): Likewise.
14542         (partition_stack_vars): Call update_alias_info_with_stack_vars.
14543         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
14544         explicitly nor clear stmt operands.
14545         Free the decl-to-pointer map.
14546         * tree-optimize.c (execute_free_datastructures): Do not free
14547         SSA data structures here.
14548         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
14549         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
14550         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
14551         dependencies.
14552         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
14553
14554 2009-07-13  DJ Delorie  <dj@redhat.com>
14555
14556         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
14557         unrolling at the right iteration count.
14558
14559         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
14560         calculations.
14561
14562 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
14563
14564         * haifa-sched.c (rank_for_schedule): Introduced flags to
14565         enable/disable individual scheduling heuristics.
14566         * common.opt: Introduced flags to enable/disable individual
14567         heuristics in the scheduler.
14568         * doc/invoke.texi: Introduced flags to enable/disable individual
14569         heuristics in the scheduler.
14570
14571 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
14572
14573         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
14574         config/i386/mingw-tls.c.
14575         * config/i386/mingw-tls.c: Removed.
14576
14577 2009-07-13  Ira Rosen  <irar@il.ibm.com>
14578
14579         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
14580         checks access only relevant statements.
14581         (vectorizable_reduction): Likewise.
14582
14583 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
14584
14585         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
14586         just for 32-bit case.
14587
14588 2009-07-12  Jan Hubicka  <jh@suse.cz>
14589
14590         PR tree-optimization/40585
14591         * except.c (expand_resx_expr): When there already is resume
14592         instruction, produce linked list.
14593         (build_post_landing_pads): Assert that resume is empty.
14594         (connect_post_landing_pads): Handle resume lists.
14595         (dump_eh_tree): Dump resume list.
14596
14597 2009-07-12  Ira Rosen  <irar@il.ibm.com>
14598
14599         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
14600         with additional argument.
14601         * tree-vectorizer.h (enum vect_def_type): Add
14602         vect_double_reduction_def.
14603         (vect_is_simple_reduction): Add argument.
14604         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
14605         indentation.
14606         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
14607         vect_is_simple_reduction with additional argument.
14608         (vect_analyze_loop_operations): Handle exit phi nodes in case of
14609         double reduction.
14610         (reduction_code_for_scalar_code): Handle additional codes by
14611         returning ERROR_MARK for them. Fix comment and indentation.
14612         (vect_is_simple_reduction): Fix comment, add argument to specify
14613         double reduction. Detect double reduction.
14614         (get_initial_def_for_induction): Fix indentation.
14615         (get_initial_def_for_reduction): Fix comment and indentation.
14616         Handle double reduction. Create initial definitions that do not
14617         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
14618         (vect_create_epilog_for_reduction): Fix comment, add argument to
14619         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
14620         epilogue result extraction. Create double reduction phi node and
14621         replace relevant uses.
14622         (vectorizable_reduction): Call vect_is_simple_reduction with
14623         additional argument. Fix indentation. Update epilogue code treatment
14624         according to the changes in reduction_code_for_scalar_code. Check
14625         for double reduction. Call vect_create_epilog_for_reduction with
14626         additional argument.
14627         * tree-vect-stmts.c (process_use): Handle double reduction, update
14628         documentation.
14629         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
14630         (vect_get_vec_def_for_operand): Likewise.
14631
14632 2009-07-12  Danny Smith  <dansmister@gmail.com>
14633
14634         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
14635         dllexport if !TREE_PUBLIC.
14636         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
14637
14638 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
14639
14640         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
14641         (avr_extra_arch_macro) Remove declatation.
14642         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
14643         (avr_extra_arch_macro) Declare as static.
14644         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
14645
14646 2009-07-11  Jan Hubicka  <jh@suse.cz>
14647
14648         PR middle-end/48388
14649         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
14650
14651 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
14652
14653         PR debug/40713
14654         * dwarf2out.c (dw_fde_struct): Add in_std_section and
14655         cold_in_std_section bits.
14656         (dwarf2out_begin_prologue): Initialize them.
14657         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
14658         if already covered by text_section or cold_text_section range.
14659
14660         PR rtl-optimization/40667
14661         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
14662         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
14663         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
14664         * config/i386/i386.c (ix86_minimum_alignment): New function.
14665         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
14666         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
14667         * emit-rtl.c (gen_reg_rtx): Likewise.
14668         * function.c (assign_parms): Likewise.  If nominal_type needs
14669         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
14670         rather than passed_type's alignment.
14671
14672         PR target/40668
14673         * function.c (assign_parm_setup_stack): Adjust
14674         MEM_OFFSET (data->stack_parm) if promoted_mode is different
14675         from nominal_mode on big endian.
14676
14677 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
14678
14679         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
14680
14681 2009-07-10  DJ Delorie  <dj@redhat.com>
14682
14683         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
14684
14685 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
14686
14687         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
14688         attribute.
14689         (thumb2_cbnz): Likewise.
14690
14691 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
14692
14693         PR target/39079
14694         * config.gcc (supported_defaults): Add synci.
14695         (with_synci): Add validation.
14696         (all_defaults): Add synci.
14697         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
14698         ISA_HAS_SYNCI.
14699         (synci): Same.
14700         * config/mips/mips.opt (msynci): New option.
14701         * config/mips/mips.c (mips_override_options): Warn on use of
14702         -msynci for targets that do now support it.
14703         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
14704         msynci.
14705         * gcc/doc/invoke.texi (-msynci): Document the new option.
14706         * doc/install.texi (--with-synci): Document the new option.
14707
14708 2009-07-10  Richard Guenther  <rguenther@suse.de>
14709
14710         PR tree-optimization/40496
14711         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
14712         the PHI result with a compatible type.
14713
14714 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14715
14716         PR 25509
14717         PR 40614
14718         * c.opt (Wunused-result): New.
14719         * doc/invoke.texi: Document it.
14720         * c-common.c (c_warn_unused_result): Use it.
14721
14722 2009-07-09  DJ Delorie  <dj@redhat.com>
14723
14724         * targhooks.c (default_target_can_inline_p): Rename from
14725         default_target_option_can_inline_p.
14726         * targhooks.h (default_target_can_inline_p): Likewise.
14727         * target-def.h (TARGET_CAN_INLINE_P): Rename from
14728         TARGET_OPTION_CAN_INLINE_P.
14729         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
14730         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
14731         (mep_target_can_inline_p): Rename from
14732         mep_target_option_can_inline_p.
14733
14734         PR target/40626
14735         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
14736         registers used to pass vectors.
14737
14738         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
14739
14740 2009-07-09  Tom Tromey  <tromey@redhat.com>
14741
14742         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
14743         * config/mmix/mmix.c: Include dwarf2.h.
14744         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
14745         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
14746         * config/sh/sh.c: Include dwarf2.h.
14747         * config/i386/i386.c: Include dwarf2.h.
14748         * Makefile.in (DWARF2_H): Remove 'elf'.
14749         * except.c: Include dwarf2.h.
14750         * unwind-dw2.c: Include dwarf2.h.
14751         * dwarf2out.c: Include dwarf2.h.
14752         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
14753         * unwind-dw2-fde.c: Include dwarf2.h.
14754         * dwarf2asm.c: Include dwarf2.h.
14755
14756 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
14757
14758         * haifa-sched.c (insn_finishes_cycle_p): New static function.
14759         (max_issue): Use it.
14760         * sched-int.h (struct sched_info: insn_finishes_block_p): New
14761         scheduler hook.
14762         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
14763         (region_sched_info): Update.
14764         * sched-ebb.c (ebb_sched_info): Update.
14765         * modulo-sched.c (sms_sched_info): Update.
14766         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
14767
14768 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
14769
14770         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
14771
14772 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
14773
14774         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
14775
14776 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
14777
14778         PR middle-end/40692
14779         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
14780         arg1 with arg01 if arg1 is already INTEGER_CST.
14781
14782 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
14783
14784         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
14785         Transform (and (truncate)) into (truncate (and)).
14786
14787 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
14788
14789         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
14790         creating LHS paradoxical subregs.  Fix surrounding returns to
14791         use NULL_RTX rather than 0.
14792
14793 2009-07-08  DJ Delorie  <dj@redhat.com>
14794
14795         * config/mep/mep.c (mep_option_can_inline_p): New.
14796         (TARGET_OPTION_CAN_INLINE_P): Define.
14797
14798 2009-07-08  Mark Wielaard  <mjw@redhat.com>
14799
14800         PR debug/40659
14801         * dwarf2out.c (add_data_member_location_attribute): When we have
14802         only a constant offset don't emit a new location description using
14803         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
14804         dwarf_version > 2.
14805
14806 2009-07-08  Richard Henderson  <rth@redhat.com>
14807
14808         PR target/38900
14809         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
14810         (enum reg_class): Add CLOBBERED_REGS.
14811         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
14812         * config/i386/i386.c (ix86_conditional_register_usage): Moved
14813         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
14814         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
14815         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
14816         force 64-bit sibcalls into R11.
14817         * config/i386/constraints.md (U): New constraint.
14818         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
14819         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
14820         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
14821
14822 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
14823
14824         * basic-block.h (dump_regset, debug_regset): Remove duplicate
14825         prototypes.
14826         * c-objc-common.h (c_initialize_diagnostics): Ditto.
14827         * ebitmap.h (dump_ebitmap): Ditto.
14828         * optabs.h (optab_libfunc): Ditto.
14829         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
14830         * tree-flow.h (vect_can_force_dr_alignment_p,
14831         get_vectype_for_scalar_type): Ditto.
14832         (vectorize_loops): Move prototype to ...
14833         * tree-vectorizer.h: ... here. Also, adjust comment.
14834         (vect_set_verbosity_level): Remove duplicate prototype.
14835         * tree-ssa-loop.c: Include tree-vectorizer.h.
14836         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
14837
14838 2009-07-08  Nick Clifton  <nickc@redhat.com>
14839
14840         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
14841         forward slash.
14842
14843 2009-07-08  DJ Delorie  <dj@redhat.com>
14844
14845         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
14846         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
14847         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
14848         written to.
14849         * config/mep/intrinsics.md: Regenerated.
14850         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
14851         registers when asm() or calls are detected.
14852
14853 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14854
14855         PR c++/31246
14856         * gimplify.c (gimplify_expr): Propagate no_warning flag when
14857         gimplifying.
14858         * gimple (gimple_build_call_from_tree): Likewise.
14859         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
14860         no_warning flag before warning.
14861
14862 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14863
14864         * tree.c (set_expr_locus): Remove.
14865         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
14866         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
14867         EXPR_LOCATION.
14868         * gimplify.c (internal_get_tmp_var): Likewise.
14869         (gimplify_call_expr): Likewise.
14870         (gimplify_one_sizepos): Likewise.
14871
14872 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
14873
14874         PR debug/40666
14875         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
14876         to variables for debugging purposes.
14877
14878 2009-06-23  Mark Loeser  <mark@halcy0n.com>
14879
14880         PR build/40010
14881         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
14882
14883 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14884
14885         * pretty-print.c (pp_base_format): Remove %J.
14886         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
14887         gcc_cxxdiag_char_table): Likewise.
14888         (init_dynamic_diag_info): Likewise.
14889
14890 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14891
14892         * pretty-print.c (pp_base_format): Remove %H.
14893         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
14894         gcc_cxxdiag_char_table): Likewise.
14895         (init_dynamic_diag_info): Likewise.
14896         * config/mep/mep.c (mep_select_section): Likewise.
14897
14898 2009-07-07  Duncan Sands  <baldrick@free.fr>
14899
14900         * final.c (pass_clean_state): Give the pass a name.
14901         * passes.c (pass_rest_of_compilation): Likewise.
14902         * tree-optimize.c (pass_all_optimizations): Likewise.
14903
14904 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
14905
14906         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
14907         an extra 'decl' for error_at.
14908
14909 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
14910
14911         PR middle-end/40669
14912         * tree-tailcall.c (adjust_return_value_with_ops,
14913         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
14914         if it has complex or vector type.
14915
14916 2009-07-07  Olivier Hainque  <hainque@adacore.com>
14917
14918         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
14919         pthread symbols.
14920
14921 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
14922
14923         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
14924
14925 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14926
14927         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
14928         * c-decl.c: Likewise.
14929         * function.c: Likewise.
14930         * varasm.c: Likewise.
14931         * tree-ssa.c: Likewise.
14932         * c-common.c: Likewise.
14933         * tree-cfg.c: Likewise.
14934         * config/spu/spu.c: Likewise.
14935         * config/ia64/ia64.c: Likewise.
14936         * config/v850/v850.c: Likewise.
14937
14938 2009-07-06  DJ Delorie  <dj@redhat.com>
14939
14940         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
14941         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
14942         unspecified accesses to control registers.
14943         * config/mep/intrinsics.md: Regenerate.
14944         * config/mep/intrinsics.h: Regenerate.
14945         * config/mep/mep-intrin.h: Regenerate.
14946
14947 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14948
14949         * c-lex.c: Replace %H by an explicit location. Update all calls.
14950         * c-common.c: Likewise.
14951         * c-decl.c: Likewise.
14952         * c-typeck.c: Likewise.
14953         * fold-const.c: Likewise.
14954         * gimplify.c: Likewise.
14955         * stmt.c: Likewise.
14956         * tree-cfg.c: Likewise.
14957         * tree-ssa-loop-niter.c: Likewise.
14958         * tree-vrp.c: Likewise.
14959         * value-prof.c: Likewise.
14960
14961 2009-07-06  Diego Novillo  <dnovillo@google.com>
14962
14963         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
14964         if it has one.  Handle cases where VAR does not have an
14965         annotation or cfun is NULL.
14966
14967 2009-07-06  Diego Novillo  <dnovillo@google.com>
14968
14969         * tree.c: Include debug.h.
14970         (initialize_tree_contains_struct): New.
14971         (init_ttree): Call it.
14972         (tree_node_structure_for_code): Factor out of ...
14973         (tree_node_structure): ... here.
14974         * treestruct.def (TS_PHI_NODE): Remove.
14975         (TS_GIMPLE_STATEMENT): Remove.
14976
14977 2009-07-06  Diego Novillo  <dnovillo@google.com>
14978
14979         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
14980         (debug_tree_chain): Handle cycles.
14981
14982 2009-07-06  Nick Clifton  <nickc@redhat.com>
14983             DJ Delorie  <dj@redhat.com>
14984
14985         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
14986         __FMOVD_ENABLED__ is defined.
14987         * config/sh/sh.h
14988         (TARGET_FMOVD): Provide a default definition.
14989         (MASK_FMOVD): Likewise.
14990         (TARGET_CPU_CPP_BUILTINS): Define
14991         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
14992         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
14993         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
14994         (split for DF load from memory into register): Also handle
14995         MEMs which consist of REG+DISP addressing.
14996         (split for DF store from register to memory): Likewise.
14997         (movsf_ie): Always use single fp_mode.
14998         * config/sh/sh.c (sh_override_options): Do not automatically
14999         enable TARGET_MOVD for the SH2A when supporting doubles - leave
15000         that to the -mfmovd command line switch.
15001         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
15002         (fldi_ok): Always allow.
15003         * config/sh/sh.opt (mfmovd): Remove this switch.
15004         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
15005
15006 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
15007             Kaz Kojima  <kkojima@gcc.gnu.org>
15008
15009         PR rtl-optimization/30807
15010         * postreload.c (reload_combine): For every new use of REG_SUM,
15011         record the use of BASE.
15012
15013 2009-07-06  Jan Hubicka  <jh@suse.cz>
15014
15015         * params.def: Revert my accidental commit at 2009-06-30.
15016
15017 2009-07-04  Ian Lance Taylor  <iant@google.com>
15018
15019         PR target/40636
15020         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
15021         EXPORTED_CONST.
15022         (mingw_format_attribute_overrides): Likewise.
15023
15024 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
15025
15026         PR debug/40596
15027         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
15028         don't check cfa.reg.  Instead of cfa.indirect use
15029         fde && fde->drap_reg != INVALID_REGNUM test.
15030
15031 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
15032
15033         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
15034
15035 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
15036
15037         PR target/40587
15038         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
15039
15040 2009-07-03  Richard Guenther  <rguenther@suse.de>
15041
15042         PR tree-optimization/40640
15043         * tree-switch-conversion.c (build_arrays): Perform arithmetic
15044         in original type.
15045
15046 2009-07-03  Jan Hubicka  <jh@suse.cz>
15047
15048         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
15049         for size, reduce amount of inlining.
15050
15051 2009-07-03  Richard Guenther  <rguenther@suse.de>
15052
15053         PR middle-end/34163
15054         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
15055         if t +- x is known to not overflow and the conversion widens the
15056         operation.
15057         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
15058
15059 2009-07-03  Jan Hubicka  <jh@suse.cz>
15060
15061         * ipa-pure-const.c (analyze): Update loop optimizer init.
15062         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
15063         try_remove_empty_loop, remove_empty_loops): Remove.
15064         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
15065         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
15066         to mark regular loops as neccesary.
15067         (degenerate_phi_p): New function.
15068         (propagate_necessity, remove_dead_phis): Use it.
15069         (forward_edge_to_pdom): Likewise.
15070         (eliminate_unnecessary_stmts): Take care to remove uses of results of
15071         virtual PHI nodes that became unreachable.
15072         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
15073         * tree-flow.h (remove_empty_loops): Remove.
15074         * passes.c (init_optimization_passes): Remove.
15075
15076 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
15077
15078         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
15079         can_create_pseudo_p.
15080         (*fix_trunc<mode>_i387_1): Ditto.
15081         (*floathi<mode>2_1): Ditto.
15082         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
15083         (*fistdi2_1): Ditto.
15084         (*fist<mode>2_1): Ditto.
15085         (frndintxf2_floor): Ditto.
15086         (*fist<mode>2_floor_1): Ditto.
15087         (frndintxf2_ceil): Ditto.
15088         (*fist<mode>2_ceil_1): Ditto.
15089         (frndintxf2_trunc): Ditto.
15090         (frndintxf2_mask_pm): Ditto.
15091         (fxam<mode>2_i387_with_temp): Ditto.
15092         * config/i386/sse.md (mulv16qi3): Ditto.
15093         (*sse2_mulv4si3): Ditto.
15094         (mulv2di3): Ditto.
15095         (sse4_2_pcmpestr): Ditto.
15096         (sse4_2_pcmpistr): Ditto.
15097
15098 2009-07-03  Jan Hubicka  <jh@suse.cz>
15099
15100         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
15101         (mark_stmt_necessary): Set it.
15102         (mark_operand_necessary): Set it.
15103         (mark_control_dependent_edges_necessary): Set it.
15104         (mark_virtual_phi_result_for_renaming): New function.
15105         (get_live_post_dom): New function.
15106         (forward_edge_to_pdom): New function.
15107         (remove_dead_stmt): Fix handling of control dependences.
15108         (tree_dce_init): Init new bitmap.
15109         (tree_dce_done): Free it.
15110
15111 2009-07-02  Richard Guenther  <rguenther@suse.de>
15112
15113         PR bootstrap/40617
15114         * tree-ssa-structalias.c (new_var_info): Initialize
15115         is_restrict_var.
15116
15117 2009-07-02  Jan Hubicka  <jh@suse.cz>
15118
15119         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
15120         local.
15121
15122 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
15123
15124         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
15125         instead of recomputing it.  Adjust calls.
15126         (emit_store_flag): Adjust recursive calls.
15127
15128 2009-07-02  Richard Guenther  <rguenther@suse.de>
15129
15130         * tree-ssa-live.c (remove_unused_locals): Do not remove
15131         heap variables.
15132         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
15133         of DECL_EXTERNAL for HEAP variables.
15134         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
15135         HEAP variables.  Do not adjust RESTRICT vars.
15136         (find_what_var_points_to): Nobody cares if something
15137         points to READONLY.
15138
15139 2009-07-02  Ben Elliston  <bje@au.ibm.com>
15140
15141         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
15142         pc_low and pc_high declarations to the top of the function.
15143
15144 2009-07-01  DJ Delorie  <dj@redhat.com>
15145
15146         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
15147         registers as fixed.
15148         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
15149         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
15150         unspecified accesses to control registers.
15151         * config/mep/intrinsics.md: Regenerate.
15152         * config/mep/intrinsics.h: Regenerate.
15153         * config/mep/mep-intrin.h: Regenerate.
15154
15155 2009-07-01  Anthony Green  <green@moxielogic.com>
15156
15157         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
15158         instruction when possible.
15159         (moxie_expand_prologue): Ditto.  Also, save an instruction and
15160         some complexity by popping off of $r12 instead of $sp.
15161         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
15162         operands.
15163
15164 2009-07-01  Richard Henderson  <rth@redhat.com>
15165
15166         PR bootstrap/40347
15167         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
15168         contained no insns, reposition note before last insn.
15169
15170 2009-07-01  Richard Henderson  <rth@redhat.com>
15171
15172         PR debug/40431
15173         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
15174         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
15175
15176 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
15177
15178         PR bootstrap/40558
15179         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
15180         darwin9 for printing reg addresses with %y.
15181
15182 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
15183
15184         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
15185         truncation from operands in binary operations.
15186
15187 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
15188
15189         Revert:
15190         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
15191         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
15192         subreg of op0 to the original op0.
15193
15194         * expmed.c (store_bit_field_1): Use a temporary as the destination
15195         instead of a paradoxical subreg when we need to truncate the result.
15196
15197 2009-07-01  DJ Delorie  <dj@redhat.com>
15198
15199         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
15200         names to VLIW variants.
15201         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
15202         * config/mep/intrinsics.md: Regenerate.
15203         * config/mep/intrinsics.h: Regenerate.
15204         * config/mep/mep-intrin.h: Regenerate.
15205
15206 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
15207
15208         PR debug/40462
15209         * jump.c (returnjump_p): Revert last patch.
15210         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
15211
15212 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15213
15214         PR target/40575
15215         * pa.md (casesi32p): Use jump table label to determine the offset
15216         of the jump table.
15217         (casesi64p): Likewise.
15218
15219         * pa.c (forward_branch_p): Return bool type.  Use instruction
15220         addresses when available.  Assert that INSN has a jump label.
15221         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
15222         have a jump label.
15223
15224 2009-07-01  Richard Guenther  <rguenther@suse.de>
15225
15226         PR tree-optimization/19831
15227         * tree-ssa-dce.c (propagate_necessity): Calls to functions
15228         that only act as barriers do not make any previous stores necessary.
15229         * tree-ssa-structalias.c (handle_lhs_call): Delay making
15230         HEAP variables global, do not add a constraint from nonlocal.
15231         (find_func_aliases): Handle escapes through return statements.
15232         (compute_points_to_sets): Make escaped HEAP variables global.
15233
15234 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
15235
15236         PR bootstrap/40597
15237         * expmed.c (emit_store_flag): Perform a conversion if necessary,
15238         after reducing a DImode cstore to SImode.
15239
15240 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
15241
15242         * expr.c (expand_expr_real_1): Reinstate fallthrough to
15243         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
15244
15245 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
15246
15247         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
15248         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
15249         to 0.
15250         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
15251         and umod_optab if TARGET_BSD_DIVMOD.
15252         * config/vax/lib1funcs.asm: New file.
15253         * config/vax/t-linux: New file.
15254         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
15255
15256 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
15257
15258         PR c++/40566
15259         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
15260         to type arguments that have void type.
15261
15262         PR debug/40573
15263         * dwarf2out.c (gen_formal_parameter_die): Call
15264         equate_decl_number_to_die if node is different from origin.
15265
15266 2009-06-30  Anthony Green  <green@moxielogic.com>
15267
15268         Clean up moxie port for --enable-build-with-cxx.
15269         * config/moxie/moxie.c (moxie_function_value): First two
15270         parameters are const_tree, not tree.
15271         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
15272         (REG_CLASS_NAMES): Ditto.
15273         (REGNO_REG_CLASS): Ditto.
15274         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
15275         (moxie_function_value): Fix constyness of arguments.
15276
15277 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
15278
15279         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
15280         finalize_size_functions before further processing.
15281         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
15282         (variable_size): Call self_referential_size on size expressions
15283         that contain a PLACEHOLDER_EXPR.
15284         (size_functions): New static variable.
15285         (copy_self_referential_tree_r): New static function.
15286         (self_referential_size): Likewise.
15287         (finalize_size_functions): New global function.
15288         * tree.c: Include tree-inline.h.
15289         (push_without_duplicates): New static function.
15290         (find_placeholder_in_expr): New global function.
15291         (substitute_in_expr) <tcc_declaration>: Return the replacement object
15292         on equality.
15293         <tcc_expression>: Likewise.
15294         <tcc_vl_exp>: If the replacement object is a constant, try to inline
15295         the call in the expression.
15296         * tree.h (finalize_size_functions): Declare.
15297         (find_placeholder_in_expr): Likewise.
15298         (FIND_PLACEHOLDER_IN_EXPR): New macro.
15299         (substitute_placeholder_in_expr): Update comment.
15300         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
15301         is true.
15302         (copy_tree_body_r): Likewise.
15303         (copy_tree_body): New static function.
15304         (maybe_inline_call_in_expr): New global function.
15305         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
15306         (maybe_inline_call_in_expr): Declare.
15307         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
15308         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
15309         GIMPLE_H.
15310
15311 2009-06-30  Richard Guenther  <rguenther@suse.de>
15312
15313         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
15314         continue walking.
15315         (propagate_necessity): Do not mark reaching defs of stores
15316         as necessary.
15317
15318 2009-06-30  Jan Hubicka  <jh@suse.cz>
15319
15320         * cfgloopanal.c (check_irred): Move into ...
15321         (mark_irreducible_loops): ... here; return true if ireducible
15322         loops was found.
15323         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
15324         (analyze_function): Try to prove loop finiteness.
15325         * cfgloop.h (mark_irreducible_loops): Update prototype.
15326         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
15327
15328 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
15329
15330         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
15331
15332 2009-06-30  Ira Rosen  <irar@il.ibm.com>
15333
15334         PR tree-optimization/40542
15335         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
15336         types.
15337
15338 2009-06-30  Martin Jambor  <mjambor@suse.cz>
15339
15340         PR tree-optimization/40582
15341         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
15342         than useless_type_conversion_p.
15343         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
15344         proper place.
15345
15346 2009-06-30  Martin Jambor  <mjambor@suse.cz>
15347
15348         PR middle-end/40554
15349         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
15350
15351 2009-06-30  Richard Guenther  <rguenther@suse.de>
15352
15353         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
15354         use ao_ref references.
15355         (walk_aliased_vdefs): Likewise.
15356         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
15357         * tree-ssa-dce.c (struct ref_data): Remove.
15358         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
15359         (mark_aliased_reaching_defs_necessary): Adjust.
15360         (mark_all_reaching_defs_necessary_1): Likewise.
15361
15362 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
15363
15364         PR boostrap/40597
15365         * expmed.c (emit_cstore): New name of emit_store_flag_1.
15366         (emit_store_flag_1): Extract from emit_store_flag, adjust
15367         calls to (what now is) emit_cstore.
15368         (emit_store_flag): Call emit_store_flag_1 and also use it
15369         for what used to be recursive calls.
15370
15371 2009-06-30  Wei Guozhi  <carrot@google.com>
15372
15373         PR/40416
15374         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
15375         if the target bb post dominates from bb.
15376         * config/i386/i386.c (memory_address_length): Check existence of base
15377         register before using it.
15378
15379 2009-06-30  Nick Clifton  <nickc@redhat.com>
15380             DJ Delorie  <dj@redhat.com>
15381
15382         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
15383         __FMOVD_ENABLED__ is defined.
15384         * config/sh/sh.h
15385         (TARGET_FMOVD): Provide a default definition.
15386         (MASK_FMOVD): Likewise.
15387         (TARGET_CPU_CPP_BUILTINS): Define
15388         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
15389         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
15390         two fmov instructions depending upon whether TARGET_FMOVD is
15391         enabled.
15392         (split for DF load from memory into register): Also handle
15393         MEMs which consist of REG+DISP addressing.
15394         (split for DF store from register to memory): Likewise.
15395         * config/sh/sh.opt (mfmovd): Remove this switch.
15396         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
15397         * config/sh/sh.c (sh_override_options): Do not automatically
15398         enable TARGET_MOVD for the SH2A when supporting doubles - leave
15399         that to the -mfmovd command line switch.
15400
15401         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
15402         the SH4 and SH4A.
15403         (fldi_ok): Always allow.
15404         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
15405
15406 2009-06-29  DJ Delorie  <dj@redhat.com>
15407
15408         * doc/install.texi (mep-x-elf): Correct chip's full name.
15409
15410 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
15411
15412         * doc/extend.texi: Fix typo.
15413
15414 2009-06-29  Tom Tromey  <tromey@redhat.com>
15415
15416         * dwarf2.h: Remove.
15417         * Makefile.in (DWARF2_H): New variable.
15418         (except.o): Use it.
15419         (dwarf2out.o): Likewise.
15420         (dwarf2asm.o): Likewise.
15421         * config/i386/t-i386: Use DWARF2_H.
15422         * except.c: Include elf/dwarf2.h.
15423         * unwind-dw2.c: Include elf/dwarf2.h.
15424         * dwarf2out.c: Include elf/dwarf2.h.
15425         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
15426         <dtprel>: New field.
15427         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
15428         (size_of_loc_descr): Likewise.
15429         (output_loc_operands_raw): Likewise.
15430         (output_loc_operands): Handle new dtprel field.
15431         (loc_checksum): Update.
15432         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
15433         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
15434         * unwind-dw2-fde.c: Include elf/dwarf2.h.
15435         * dwarf2asm.c: Include elf/dwarf2.h.
15436         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
15437         * config/mmix/mmix.c: Include elf/dwarf2.h.
15438         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
15439         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
15440         * config/sh/sh.c: Include elf/dwarf2.h.
15441         * config/i386/i386.c: Include elf/dwarf2.h.
15442
15443 2009-06-29  DJ Delorie  <dj@redhat.com>
15444
15445         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
15446
15447         * doc/extend.texi: Add MeP attributes and pragmas.
15448         * doc/invoke.text: Add MeP Options.
15449         * doc/contrib.texi: Add MeP contribution.
15450         * doc/md.texi: Add MeP constraints.
15451         * doc/install.texi: Add MeP target.
15452
15453 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
15454
15455         * target.h (struct gcc_target): Add frame_pointer_required field.
15456         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
15457         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
15458         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
15459         hook.
15460         * reload1.c (update_eliminables): (Ditto.).
15461         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
15462         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
15463         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
15464
15465         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
15466
15467         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
15468         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15469         (arm_frame_pointer_required): New function.
15470
15471         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
15472         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15473         (avr_frame_pointer_required_p): Declare as static.
15474         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
15475
15476         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
15477         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15478         (bfin_frame_pointer_required): Make as static, change return type
15479         to bool.
15480         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
15481
15482         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
15483         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15484         (cris_frame_pointer_required): New function.
15485
15486         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
15487
15488         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
15489         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15490         (fr30_frame_pointer_required): New function.
15491
15492         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
15493         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15494         (frv_frame_pointer_required): Make as static, change return type
15495         to bool.
15496         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
15497
15498         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
15499         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15500         (ix86_frame_pointer_required): Make as static, change return type to
15501         bool.
15502         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
15503
15504         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
15505         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15506
15507         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
15508
15509         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
15510
15511         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
15512
15513         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
15514         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15515         (mips_frame_pointer_required): Make as static.
15516         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
15517
15518         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
15519         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15520         (mmix_frame_pointer_required): Mew function.
15521
15522         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
15523         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15524
15525         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
15526
15527         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
15528
15529         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
15530
15531         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
15532         (CAN_ELIMINATE): Redefine.
15533         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15534         (sparc_frame_pointer_required): New function.
15535         (sparc_can_eliminate): New function.
15536         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
15537
15538         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
15539         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15540
15541         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
15542         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15543         (xtensa_frame_pointer_required): Make as static, change return type
15544         to bool.
15545         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
15546         Remove.
15547
15548 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
15549
15550         * doc/plugins.texi: Document PLUGIN_START_UNIT.
15551         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
15552         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
15553         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
15554         (register_callback): Handle PLUGIN_START_UNIT.
15555         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
15556
15557 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
15558
15559         * tree.c (process_call_operands): Propagate TREE_READONLY from the
15560         operands.
15561         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
15562         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
15563
15564 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
15565
15566         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
15567         move cost.
15568
15569 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
15570
15571         * doc/extend.texi (Additional Floating Types): __float128 is also
15572         supported on i386 targets.
15573
15574 2009-06-29  Richard Guenther  <rguenther@suse.de>
15575
15576         PR middle-end/14187
15577         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
15578         flag.
15579         (pt_solutions_same_restrict_base): Declare.
15580         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
15581         flag.
15582         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
15583         (make_constraint_from, make_copy_constraint): Move earlier.
15584         (make_constraint_from_heapvar): New function.
15585         (make_constraint_from_restrict): Likewise.
15586         (handle_lhs_call): Use it.
15587         (find_func_aliases): Use it to track conversions to restrict
15588         qualified pointers.
15589         (struct fieldoff): Add only_restrict_pointers flag.
15590         (push_fields_onto_fieldstack): Initialize it.
15591         (create_variable_info_for): Track global restrict qualified pointers.
15592         (intra_create_variable_infos): Use make_constraint_from_heapvar.
15593         Track restrict qualified pointer arguments.
15594         (set_uids_in_ptset): Use varinfo is_global_var flag.
15595         (find_what_var_points_to): Set the vars_contains_restrict flag.
15596         Always create the points-to solution for sets including restrict tags.
15597         (pt_solutions_same_restrict_base): New function.
15598         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
15599         qualified pointers use pt_solutions_same_restrict_base as
15600         additional source for disambiguation.
15601
15602 2009-06-29  Richard Guenther  <rguenther@suse.de>
15603
15604         PR middle-end/38212
15605         * alias.c (find_base_decl): Remove.
15606         (get_deref_alias_set_1): Remove restrict handling.
15607         * c-common.c (c_apply_type_quals_to_decl): Do not set
15608         DECL_POINTER_ALIAS_SET.
15609         * gimplify.c (find_single_pointer_decl_1): Remove.
15610         (find_single_pointer_decl): Likewise.
15611         (internal_get_tmp_var): Remove restrict handling.
15612         (gimple_regimplify_operands): Likewise.
15613         * omp-low.c (expand_omp_atomic_pipeline): Do not set
15614         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
15615         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
15616         * tree.c (restrict_base_for_decl): Remove.
15617         (init_ttree): Do not allocate it.
15618         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
15619         LABEL_DECL_UID for label decls.
15620         (copy_node_stat): Do not copy restrict information.
15621         (decl_restrict_base_lookup): Remove.
15622         (decl_restrict_base_insert): Likewise.
15623         (print_restrict_base_statistics): Likewise.
15624         (dump_tree_statistics): Do not call print_restrict_base_statistics.
15625         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
15626         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
15627         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
15628         (LABEL_DECL_UID): Adjust.
15629         (DECL_BASED_ON_RESTRICT_P): Remove.
15630         (DECL_GET_RESTRICT_BASE): Likewise.
15631         (SET_DECL_RESTRICT_BASE): Likewise.
15632         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
15633
15634         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
15635         instead of DECL_POINTER_ALIAS_SET.
15636         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
15637         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
15638         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
15639
15640 2009-06-29  Richard Guenther  <rguenther@suse.de>
15641
15642         PR tree-optimization/40579
15643         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
15644         the IL to simplify has constants that overflowed.
15645
15646 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
15647
15648         PR tree-optimization/40550
15649         * tree-vect-generic.c (expand_vector_operations_1): Compute in
15650         vector_compute_type only when the size of vector_compute_type is
15651         less than the size of type.
15652
15653 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
15654
15655         * fold-const.c (contains_label_1): Fix comments.
15656         (contains_label_p): Do not walk trees multiple time.
15657
15658 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15659
15660         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
15661         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
15662         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
15663         ix86_fp_comparison_operator.
15664         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
15665         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
15666         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
15667         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
15668         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
15669         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
15670         (related splits): Change predicate to ix86_fp_comparison_operator.
15671         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
15672         instead of ix86_fp_comparison_codes.
15673         (ix86_trivial_fp_comparison_operator,
15674         ix86_fp_comparison_operator): New.
15675         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
15676         (ix86_expand_compare): Eliminate last two parameters.
15677         (ix86_fp_jump_nontrivial_p): Kill.
15678         * config/i386/i386.c (put_condition_code): Eliminate call to
15679         ix86_fp_comparison_codes and subsequent assertion.
15680         (ix86_fp_comparison_codes): Eliminate.
15681         (ix86_fp_swap_condition): New.
15682         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
15683         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
15684         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
15685         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
15686         and ix86_fp_swap_condition.
15687         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
15688         Use ix86_fp_comparison_strategy.
15689         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
15690         (ix86_fp_jump_nontrivial_p): Eliminate.
15691         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
15692         call to ix86_expand_compare.
15693         (ix86_split_fp_branch, ix86_expand_setcc,
15694         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
15695         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
15696
15697 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15698
15699         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
15700         related to jump_clobbers.
15701         * config/arm/arm.md (conds): Remove jump_clob case.
15702         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
15703         splits): Change comparison_operator to arm_comparison_operator.
15704         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
15705         Eliminate.
15706
15707 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15708
15709         * dojump.c (do_compare_rtx_and_jump): Try swapping the
15710         condition for floating point modes.
15711         * expmed.c (emit_store_flag_1): Move here a bigger part
15712         of emit_store_flag.
15713         (emit_store_flag): Try swapping the condition for floating point
15714         modes.
15715         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
15716
15717 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15718
15719         * expr.c (expand_expr_real_1): Just use do_store_flag.
15720         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
15721         emit_store_flag_force.
15722         * expmed.c (emit_store_flag_force): Copy here trick
15723         previously in expand_expr_real_1.  Try reversing the comparison.
15724         (emit_store_flag_1): Work if target is NULL.
15725         (emit_store_flag): Work if target is NULL, using the result mode
15726         from the comparison.  Use split_comparison, restructure final part
15727         to simplify conditionals.
15728
15729 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15730
15731         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
15732         * dojump.c (do_jump): Change handling of floating-point
15733         ops to use just do_compare_and_jump.
15734         (split_comparison): New.
15735         (do_compare_rtx_and_jump): Add here logic coming previously
15736         in do_jump, using split_comparison.
15737
15738 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
15739
15740         PR target/40489
15741         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
15742
15743 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15744
15745         * tree-ssa-alias.c: Fix unintentional commit.
15746
15747 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15748
15749         * passes.c (execute_one_pass): Fix unintentional commit.
15750
15751 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15752
15753         * df-problems.c (df_set_seen, df_unset_seen): Delete.
15754         (df_rd_local_compute, df_md_local_compute): Inline them.
15755
15756         (df_md_scratch): New.
15757         (df_md_alloc, df_md_free): Allocate/free it.
15758         (df_md_local_compute): Only include live registers in init.
15759         (df_md_transfer_function): Prune the in-set computed by
15760         the confluence function, and the gen-set too.
15761
15762 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15763
15764         PR rtl-optimization/26854
15765         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
15766         * df-problems.c (df_rd_add_problem): Fix comment.
15767         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
15768         df_md_simulate_artificial_defs_at_top,
15769         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
15770         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
15771         df_md_transfer_function, df_md_init, df_md_confluence_0,
15772         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
15773         problem_MD, df_md_add_problem): New.
15774         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
15775         df_md_get_bb_info): New.
15776         (DF_LAST_PROBLEM_PLUS1): Adjust.
15777
15778         * Makefile.in (fwprop.o): Include domwalk.h.
15779         * fwprop.c: Include domwalk.h.
15780         (reg_defs, reg_defs_stack): New.
15781         (bitmap_only_bit_between): Remove.
15782         (process_defs): New.
15783         (process_uses): Use reg_defs and local_md instead of
15784         bitmap_only_bit_between and local_rd.
15785         (single_def_use_enter_block): New, from build_single_def_use_links.
15786         (single_def_use_leave_block): New.
15787         (build_single_def_use_links): Remove code moved to
15788         single_def_use_enter_block, invoke domwalk.
15789         (use_killed_between): Adjust comment.
15790
15791 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15792
15793         * bitmap.h (bitmap_ior_and_into): New.
15794         * bitmap.c (bitmap_ior_and_into): New.
15795
15796 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15797
15798         * domwalk.h (struct dom_walk_data): Remove all callbacks except
15799         before_dom_children_before_stmts and after_dom_children_after_stmts.
15800         Rename the two remaining callbacks to just before_dom_children and
15801         after_dom_children. Remove other GIMPLE statement walking bits.
15802         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
15803         * graphite.c: Do not include domwalk.h.
15804         * tree-into-ssa.c (interesting_blocks): New global.
15805         (struct mark_def_sites_global_data): Remove it and names_to_rename.
15806         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
15807         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
15808         now that they're not domwalk callbacks.
15809         (rewrite_initialize_block): Rename to...
15810         (rewrite_enter_block): ... this, place after called functions.  Test
15811         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
15812         (rewrite_finalize_block): Rename to...
15813         (rewrite_leave_block): ... this, place after called functions.
15814         (rewrite_update_init_block): Rename to...
15815         (rewrite_update_enter_block): ... this, place after called functions.
15816         Test interesting_blocks, call rewrite_update_stmt and
15817         rewrite_update_phi_arguments.
15818         (rewrite_update_fini_block): Rename to...
15819         (rewrite_leave_block): ... this, place after called functions.
15820         (rewrite_blocks): Remove last argument, simplify initialization of
15821         walk_data.
15822         (mark_def_sites_initialize_block): Rename to...
15823         (mark_def_sites_block): ... this, call mark_def_sites.
15824         (mark_def_sites_blocks): Remove argument, simplify initialization of
15825         walk_data.
15826         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
15827         (update_ssa): Likewise.
15828         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
15829         callback.
15830         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
15831         (dom_opt_initialize_block): Rename to...
15832         (dom_opt_enter_block): ... this, place after called functions.  Walk
15833         statements here, inline propagate_to_outgoing_edges.
15834         (dom_opt_finalize_block): Rename to...
15835         (dom_opt_leave_block): ... this, place after called functions.
15836         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
15837         domwalk callback.
15838         (dse_enter_block, dse_record_phi): New.
15839         (dse_record_phis): Delete.
15840         (dse_finalize_block): Rename to...
15841         (dse_leave_block): ... this.
15842         (tree_ssa_dse): Simplify initialization of walk_data.
15843         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
15844         Adjust initialization of walk_data.
15845         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
15846         * tree-ssa-loop-phiopt.c (get_non_trapping):
15847         Adjust initialization of walk_data.
15848         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
15849         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
15850         it's not a domwalk callback.
15851         (uncprop_initialize_block): Rename to...
15852         (dse_enter_block): ... this, call uncprop_into_successor_phis.
15853         (dse_finalize_block): Rename to...
15854         (dse_leave_block): ... this.
15855         (tree_ssa_uncprop): Simplify initialization of walk_data.
15856         * Makefile.in: Adjust dependencies.
15857
15858 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
15859
15860         * arm.md (casesi): Fix test for Thumb1.
15861         (thumb1_casesi_internal_pic): Likewise.
15862         (thumb1_casesi_dispatch): Likewise.
15863
15864 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
15865
15866         * config/arm/arm-cores.def: Added core cortex-m0.
15867         * config/arm/arm-tune.md: Regenerated.
15868         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
15869
15870 2009-06-26  DJ Delorie  <dj@redhat.com>
15871
15872         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
15873
15874         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
15875         the scheduler doesn't tag jump insns.
15876
15877 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
15878
15879         * c-decl.c (merge_decls): Re-indent.
15880
15881 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
15882
15883         PR c/39902
15884         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
15885         Special-case decimal float constants.
15886
15887 2009-06-26  Richard Henderson  <rth@redhat.com>
15888
15889         * function.h (struct function): Add cannot_be_copied_reason,
15890         and cannot_be_copied_set.
15891         * tree-inline.c (has_label_address_in_static_1): Rename from
15892         inline_forbidden_p_2; don't set inline_forbidden_reason here.
15893         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
15894         don't set inline_forbidden_reason.
15895         (copy_forbidden): New function, split out of inline_forbidden_p.
15896         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
15897         (inline_forbidden_p): Use copy_forbidden.
15898         (tree_versionable_function_p): Likewise.
15899         (inlinable_function_p): Merge into tree_inlinable_function_p.
15900         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
15901         * ipa-cp.c (ipcp_versionable_function_p): New function.
15902         (ipcp_cloning_candidate_p): Use it.
15903         (ipcp_node_modifiable_p): Likewise.
15904
15905 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
15906
15907         * builtins.c (expand_builtin_alloca): Handle builtin alloca
15908         that is marked not to be inlined. Remove flag_mudflap use.
15909         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
15910         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
15911
15912 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
15913
15914         PR bootstrap/40338
15915         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
15916         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
15917
15918 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
15919
15920         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
15921         shared libgcc.
15922         (__mingwthr_remove_key_dtor): Likewise.
15923
15924 2009-06-26  Richard Guenther  <rguenther@suse.de>
15925
15926         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
15927
15928 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
15929
15930         PR middle-end/40525
15931         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
15932         try the non-cond_exec path also.
15933
15934 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15935
15936         PR target/40468
15937         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
15938         (output_cbranch): Use new functions.
15939         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
15940         Likewise.
15941
15942 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
15943             Pat Haugen  <pthaugen@us.ibm.com>
15944             Revital Eres <ERES@il.ibm.com>
15945
15946         * config/rs6000/rs6000.c (print_operand): Correct lossage message
15947         for %c error.  Add %x support to print VSX registers as a unified
15948         register set, instead of separate float and altivec registers.
15949         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
15950         %y case, and add support for VSX pre-modify addresses.
15951         (output_toc): Add assert for CONST containing an integer constant
15952         in the PLUS case.
15953         (rs6000_adjust_cost): Add POWER7 support.
15954         (insn_must_be_first_in_group): Ditto.
15955         (insn_must_be_last_in_group): Ditto.
15956         (rs6000_emit_popcount): Ditto.
15957         (rs6000_vector_mode_supported_p): Ditto.
15958
15959         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
15960         Change some of the functions called by macros to being called
15961         through a pointer, so debug functions can be inserted if
15962         -mdebug=addr or -mdebug=cost.
15963         (rs6000_preferred_reload_class_ptr): Ditto.
15964         (rs6000_secondary_reload_class_ptr): Ditto.
15965         (rs6000_secondary_memory_needed_ptr): Ditto.
15966         (rs6000_cannot_change_mode_class_ptr): Ditto.
15967         (rs6000_secondary_reload_inner): Ditto.
15968         (rs6000_legitimize_reload_address): Ditto.
15969         (rs6000_legitimize_reload_address_ptr): Ditto.
15970         (rs6000_mode_dependent_address): Ditto.
15971         (rs6000_mode_dependent_address_ptr): Ditto.
15972
15973         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
15974         function to return true if the mode allows reg + integer
15975         addresses.
15976         (virtual_stack_registers_memory_p): New function to return true if
15977         the address refers to a virtual stack register.
15978         (rs6000_legitimate_offset_address_p): Move code to say whether a
15979         mode supports reg+int addressing to reg_offset_addressing_ok_p and
15980         call it.
15981         (rs6000_legitimate_address_p): Add checks for modes that only can
15982         do reg+reg addressing.  Start adding VSX support.
15983         (rs6000_legitimize_reload_address): Ditto.
15984         (rs6000_legitimize_address): Ditto.
15985         (rs6000_debug_legitimate_address_p): New debug functions for
15986         -mdebug=addr and -mdebug=cost.
15987         (rs6000_debug_rtx_costs): Ditto.
15988         (rs6000_debug_address_costs): Ditto.
15989         (rs6000_debug_adjust_cost): Ditto.
15990         (rs6000_debug_legitimize_address): Ditto.
15991         (rs6000_legitimize_reload_address_ptr): Point to call normal
15992         function or debug function.  Make functions called via pointer
15993         static.
15994         (rs6000_mode_dependent_address_ptr): Ditto.
15995         (rs6000_secondary_reload_class_ptr): Ditto.
15996         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
15997         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
15998         into a friendlier error.
15999         (rs6000_init_builtins): Add initial VSX support.
16000         (rs6000_adjust_cost): Fix some spacing issues.
16001
16002         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
16003         (REG_CLASS_NAMES): Ditto.
16004         (REG_CLASS_CONTENTS): Ditto.
16005         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
16006         pointer, to add -mdebug=addr support.
16007         (CANNOT_CHANGE_MODE_CLASS): Ditto.
16008         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
16009         -mdebug=addr support.
16010         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
16011         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
16012         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
16013
16014         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
16015         16-bit values.
16016         (bswapsi*): Set attribute types for load/store.  Add combiner
16017         patterns to eliminate zero extend on 64-bit.
16018         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
16019         stdbrx if the hardware supports those instructions.
16020
16021 2009-06-25  Ian Lance Taylor  <iant@google.com>
16022
16023         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
16024         (Link Options): Document -static-libstdc++.
16025
16026 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16027
16028         PR target/38731
16029         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
16030         DATA_ALIGNMENT instead.
16031
16032 2009-06-25  Richard Guenther  <rguenther@suse.de>
16033
16034         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
16035         indirect references against the callused/escaped solutions.
16036         (call_may_clobber_ref_p_1): Likewise.
16037
16038 2009-06-25  Martin Jambor  <mjambor@suse.cz>
16039
16040         PR tree-optimization/40493
16041         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
16042         (enum unscalarized_data_handling): New type.
16043         (handle_unscalarized_data_in_subtree): Return what has been done.
16044         (load_assign_lhs_subreplacements): Handle left flushes differently.
16045         (sra_modify_assign): Use unscalarized_data_handling, simplified
16046         condition determining whether to remove the statement.
16047
16048 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
16049
16050         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
16051         excerpt - @ should be doubled for texinfo.
16052
16053 2009-06-24  Ian Lance Taylor  <iant@google.com>
16054
16055         * config/arc/arc.c: Include "df.h".
16056         (arc_attribute_table): Make static.  Move higher in file.
16057         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
16058         (output_shift): Initialize n later to avoid warning.
16059         * config/arm/arm.c (arm_attribute_table): Make static.  Move
16060         higher in file.
16061         * config/avr/avr.c (avr_attribute_table): Make static.  Move
16062         higher in file.
16063         (reg_class_tab): Change array type from int to enum reg_class.
16064         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
16065         LABEL_REF.
16066         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
16067         (lshrhi3_out): Likewise.
16068         (class_likely_spilled_p): Change return type to bool.
16069         (avr_rtx_costs): Use local code variable with enum type.
16070         * config/avr/avr.md (movmemhi): Use add_reg_note.
16071         (andhi3, andsi3): Don't use AS2 with "and".
16072         (iorhi3, iorsi3): Don't use AS2 with "or".
16073         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
16074         * config/crx/crx.c: Include "df.h".
16075         (crx_attribute_table): Make static.
16076         * config/m32r/m32r.c: Include "df.h".
16077         (m32r_attribute_table): Make static.  Move higher in file.
16078         (pop): Use add_reg_note.
16079         (block_move_call): Change 0 to LCT_NORMAL in function call.
16080         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
16081         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
16082         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
16083         declare, not just when TREE_CODE is defined.
16084         * config/m68hc11/m68hc11.c: Include "expr.h".
16085         (m68hc11_attribute_table): Make static.  Move higher in file.
16086         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
16087         function call.
16088         (m68hc11_register_indirect_p): Likewise.
16089         (m68hc11_function_arg_padding): Change return type to enum
16090         direction.
16091         (emit_move_after_reload): Use add_reg_note.
16092         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
16093         (m68hc11_split_logical): Likewise.
16094         (m68hc11_rtx_costs): Add local code_and outer_code variables with
16095         enum type.
16096         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
16097         to VOIDmode in function call.
16098         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
16099         tree is defined.
16100         (m68hc11_split_logical): Update declaration.
16101         (m68hc11_function_arg_padding): Update declaration.
16102         * config/mcore/mcore.c (regno_reg_class): Change form array of int
16103         to array of enum reg_class.
16104         (mcore_attribute_table): Make static.  Move higher in file.
16105         (mcore_rtx_costs): Add cast to enum type.
16106         * config/mcore/mcore.h (regno_reg_class): Update declaration.
16107         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
16108         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
16109         in file.
16110         * config/sh/predicates.md (trapping_target_operand): Rename and to
16111         and_expr.
16112         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
16113         higher in file.
16114         * config/spu/spu.c (spu_attribute_table): Make static.  Move
16115         higher in file.
16116         * config/v850/v850.c (v850_attribute_table): Make static.  Move
16117         higher in file.
16118         (v850_rtx_costs): Use local code with enum type.
16119         (expand_epilogue): Add cast.
16120         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
16121
16122 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
16123
16124         PR target/40515
16125         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
16126         -m2a-single-only and -m2a-nofpu.
16127         * config/sh/sh.opt: Document m2a generates FPU code.
16128
16129 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
16130
16131         * defaults.h (CAN_ELIMINATE): Provide default.
16132         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
16133         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
16134         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
16135         * config/spu/spu.h (CAN_ELIMINATE): Delete.
16136         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
16137         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
16138         * config/cris/cris.h (CAN_ELIMINATE): Delete.
16139         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
16140         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
16141         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
16142
16143 2009-06-24  DJ Delorie  <dj@redhat.com>
16144
16145         * mep-ext-cop.cpu: Fix copyright notice.
16146         * mep-default: Fix copyright notice.
16147         * mep-core: Fix copyright notice.
16148         * mep: Fix copyright notice.
16149         * mep-ivc2: Fix copyright notice.
16150         * mep-c5: Fix copyright notice.
16151
16152 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
16153
16154         * doc/contrib.texi (Contributors):
16155
16156 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
16157
16158         PR middle-end/40501
16159         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
16160         src and dst operands if necessary.
16161
16162 2009-06-23  DJ Delorie  <dj@redhat.com>
16163
16164         Add MeP port.
16165         * config.gcc: Add mep support.
16166         * recog.c: Resurrect validate_replace_rtx_subexp().
16167         * recog.h: Likewise.
16168         * config/mep/: Add new port:
16169         * config/mep/constraints.md: New file.
16170         * config/mep/default.h: New file.
16171         * config/mep/intrinsics.h: New file.
16172         * config/mep/intrinsics.md: New file.
16173         * config/mep/ivc2-template.h: New file.
16174         * config/mep/mep-c5.cpu: New file.
16175         * config/mep/mep-core.cpu: New file.
16176         * config/mep/mep-default.cpu: New file.
16177         * config/mep/mep-ext-cop.cpu: New file.
16178         * config/mep/mep-intrin.h: New file.
16179         * config/mep/mep-ivc2.cpu: New file.
16180         * config/mep/mep-lib1.asm: New file.
16181         * config/mep/mep-lib2.c: New file.
16182         * config/mep/mep-pragma.c: New file.
16183         * config/mep/mep-protos.h: New file.
16184         * config/mep/mep-tramp.c: New file.
16185         * config/mep/mep.c: New file.
16186         * config/mep/mep.cpu: New file.
16187         * config/mep/mep.h: New file.
16188         * config/mep/mep.md: New file.
16189         * config/mep/mep.opt: New file.
16190         * config/mep/predicates.md: New file.
16191         * config/mep/t-mep: New file.
16192
16193 2009-06-23  Ian Lance Taylor  <iant@google.com>
16194
16195         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
16196         from loose_warn into c_loose_warn and from strict_warn into
16197         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
16198         --enable-build-with-cxx.  Set and substitute
16199         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
16200         * Makefile.in (CXXFLAGS): New variable.
16201         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
16202         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
16203         the default is the same as $(STRICT_WARN).
16204         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
16205         (CXX): New variable.
16206         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
16207         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
16208         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
16209         (HOST_LIBS): New variable.
16210         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
16211         (ALL_CXXFLAGS): New variable.
16212         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
16213         * doc/install.texi (Configuration): Document
16214         --enable-build-with-cxx, --with-stage1-ldflags,
16215         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
16216         * configure: Rebuild.
16217
16218 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16219
16220         * config/arm/arm.c (arm_override_options): Fix braces and formatting
16221         from previous commit.
16222
16223 2009-06-23  Ian Lance Taylor  <iant@google.com>
16224
16225         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
16226
16227 2009-06-23  Ian Lance Taylor  <iant@google.com>
16228
16229         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
16230         with ATTRIBUTE_UNUSED.
16231
16232 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
16233             Pat Haugen  <pthaugen@us.ibm.com>
16234             Revital Eres  <eres@il.ibm.com>
16235
16236         * config.in (HAVE_AS_POPCNTD): Add default definition.
16237         (HAVE_AS_LWSYNC): Ditto.
16238
16239         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
16240         release number.
16241         (gcc_cv_as_powerpc_cmpb): Ditto.
16242         (gcc_cv_as_powerpc_dfp): Ditto.
16243         (gcc_cv_as_powerpc_vsx): Ditto.
16244         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
16245         supporting the popcntd/lwsync instructions.
16246         (gcc_cv_as_powerpc_lwsync): Ditto.
16247         * configure: Regenerate.
16248
16249         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
16250         -mcpu=native and -mcpu=power7.
16251         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
16252
16253         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
16254         a variable instead of a mask to reduce the number of mask bits.
16255         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
16256         (-mbit-word): Ditto.
16257         (-mregnames): Ditto.
16258         * config/rs6000/rs6000.opt (-mupdate): Ditto.
16259         (-mfused-madd): Ditto.
16260
16261         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
16262         2.06 instructions.
16263         (-mvsx): New switch for VSX instructions.
16264         (-misel): Move from a variable to a mask to allow it to be set by
16265         -mcpu=.
16266
16267         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
16268         function declaration to an array declaration.
16269         (rs6000_hard_regno_nregs): New external array declaration.
16270
16271         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
16272         files included by rs6000.md.
16273
16274         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
16275         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
16276
16277         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
16278         a target mask.
16279         (rs6000_debug_reg): New -mdebug= variables.
16280         (rs6000_debug_addr): Ditto.
16281         (rs6000_debug_cost): Ditto.
16282         (rs6000_pmode): New variable to hold Pmode.
16283         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
16284         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
16285         calculated at compiler start.
16286         (rs6000_hard_regno_nregs): Change function to an array which holds
16287         HARD_REGNO_NREGS calculated at compiler start.
16288         (rs6000_explicit_options): Delete isel field.
16289         (rs6000_vector_unit): New array to hold which vector unit
16290         supports arithmetic options for a given type.
16291         (rs6000_vector_mem): New array to hold which vector unit supports
16292         memory reference operations for a given type.
16293         (rs6000_vector_align): New array to given the alignment of each
16294         vector type.
16295         (power7_cost): New basic costs for power7.
16296         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
16297         (rs6000_hard_regno_nregs_internal): New function, moved from
16298         HARD_REGNO_NREGS, to calculate the number of registers each hard
16299         register takes for each type.
16300         (rs6000_debug_reg_print): New function for -mdebug=reg support.
16301         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
16302         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
16303         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
16304         unit information here so it is calculated once at compiler startup
16305         time.
16306         (rs6000_override_options): Make -misel a target mask.  Add more
16307         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
16308         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
16309         -mdebug=cost.
16310         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
16311         (rs6000_handle_option): Move -misel from variable to target mask.
16312         (rs6000_builtin_mask_for_load): Add VSX support.
16313         (rs6000_conditional_register_usage): Ditto.
16314         (USE_ALTIVEC_FOR_ARG_P): Ditto.
16315         (function_arg_boundary): Ditto.
16316         (rs6000_expand_builtin): Ditto.
16317         (def_builtin): Make abort message a little friendlier.
16318         (rs6000_emit_int_cmove): Add support for 64-bit isel.
16319
16320         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
16321         assembler support the popcntd instruction instead of a vsx
16322         instruction to enable power7 support.
16323         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
16324         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
16325         option to the assembler if -mcpu=native.
16326         (ASM_CPU_NATIVE_SPEC): Ditto.
16327         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
16328         ISA 2.06 features.
16329         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
16330         the lwsync instruction.
16331         (enum processor_type): Add PROCESSOR_POWER7.
16332         (rs6000_debug_reg): New -mdebug= options.
16333         (rs6000_debug_addr): Ditto.
16334         (rs6000_debug_cost): Ditto.
16335         (rs6000_isel): Delete.
16336         (enum rs6000_vector): New enum to say what vector unit we have.
16337         (VECTOR_UNIT_*): New macros to say which vector unit has
16338         arithmetic operations for a given type.
16339         (VECTOR_MEM_*): New macros to say which vector unit has memory
16340         operations for a given type.
16341         (TARGET_LDBRX): Whether the machine supports the ldbrx
16342         instruction.
16343         (TARGET_ISEL): Delete, -misel moved to be a mask.
16344         (TARGET_ISEL64): New macro for 64-bit isel support.
16345         (UNITS_PER_VSX_WORD): New macro.
16346         (POINTER_SIZE): Move to be an external variable, rather than
16347         calculating whether we are generating 32 ot 64-bit code.
16348         (Pmode): Ditto.
16349         (STACK_BOUNDARY): Add VSX support.
16350         (LOCAL_ALIGNMENT): Ditto.
16351         (SLOW_UNALIGNED_ACCESS): Ditto.
16352         (VSX_REGNO_P): New macro for VSX support.
16353         (VFLOAT_REGNO_P): Ditto.
16354         (VINT_REGNO_P): Ditto.
16355         (VLOGICAL_REGNO_P): Ditto.
16356         (VSX_VECTOR_MODE): Ditto.
16357         (VSX_SCALAR_MODE): Ditto.
16358         (VSX_MODE): Ditto.
16359         (VSX_MOVE_MODE): Ditto.
16360         (VSX_REG_CLASS_P): Ditto.
16361         (HARD_REGNO_NREGS): Instead of calling a function, use an array
16362         lookup.
16363         (UNITS_PER_SIMD_WORD): Add VSX support.
16364         (MODES_TIEABLE_P): Ditto.
16365         (STARTING_FRAME_OFFSET): Ditto.
16366         (STACK_DYNAMIC_OFFSET): Ditto.
16367         (EPILOGUE_USES): Ditto.
16368         (REGNO_REG_CLASS): Move to array lookup.
16369         (CLASS_MAX_NREGS): Ditto.
16370         (rs6000_vector_reg_class): Add declaration.
16371         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
16372         overlap with the floating point and Altivec registers.
16373
16374         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
16375
16376         * config/rs6000/driver-rs6000.c (asm_names): New static array to
16377         give the appropriate asm switches if -mcpu=native.
16378         (host_detect_local_cpu): Add support for "asm".
16379         (host_detect_local_cpu): Follow GNU code guidelines for name.
16380
16381         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
16382         -mbit-word to a variable instead of being a target mask.
16383
16384         * config/rs6000/sync.md (lwsync): If the assembler supports it,
16385         emit the lwsync instruction instead of emitting the instruction as
16386         an integer constant.
16387
16388         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
16389         fixuns_trundfsi2, move expander into rs6000.md.
16390
16391         * config/rs6000/rs6000.md (cpu): Add power7.
16392         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
16393         (logical predicate patterns): Change the single instruction
16394         primitives that set CR0 to be fast_compare instead of compare.
16395         (norsi*): Ditto.
16396         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
16397         (popcntddi2): Ditto.
16398         (popcount<mode>): Ditto.
16399         (floating multiply/add insns): Name the floating point
16400         multiply/add insns.
16401         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
16402         (isel_unsigned_<mode>): Ditto.
16403         (fixuns_trundfsi2): Move expander here from spe.md.
16404         (smindi3): Define if we have -misel on 64-bit systems.
16405         (smaxdi3): Ditto.
16406         (umindi3): Ditto.
16407         (umaxdi3): Ditto.
16408
16409 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
16410
16411         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
16412         extra_objs.
16413         * config/avr/avr.c (avr_current_device): New variable.
16414         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
16415         (avr_arch, mcu_type_s): Move to avr.h.
16416         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
16417         default_data_section_start fields.
16418         (avr_arch): Moved from avr.c.
16419         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
16420         library_name fields.
16421         (avr_current_device, avr_mcu_types, avr_arch_types,
16422         avr_device_to_arch, avr_device_to_data_start,
16423         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
16424         (EXTRA_SPEC_FUNCTIONS): Define.
16425         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
16426         options mapping. Use device_to_arch and device_to_data_start insted.
16427         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
16428         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
16429         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
16430         * config/avr/driver-avr.c: New file.
16431         * config/avr/avr-devices.c: New file.
16432
16433 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
16434
16435         * var-tracking.c (unshare_variable): Force initialized to
16436         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
16437         (set_variable_part): Likewise.
16438         (struct variable_union_info): Remove pos_src field.
16439         (vui_vec, vui_allocated): New variables.
16440         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
16441         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
16442         == 1 use a simpler sorting algorithm.  Compute pos field right
16443         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
16444         Avoid quadratic comparison if !flag_var_tracking_uninit.
16445         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
16446         unshare_variable unconditionally.
16447         (dataflow_set_different_2): Removed.
16448         (dataflow_set_different): Don't traverse second hash table.
16449         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
16450         unconditionally to var_reg_set or var_mem_set.
16451         (emit_notes_in_bb): Likewise.
16452         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
16453         unshare_variable.
16454         (emit_note_insn_var_location): Don't set initialized to
16455         VAR_INIT_STATUS_INITIALIZED early.
16456         (vt_finalize): Free vui_vec if needed, clear vui_vec and
16457         vui_allocated.
16458         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
16459
16460         * tree-object-size.c (addr_object_size): Instead of checking
16461         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
16462         are no FIELD_DECLs following it.
16463
16464 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
16465
16466         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
16467         order to match bswaps with signed source operands.
16468
16469 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
16470
16471         * sdbout.c (sdbout_one_type): Fix braces in switch.
16472
16473 2009-06-23  Richard Guenther  <rguenther@suse.de>
16474
16475         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
16476         member.
16477         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
16478         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
16479         var_callused, callused_tree, var_storedanything, storedanything_tree,
16480         var_integer, integer_tree): Remove global variables.
16481         (new_var_info): Do not pass new id, append the new var to the
16482         global variable vector.
16483         (do_ds_constraint): Use is_global_var member of the variable-info.
16484         (new_scalar_tmp_constraint_exp): Adjust.
16485         (create_function_info_for): Likewise.
16486         (create_variable_info_for): Likewise.
16487         (find_what_var_points_to): Remove dead code.
16488         (init_base_vars): Simplify.
16489         (compute_points_to_sets): Adjust.
16490
16491 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
16492
16493         * combine.c (try_combine): Dump information about the insns we're
16494         combining.
16495
16496 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
16497
16498         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
16499         check when calling force_to_mode on TRUNCATE's operand.
16500
16501 2009-06-22  Ian Lance Taylor  <iant@google.com>
16502
16503         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
16504
16505 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
16506
16507         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
16508
16509 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16510
16511         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
16512         override library linkage flags such as -static-libgcc or
16513         -shared-libgcc.
16514
16515 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
16516
16517         * config/m68k/m68k-devices.def: Add line for MCF5221x.
16518
16519 2009-06-22  Ian Lance Taylor  <iant@google.com>
16520
16521         * config/linux.opt: Put mglibc ahead of muclibc.
16522
16523         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
16524         for duplicate decls.
16525
16526 2009-06-22  Matthias Klose  <doko@ubuntu.com>
16527
16528         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
16529
16530 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
16531
16532         PR objc/28050
16533         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
16534         instead of NULL if a parser error occurs.
16535
16536 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
16537
16538         * dwarf2out.c (dwarf2_debug_hooks): Initialize
16539         non-DWARF2_DEBUGGING_INFO version.
16540
16541 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
16542
16543         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
16544         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
16545
16546         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
16547         (LIBGCC2_TF_CEXT): Define.
16548         (TF_SIZE): Define.
16549
16550 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16551
16552         PR target/40463
16553         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
16554
16555 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16556
16557         * config/arm/arm.c (arm_override_options): Disable
16558         -mcaller-super-interworking and -mcallee-super-interworking.
16559         * doc/invoke.texi (ARM Options): Document this.
16560
16561 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
16562
16563         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
16564         * config/arm/constraints.md (j): New constraint for movw operands.
16565         (N): Remove thumb2 meaning.
16566         * config/arm/arm.md (*arm_movw): Delete.
16567         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
16568         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
16569         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
16570
16571 2009-06-22  Martin Jambor  <mjambor@suse.cz>
16572
16573         PR tree-optimization/40492
16574         * tree-sra.c (sra_modify_assign): Pass zero offsets to
16575         build_ref_for_offset.
16576
16577 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
16578
16579         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
16580         JUMP_TABLE_DATA_P predicates where applicable.
16581         * auto-inc-dec.c: Ditto.
16582         * builtins.c: Ditto.
16583         * caller-save.c: Ditto.
16584         * calls.c: Ditto.
16585         * cfgcleanup.c: Ditto.
16586         * cfglayout.c: Ditto.
16587         * cfgrtl.c: Ditto.
16588         * combine.c: Ditto.
16589         * combine-stack-adj.c: Ditto.
16590         * cse.c: Ditto.
16591         * cselib.c: Ditto.
16592         * dbxout.c: Ditto.
16593         * df-scan.c: Ditto.
16594         * dse.c: Ditto.
16595         * dwarf2asm.c: Ditto.
16596         * dwarf2out.c: Ditto.
16597         * emit-rtl.c: Ditto.
16598         * except.c: Ditto.
16599         * explow.c: Ditto.
16600         * expmed.c: Ditto.
16601         * expr.c: Ditto.
16602         * final.c: Ditto.
16603         * function.c: Ditto.
16604         * fwprop.c: Ditto.
16605         * gcse.c: Ditto.
16606         * genpreds.c: Ditto.
16607         * genrecog.c: Ditto.
16608         * ifcvt.c: Ditto.
16609         * ira-costs.c: Ditto.
16610         * ira-lives.c: Ditto.
16611         * jump.c: Ditto.
16612         * loop-iv.c: Ditto.
16613         * lower-subreg.c: Ditto.
16614         * modulo-sched.c: Ditto.
16615         * optabs.c: Ditto.
16616         * postreload.c: Ditto.
16617         * print-rtl.c: Ditto.
16618         * recog.c: Ditto.
16619         * reginfo.c: Ditto.
16620         * regmove.c: Ditto.
16621         * reload1.c: Ditto.
16622         * reload.c: Ditto.
16623         * reorg.c: Ditto.
16624         * rtlanal.c: Ditto.
16625         * rtl.c: Ditto.
16626         * sched-vis.c: Ditto.
16627         * sdbout.c: Ditto.
16628         * sel-sched-ir.c: Ditto.
16629         * simplify-rtx.c: Ditto.
16630         * targhooks.c: Ditto.
16631         * var-tracking.c: Ditto.
16632         * vmsdbgout.c: Ditto.
16633
16634 2009-06-22  Matthias Klose  <doko@ubuntu.com>
16635
16636         * Makefile.in (install-plugin): Always use DESTDIR.
16637
16638 2009-06-22  Olivier Hainque  <hainque@adacore.com>
16639
16640         * config/pa/pa.c (output_call): Don't optimize post call jumps
16641         into return address adjustments if the call may throw.
16642
16643 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
16644
16645         * arm.c (thumb1_output_casesi): New function.
16646         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
16647         optimizing for size or PIC.
16648         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
16649         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
16650         (casesi): Handle Thumb-1 when optimizing for size or PIC.
16651         (thumb1_casesi_internal_pic): New expand rule.
16652         (thumb1_casesi_dispatch): New pattern.
16653         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
16654         thumb-1 mode.
16655         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
16656         in the text seciton when PIC or optimizing for size.
16657         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
16658         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
16659         preservation properties of code.
16660         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
16661         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
16662         (__gnu_thumb1_case_si): New function.
16663         * t-arm (LIB1ASMSRC): Define here.
16664         (LIB1ASMFUNCS): Add some common functions.
16665         * t-arm-elf (LIB1ASMSRC): Delete.
16666         (LIB1ASMFUNCS): Append to existing set.
16667         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16668         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16669         * t-symbian (LIB1ASMFUNCS): Likewise.
16670         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16671         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16672
16673 2009-06-21  Richard Guenther  <rguenther@suse.de>
16674
16675         PR tree-optimization/38729
16676         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
16677         to loops with a single exit if -fno-expensive-optimizations.
16678
16679 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
16680
16681         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
16682         (dataflow_set): Change vars type from htab_t to shared_hash.
16683         (shared_hash_pool, empty_shared_hash): New variables.
16684         (vars_clear): Removed.
16685         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
16686         shared_hash_find_slot_unshare, shared_hash_find_slot,
16687         shared_hash_find_slot_noinsert, shared_hash_find): New
16688         static inlines.
16689         (shared_hash_unshare, shared_hash_destroy): New functions.
16690         (unshare_variable): Unshare set->vars if shared, use
16691         shared_hash_htab.
16692         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
16693         (get_init_value, find_src_set_src, dump_dataflow_set,
16694         clobber_variable_part, emit_notes_for_differences): Use
16695         shared_hash_htab.
16696         (dataflow_set_init): Remove second argument, set vars to
16697         empty_shared_hash instead of creating a new htab.
16698         (dataflow_set_clear): Call shared_hash_destroy and set vars
16699         to empty_shared_hash instead of calling vars_clear.
16700         (dataflow_set_copy): Don't call vars_copy, instead just share
16701         the src htab with dst.
16702         (variable_union): Use shared_hash_*, use initially NO_INSERT
16703         lookup if set->vars is shared.  Don't keep slot cleared before
16704         calling unshare_variable.  Unshare set->vars if needed.
16705         Even ->refcount == 1 vars must be unshared if set->vars is shared
16706         and var needs to be modified.
16707         (variable_canonicalize): New function.
16708         (dataflow_set_union): If dst->vars is empty, just share src->vars
16709         with dst->vars and traverse with variable_canonicalize to canonicalize
16710         and unshare what is needed.
16711         (dataflow_set_different): If old_set and new_set use the same shared
16712         htab, they aren't different.  If number of htab elements is different,
16713         htabs are different.  Use shared_hash_*.
16714         (dataflow_set_destroy): Call shared_hash_destroy instead of
16715         htab_delete.
16716         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
16717         second argument to dataflow_set_init.
16718         (vt_initialize): Likewise.  Initialize shared_hash_pool and
16719         empty_shared_hash, move bb in/out initialization afterwards.
16720         Use variable_htab_free instead of NULL as changed_variables del hook.
16721         (variable_was_changed): Change type of second argument to pointer to
16722         dataflow_set.  When inserting var into changed_variables, bump
16723         refcount.  Unshare set->vars if set is shared htab and slot needs to
16724         be cleared.
16725         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
16726         lookup if set->vars is shared.  Unshare set->vars if needed.
16727         Even ->refcount == 1 vars must be unshared if set->vars is shared
16728         and var needs to be modified.  Adjust variable_was_changed caller.
16729         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
16730         vars must be unshared if set->vars is shared and var needs to be
16731         modified.  Adjust variable_was_changed caller.
16732         (emit_note_insn_var_location): Don't pool_free var.
16733         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
16734         instead of 1.
16735         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
16736         free_alloc_pool on shared_hash_pool.
16737
16738 2009-06-20  Anthony Green  <green@moxielogic.com>
16739
16740         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
16741         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
16742
16743 2009-06-20  Richard Guenther  <rguenther@suse.de>
16744
16745         * tree-ssa-structalias.c (find_func_aliases): For memset use
16746         a constraint from NULL if we memset to zero.
16747         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
16748         we explicitly handle that do not read from memory.
16749         (call_may_clobber_ref_p_1): Properly handle builtins that may
16750         set errno.
16751
16752 2009-06-20  Richard Guenther  <rguenther@suse.de>
16753
16754         PR tree-optimization/40495
16755         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
16756         (new_scalar_tmp_constraint_exp): New function.
16757         (process_constraint): Do not create temporary decls.
16758         (process_all_all_constraints): Likewise.
16759         (handle_const_call): Likewise.
16760         (create_function_info_for): Do not set decl.
16761
16762 2009-06-19  Ian Lance Taylor  <iant@google.com>
16763
16764         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
16765         (rs6000_attribute_table): Make static; move before use.
16766
16767 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
16768
16769         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
16770         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
16771         Propagate the TREE_READONLY flag without overwriting it.
16772         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
16773         Propagate the TREE_READONLY flag onto the result.
16774         (process_call_operands): Move around.  Use correct constant value.
16775
16776 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16777
16778         PR target/40482
16779         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
16780         * config/arm/arm.md: Likewise.
16781
16782 2009-06-19  Ian Lance Taylor  <iant@google.com>
16783
16784         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
16785         to GIMPLE_ERROR_MARK.
16786
16787         * c-typeck.c (build_conditional_expr): Add op1_original_type and
16788         op2_original_type parameters.  Warn about using different enum types.
16789         * c-parser.c (c_parser_conditional_expression): Pass original
16790         types to build_conditional_expr.
16791         * c-tree.h (build_conditional_expr): Update declaration.
16792
16793 2009-06-19  Ian Lance Taylor  <iant@google.com>
16794
16795         * config/i386/i386.c (ix86_function_specific_save): Test that
16796         fields match values, rather than testing the values are in a
16797         certain range.
16798
16799 2009-06-19  Richard Guenther  <rguenther@suse.de>
16800
16801         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
16802         ADDR_EXPR pointers.
16803         (ptr_derefs_may_alias_p): Likewise.
16804         (ptr_deref_may_alias_ref_p_1): New function.
16805         (ptr_deref_may_alias_ref_p): Likewise.
16806         (ref_maybe_used_by_call_p_1): Handle builtins that are not
16807         covered by looking at the ESCAPED solution.
16808         (call_may_clobber_ref_p_1): Likewise.
16809         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
16810         Handle NULL_TREE offset.  Do not produce redundant constraints.
16811         (process_all_all_constraints): New helper function.
16812         (do_structure_copy): Use it.
16813         (handle_lhs_call): Likewise.
16814         (find_func_aliases): Handle some builtins with pointer arguments
16815         and/or return values explicitly.
16816
16817 2009-06-19  Ian Lance Taylor  <iant@google.com>
16818
16819         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
16820
16821 2009-06-19  Ian Lance Taylor  <iant@google.com>
16822
16823         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
16824
16825 2009-06-19  Ian Lance Taylor  <iant@google.com>
16826
16827         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
16828         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
16829         version.
16830
16831         * c-decl.c (finish_decl): If -Wc++-compat, warn about
16832         uninitialized const.
16833
16834 2009-06-19  Ian Lance Taylor  <iant@google.com>
16835
16836         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
16837         all uses.
16838
16839         * c-decl.c (in_struct, struct_types): Remove.
16840         (struct c_binding): Add in_struct field.
16841         (c_binding_ptr): Define type, along with VEC.
16842         (struct c_struct_parse_info): Define.
16843         (struct_parse_info): New static variable.
16844         (bind): Initialize in_struct field.
16845         (start_struct): Remove enclosing_in_struct and
16846         enclosing_struct_types parameters.  Add
16847         enclosing_struct_parse_info parameter.  Change all callers.  Set
16848         struct_parse_info rather than in_struct and struct_types.
16849         (grokfield): If -Wc++-compat and there is a symbol binding for the
16850         field name, set the in_struct flag and push it on the
16851         struct_parse_info->fields vector.
16852         (warn_cxx_compat_finish_struct): New static function.
16853         (finish_struct): Remove enclosing_in_struct and
16854         enclosing_struct_types parameters.  Add
16855         enclosing_struct_parse_info parameter.  Change all callers.  Don't
16856         set C_TYPE_DEFINED_IN_STRUCT here.  Call
16857         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
16858         parameter.  Only push on struct_types if warn_cxx_compat.
16859         (finish_enum): Only push on struct_types if warn_cxx_compat.
16860         (declspecs_add_type): Add loc parameter.  Change all callers.
16861         Change all error calls to error_at.  Pass loc, not input_location,
16862         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
16863         defined in a struct.  If -Wc++-compat and parsing a struct, record
16864         that a typedef name was used.
16865         * c-parser.c (c_parser_declspecs): Get location to pass to
16866         declspecs_add_type.
16867         (c_parser_struct_or_union_specifier): Update calls to start_struct
16868         and finish_struct.
16869         * c-tree.h (struct c_struct_parse_info): Declare.
16870         (finish_struct, start_struct): Update declarations.
16871         (declspecs_add_type): Update declaration.
16872
16873 2009-06-19  Ian Lance Taylor  <iant@google.com>
16874
16875         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
16876         variable with an anonymous type.
16877
16878 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
16879
16880         * see.c: Remove for real.
16881
16882 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
16883
16884         * optabs.h (enum optab_index): Add new OTI_significand.
16885         (significand_optab): Define corresponding macro.
16886         * optabs.c (init_optabs): Initialize significand_optab.
16887         * genopinit.c (optabs): Implement significand_optab using
16888         significand?f2 patterns.
16889         * builtins.c (expand_builtin_mathfn): Handle
16890         BUILT_IN_SIGNIFICAND{,F,L}.
16891         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
16892         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
16893
16894         * config/i386/i386.md (significandxf2, significand<mode>2): New
16895         expanders to implement significandf, significand and significandl
16896         built-ins as inline x87 intrinsics.
16897
16898 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
16899
16900         * config/avr/avr.c (avr_override_options): Remove setting value of
16901         PARAM_INLINE_CALL_COST.
16902
16903 2009-06-18  Richard Henderson  <rth@redhat.com>
16904
16905         PR 40488
16906         * tree-pass.h (TDF_ASMNAME): New.
16907         * tree-dump.c (dump_options): Add asmname.
16908         * doc/invoke.texi: Document it.
16909
16910         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
16911         (dump_decl_name): ...here.
16912         (dump_function_name): New flags arg; mind TDF_ASMNAME.
16913         (dump_generic_node): Update dump_function_name calls.
16914         (print_call_name): New flags arg; update all dump calls.
16915         * diagnostic.h (print_call_name): Update.
16916         * gimple-pretty-print.c (dump_gimple_call): Update.
16917
16918 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
16919
16920         PR target/40470
16921         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
16922
16923 2009-06-18  Diego Novillo  <dnovillo@google.com>
16924
16925         * doc/plugins.texi: Document plugin_is_GPL_compatible.
16926         * plugin.c (str_license): Declare.
16927         (try_init_one_plugin): Assert that the symbol
16928         'plugin_is_GPL_compatible' exists.
16929
16930 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
16931
16932         * see.c: Remove.
16933         * Makefile.in (OBJS-common): Remove see.o.
16934         (see.o): Remove.
16935         * common.opt (fsee): Mark as preserved for backward compatibility.
16936         * opts.c (common_handle_option): Add OPT_fsee to the backward
16937         compatibility section.
16938         * passes.c (init_optimization_passes, pass_see): Remove pass.
16939         * timevar.def (TV_SEE): Remove.
16940         * tree-pass.h (pass_see): Remove declaration.
16941         * doc/invoke.texi (-fsee): Remove documentation.
16942
16943 2009-06-18  Martin Jambor  <mjambor@suse.cz>
16944
16945         * tree-sra.c: Include statistics.h
16946         (sra_stats): New variable.
16947         (sra_initialize): Clear sra_stats.
16948         (create_access_replacement): Increment sra_stats.replacements.
16949         (get_access_replacement): Do not return twice.
16950         (analyze_all_variable_accesses): Increment statistics counter by the
16951         number of scalarized aggregates.
16952         (generate_subtree_copies): Increment sra_stats.subtree_copies.
16953         (sra_modify_expr): Increment sra_stats.exprs.
16954         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
16955         (sra_modify_assign): Increment sra_stats.exprs,
16956         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
16957         (perform_intra_sra): Update statistics counters.
16958         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
16959
16960 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
16961
16962         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
16963         (arm_scalar_mode_supported_p): New function.
16964
16965 2009-06-18  Paul Brook  <paul@codesourcery.com>
16966             Sandra Loosemore  <sandra@codesourcery.com>
16967
16968         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
16969         (__extendhfsf2, __truncsfhf2): Define.
16970         * config/arm/fp16.c: New file.
16971         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
16972         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
16973
16974 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
16975
16976         * doc/extend.texi (Half-Precision): New section.
16977         * doc/invoke.texi (Option Summary): List -mfp16-format.
16978         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
16979         * config/arm/arm.opt (mfp16-format=): New.
16980         * config/arm/arm.c: Include intl.h.
16981         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
16982         (TARGET_INVALID_RETURN_TYPE): Redefine.
16983         (TARGET_PROMOTED_TYPE): Redefine.
16984         (TARGET_CONVERT_TO_TYPE): Redefine.
16985         (arm_fp16_format): Define.
16986         (all_fpus): Add entry for neon-fp16.
16987         (fp_model_for_fpu): Likewise.
16988         (struct fp16_format): Declare.
16989         (all_fp16_formats): Define.
16990         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
16991         functions.
16992         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
16993         and no ldrh.
16994         (arm_legitimate_index_p): Treat HFmode like HImode.
16995         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
16996         (coproc_secondary_reload_class): Special-case HFmode.
16997         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
16998         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
16999         (arm_init_fp16_builtins): New.
17000         (arm_init_builtins): Call it.
17001         (arm_invalid_parameter_type): New.
17002         (arm_invalid_return_type): New.
17003         (arm_promoted_type): New.
17004         (arm_convert_to_type).
17005         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
17006         format.
17007         (arm_emit_fp16_const): New function.
17008         (arm_mangle_type): Mangle __fp16 as "Dh".
17009         * config/arm/arm.h (TARGET_VFPD32): Make it know about
17010         FPUTYPE_NEON_FP16.
17011         (TARGET_NEON_FP16): New.
17012         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
17013         (enum fputype): Add FPUTYPE_NEON_FP16.
17014         (enum arm_fp16_format_type): Declare.
17015         (arm_fp16_format): Declare.
17016         (LARGEST_EXPONENT_IS_NORMAL): Define.
17017         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
17018         * config/arm/arm-modes.def (HFmode): Define.
17019         * config/arm/vfp.md (*movhf_vfp): New.
17020         (extendhfsf2): New.
17021         (truncsfhf2): New.
17022         * config/arm/arm.md (fpu): Add neon_fp16.
17023         (floatsihf2, floatdihf2): New.
17024         (fix_trunchfsi2, fix_trunchfdi2): New.
17025         (truncdfhf2): New.
17026         (extendhfdf2): New.
17027         (movhf): New.
17028         (*arm32_movhf): New.
17029         (*thumb1_movhf): New.
17030         (consttable_2): Add check for HFmode constants.
17031         (consttable_4): Handle HFmode constants.
17032
17033 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
17034
17035         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
17036
17037 2009-06-17  Olivier Hainque  <hainque@adacore.com>
17038
17039         * collect2.c (main): Use CONST_CAST2 to perform char ** to
17040         const char ** conversion in AIX specific section.
17041
17042 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
17043
17044         * config/i386/i386.c (ix86_special_builtin_type): Remove
17045         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
17046         (bdesc_special_args): Updated.
17047         (ix86_init_mmx_sse_builtins): Likewise.
17048         (ix86_expand_special_args_builtin): Likewise.
17049
17050 2009-06-17  Richard Henderson  <rth@redhat.com>
17051
17052         * tree-pretty-print.c (maybe_dump_asm_name): New.
17053         (dump_decl_name): Use it.
17054         (PRINT_FUNCTION_NAME): Merge into...
17055         (dump_function_name): ... here.  Use maybe_dump_asm_name.
17056
17057 2009-06-17  Cary Coutant  <ccoutant@google.com>
17058
17059         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
17060         Change caller.
17061         * debug.c (struct gcc_debug_hooks): Change placeholder for
17062         source_line hook.
17063         (debug_nothing_int_charstar_int): Replaced by...
17064         (debug_nothing_int_charstar_int_bool): ...this.
17065         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
17066         source_line prototype.
17067         (debug_nothing_int_charstar_int): Replaced by...
17068         (debug_nothing_int_charstar_int_bool): ...this.
17069         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
17070         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
17071         Output is_stmt operand when necessary.
17072         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
17073         (notice_source_line): Add is_stmt parameter.
17074         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
17075         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
17076         Change callers.
17077         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
17078         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
17079
17080 2009-06-17  Ian Lance Taylor  <iant@google.com>
17081
17082         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
17083         Change all uses.
17084         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
17085         call uses.
17086
17087 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
17088
17089         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
17090         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
17091         tree_strip_sign_nop_conversions and
17092         tree_ssa_strip_useless_type_conversions rather than stripping
17093         the operations here.
17094         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
17095         Declare them.
17096         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
17097         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
17098         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
17099         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
17100         functions.
17101
17102 2009-06-17  Michael Eager  <eager@eagercon.com>
17103
17104         * config/rs6000/constraints.md (register_constraint "d"): New.
17105         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
17106         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
17107         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
17108         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
17109         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
17110         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
17111         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
17112         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
17113         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
17114         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
17115         __fctiwz): Same.
17116         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
17117         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
17118         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
17119         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
17120         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
17121         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
17122         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
17123         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
17124         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
17125         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
17126         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
17127         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
17128         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
17129         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
17130
17131 2009-06-16  Ian Lance Taylor  <iant@google.com>
17132
17133         * profile.c (total_num_never_executed): Don't define.
17134         (compute_branch_probabilities): Don't count or print
17135         num_never_executed.
17136         (init_branch_prob): Don't set total_num_never_executed.
17137         (end_branch_prob): Don't print total_num_never_executed.
17138
17139 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
17140
17141         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
17142
17143 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
17144
17145         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
17146         (nabstd2_fpr): Same.
17147
17148 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
17149
17150         * expr.c (expand_assignment): Change complex type check.
17151
17152 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
17153
17154         * doc/plugins.texi (Building GCC plugins): Added new section.
17155
17156 2009-06-17  Ian Lance Taylor  <iant@google.com>
17157
17158         * c-pch.c (get_ident): Don't set size of templ array.
17159         (pch_init): Don't set size of partial_pch array.
17160
17161         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
17162         string constant to intialize an array whose size is the length of
17163         the string.
17164
17165 2009-06-17  Richard Guenther  <rguenther@suse.de>
17166
17167         PR tree-optimization/40389
17168         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
17169         to addressable types.
17170         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
17171
17172 2009-06-17  Richard Guenther  <rguenther@suse.de>
17173
17174         PR middle-end/40460
17175         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
17176         if there is no evolution of left in the loop bail out.
17177         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
17178         chrec_fold_multiply.
17179
17180 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
17181             Janis Johnson  <janis187@us.ibm.com>
17182
17183         PR target/39254
17184         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
17185         for the symbol ref of a constant that is the source of a move
17186         - nor for any other not-obvious-label-ref constants.
17187
17188 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
17189
17190         * plugin.c (position_pass): Skip newly inserted pass during list
17191         traversal to avoid repeated insertion.
17192
17193 2009-06-16  Ian Lance Taylor  <iant@google.com>
17194
17195         * vec.h (VEC_stack_alloc): Define different version if
17196         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
17197         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
17198         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
17199         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
17200
17201 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
17202
17203         * config.gcc (extra_headers): Add ia32intrin.h for x86.
17204
17205         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
17206         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
17207         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
17208         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
17209         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
17210         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
17211         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
17212         (bdesc_special_args): Add __builtin_ia32_rdtsc and
17213         __builtin_ia32_rdtscp.
17214         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
17215         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
17216         and __builtin_ia32_rorhi.
17217         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
17218         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
17219         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
17220         (ix86_expand_args_builtin): Likewise.
17221         (ix86_expand_special_args_builtin): Likewise.
17222
17223         * config/i386/i386.md (UNSPECV_RDTSCP): New.
17224         (UNSPECV_RDTSC): Likewise.
17225         (UNSPECV_RDPMC): Likewise.
17226         (*bsr): Renamed to ...
17227         (bsr): This
17228         (*bsr_rex64): Renamed to ...
17229         (bsr_rex64): This.
17230         (rdpmc): New.
17231         (*rdpmc): Likewise.
17232         (*rdpmc_rex64): Likewise.
17233         (rdtsc): Likewise.
17234         (*rdtsc): Likewise.
17235         (*rdtsc_rex64): Likewise.
17236         (rdtscp): Likewise.
17237         (*rdtscp): Likewise.
17238         (*rdtscp_rex64): Likewise.
17239
17240         * config/i386/ia32intrin.h: New.
17241
17242         * config/i386/x86intrin.h: Include <ia32intrin.h>.
17243
17244 2009-06-16  Ian Lance Taylor  <iant@google.com>
17245
17246         * ira-build.c (copy_info_to_removed_store_destinations):
17247         Initialize parent_a.
17248
17249 2009-06-16  Ian Lance Taylor  <iant@google.com>
17250
17251         * c-decl.c (grokdeclarator): Change size_varies to bool.
17252
17253 2009-06-16  Ian Lance Taylor  <iant@google.com>
17254
17255         * sel-sched.c: Make forward declarations of move_op_hooks and
17256         fur_hooks explicitly extern.
17257
17258 2009-06-16  Ian Lance Taylor  <iant@google.com>
17259
17260         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
17261         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
17262
17263 2009-06-16  Ian Lance Taylor  <iant@google.com>
17264
17265         * resource.c (mark_referenced_resources): Change
17266         include_delayed_effects parameter to bool.  Change all callers.
17267         (mark_end_of_function_resources): Likewise.
17268         * reorg.c (insn_references_resource_p): Likewise.
17269         (insn_sets_resource_p): Likewise.
17270         * resource.h (mark_referenced_resources): Update declaration.
17271         (mark_end_of_function_resources): Update declaration.
17272
17273 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
17274
17275         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
17276
17277 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
17278
17279         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
17280         GCC can bootstrap on AIX with GNU Binutils 2.20.
17281
17282 2009-06-16  Ian Lance Taylor  <iant@google.com>
17283
17284         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
17285
17286 2009-06-16  Ian Lance Taylor  <iant@google.com>
17287
17288         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
17289         inline, not extern inline.
17290         (exact_log2): Likewise.
17291         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
17292         test CLZ_HWI.
17293         (exact_log2): Likewise, but don't test CTZ_HWI.
17294
17295 2009-06-16  Ian Lance Taylor  <iant@google.com>
17296
17297         * bitmap.c (bitmap_clear): Don't declare as inline.
17298         * gimple.c (gimplify_assign): Likewise.
17299         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
17300         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
17301         (sched_scan_info): Remove duplicate definition.
17302
17303 2009-06-16  Ian Lance Taylor  <iant@google.com>
17304
17305         * c-common.c (skip_evaluation): Don't define.
17306         (c_inhibit_evaluation_warnings): Define global variable.
17307         (overflow_warning): Check c_inhibit_evaluation_warnings rather
17308         than skip_evaluation.
17309         (convert_and_check, warn_for_div_by_zero): Likewise.
17310         * c-common.h (skip_evaluation): Don't declare.
17311         (c_inhibit_evaluation_warnings): Declare.
17312         * c-parser.c (c_parser_typeof_specifier): Set
17313         c_inhibit_evaluation_warnings rather than skip_evaluation.
17314         (c_parser_conditional_expression): Likewise.
17315         (c_parser_binary_expression): Likewise.
17316         (c_parser_sizeof_expression): Likewise.
17317         (c_parser_alignof_expression): Likewise.
17318         * c-typeck.c (build_indirect_ref): Check
17319         c_inhibit_evaluation_warnings rather than skip_evaluation.
17320         (build_conditional_expr, build_binary_op): Likewise.
17321
17322 2009-06-16  Richard Guenther  <rguenther@suse.de>
17323
17324         * tree-ssa-alias.c (is_escape_site): Remove.
17325         * tree-ssa-alias.h (enum escape_type): Remove.
17326         (is_escape_site): Likewise.
17327         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
17328         via casts and asms without deferring to is_escape_site.
17329
17330 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
17331
17332         PR middle-end/40446
17333         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
17334         use gen_lowpart if op0 has complex mode.
17335
17336 2009-06-16  Richard Guenther  <rguenther@suse.de>
17337
17338         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
17339         variables add them to ESCAPED.
17340         (find_func_aliases): Do not make all indirectly stored values escaped.
17341
17342 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
17343
17344         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
17345         make_decl_one_only.
17346
17347 2009-06-16  Martin Jambor  <mjambor@suse.cz>
17348
17349         PR tree-optimization/40432
17350         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
17351         check whether we need to force gimple register operand.
17352
17353 2009-06-16  Martin Jambor  <mjambor@suse.cz>
17354
17355         PR tree-optimization/40413
17356         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
17357         build_ref_for_offset.
17358         (propagate_subacesses_accross_link): Fix a typo in a comment.
17359
17360 2009-06-16  Ira Rosen  <irar@il.ibm.com>
17361
17362         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
17363         with additional parameter.
17364         * tree-vectorizer.h (enum vect_def_type): Add new value
17365         vect_nested_cycle.
17366         (enum vect_relevant): Add comments.
17367         (vect_is_simple_reduction): Add new argument.
17368         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
17369         Detect nested cycles.
17370         (vect_is_simple_reduction): Update documentation, add an argument to
17371         distinguish inner-loop reduction from nested cycle, detect nested
17372         cycles, fix printings and indentation, don't swap operands in case
17373         of nested cycle.
17374         (get_initial_def_for_reduction): Handle subtraction.
17375         (vect_create_epilog_for_reduction): Add new argument to specify
17376         reduction variable.
17377         (vect_finalize_reduction): Handle subtraction, fix comments.
17378         (vectorizable_reduction): Handle nested cycles. In case of nested
17379         cycle keep track of the reduction variable position. Call
17380         vect_is_simple_reduction with additional parameter. Use original
17381         statement code in reduction epilogue for nested cycle. Call
17382         vect_create_epilog_for_reduction with additional parameter.
17383         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
17384         inner-loop vectorization.
17385         (vect_recog_widen_sum_pattern): Likewise.
17386         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
17387         and reductions.
17388         (vect_mark_stmts_to_be_vectorized): Likewise.
17389         (vect_get_vec_def_for_operand): Handle nested cycles.
17390
17391 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17392
17393         * doc/invoke.texi (Debugging Options): Fix option index entries
17394         for -fdump-statistics, -frandom-seed add entries for
17395         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
17396         (FRV Options): Fix entries for -mTLS, -mtls.
17397         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
17398         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
17399         (M68hc1x Options): Fix @itemx for -mnominmax.
17400         (MCore Options): Fix entry for -mno-lsim.
17401         (MMIX Options): Fix entry for -mabi=mmixware.
17402         (PDP-11 Options): Fix entry for -mbcopy-builtin.
17403
17404 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
17405
17406         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
17407         Mention the plugin mode of gengtype.
17408         * doc/gty.texi (Source Files Containing Type Information): Likewise.
17409         * gengtype.c: Updated copyright.
17410         (plugin_files, nb_plugin_files) Added new static variables.
17411         (measure_input_list) Care about plugin_files.
17412         (write_rtx_next): Added early return in plugin mode.
17413         (create_file): Updated copyright year in generated file. Added
17414         asserts.
17415         (oprintf): Added early return if NULL outf.
17416         (get_output_file_with_visibility): Care of plugin_files.
17417         (get_output_file_name): May return null.
17418         (write_local): Added early return.
17419         (put_mangled_filename): Ditto.
17420         (finish_root_table): Added check for base_files.
17421         (write_roots): Care about null when plugins.
17422         (main): Added plugin mode.
17423
17424 2009-06-15  Ian Lance Taylor  <iant@google.com>
17425
17426         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
17427         * gcov.c (read_count_file): Add braces around variables declared
17428         before label.
17429
17430         * c.opt (Wjump-misses-init): New warning.
17431         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
17432         -Wall and -Wc++-compat if not already set.
17433         (c_common_post_options): Clear warn_jump_misses_init if it was not
17434         set.
17435         * c-decl.c (struct c_binding): Change type field to a union with
17436         new label field.  Make it the first field in the struct.  Update
17437         references to type to use u.type instead.
17438         (struct c_spot_bindings): Define.
17439         (struct c_goto_bindings): Define.
17440         (c_goto_bindings_p): Define, along with VECs.
17441         (struct c_label_vars): Define.
17442         (struct c_scope): Add has_label_bindings field.
17443         (bind_label, set_spot_bindings): New static functions.
17444         (decl_jump_unsafe, update_spot_bindings): New static functions.
17445         (update_label_decls): New static function.
17446         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
17447         Update binding u.label field to shadowed field.
17448         (c_binding_start_stmt_expr): New function.
17449         (c_binding_end_stmt_expr): New function.
17450         (pushdecl): Don't call c_begin_vm_scope.
17451         (make_label): Add defining and p_label_vars parameters.  Change
17452         all callers.
17453         (lookup_label): Correct test for whether a label has not yet been
17454         defined.  Call bind_label rather than bind.
17455         (warn_about_goto): New static function.
17456         (lookup_label_for_goto): New function.
17457         (declare_label): Call bind_label rather than bind.
17458         (check_earlier_gotos): New static function.
17459         (define_label): Don't give errors about jumping into statement
17460         expressions or scopes of variably modified types.  Call
17461         set_spot_bindings and check_earlier_gotos.  Call bind_label
17462         instead of bind.  Don't set label_context_stack_se or
17463         label_context_stack_vm.
17464         (c_get_switch_bindings): New function.
17465         (c_release_switch_bindings): New function.
17466         (c_check_switch_jump_warnings): New function.
17467         (start_function): Don't set label_context_stack_se or
17468         label_context_stack_vm.
17469         (finish_function): Likewise.
17470         * c-typeck.c (label_context_stack_se): Don't define.
17471         (label_context_stack_vm): Don't define.
17472         (c_finish_goto_label): Call lookup_label_for_goto rather than
17473         lookup_label.  Don't give errors about jumping into a statement
17474         expression or the scope of a variably modified type.  Don't set
17475         label_context_stack_se or label_context_stack_vm.
17476         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
17477         fields.  Add bindings field.
17478         (c_start_case): Don't set deleted fields.  Set bindings field.
17479         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
17480         or blocked_vm.  Call c_check_switch_jump_warnings.
17481         (c_finish_case): Don't test blocked_stmt_expr field.  Call
17482         c_release_switch_bindings.
17483         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
17484         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
17485         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
17486         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
17487         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
17488         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
17489         (c_begin_vm_scope, c_end_vm_scope): Don't define.
17490         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
17491         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
17492         (C_DECL_UNJUMPABLE_VM): Don't define.
17493         (C_DECL_UNDEFINABLE_VM): Don't define.
17494         (struct c_label_list): Don't define.
17495         (struct c_label_context_se): Don't define.
17496         (struct c_label_context_vm): Don't define.
17497         (struct c_spot_bindings): Declare.
17498         (c_bindings_start_stmt_expr): Declare.
17499         (c_bindings_end_stmt_expr): Declare.
17500         (lookup_label_for_goto): Declare.
17501         (c_get_switch_bindings, c_release_switch_bindings): Declare.
17502         (c_check_switch_jump_warnings): Declare.
17503         (label_context_stack_se, label_context_stack_vm): Don't declare.
17504         (c_finish_goto_label): Update declaration.
17505         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
17506         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
17507         (Warning Options): Document -Wjump-misses-init.
17508
17509 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
17510
17511         * tree-object-size.c (addr_object_size): Fix a pasto in the last
17512         change.
17513
17514 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
17515
17516         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
17517
17518 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
17519
17520         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
17521
17522 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
17523
17524         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
17525
17526 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
17527
17528         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
17529         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
17530         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
17531         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
17532         * dwarf2asm.c (dw2_force_const_mem): Update call to
17533         make_decl_one_only.
17534         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
17535         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
17536         * langhooks.c (lhd_comdat_group): Remove.
17537         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
17538         * tree.h (DECL_COMDAT_GROUP): New.
17539         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
17540         (tree_decl_with_vis): Add comdat_group. Remove one_only.
17541         (make_decl_one_only): Change signature.
17542         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
17543         make_decl_one_only.
17544         (make_decl_one_only): Change signature.
17545         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
17546
17547 2009-06-15  Richard Guenther  <rguenther@suse.de>
17548
17549         PR middle-end/40439
17550         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
17551
17552 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
17553
17554         * tree-ssa-math-opts.c: Remove extra divide.
17555
17556 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
17557
17558         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
17559
17560 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
17561
17562         * passes.c: Add bswap pass.
17563         * tree-pass.h: Add pass_optimize_bswap declaration.
17564         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
17565         Include rtl.h, expr.h and optabs.h for optab_handler check.
17566         (struct symbolic_number, pass_optimize_bswap): New definition.
17567         (do_shift_rotate, verify_symbolic_number_p): New functions.
17568         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
17569         (gate_optimize_bswap): New function.
17570         * tree.c (widest_int_cst_value): New function.
17571         * tree.h (widest_int_cst_value): Prototype added.
17572
17573 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
17574
17575         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
17576         REG_EQUAL/REG_EQUIV notes.
17577
17578 2009-06-14  Richard Guenther  <rguenther@suse.de>
17579
17580         PR middle-end/40389
17581         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
17582         has its address taken if NRV was applied and it is addressable.
17583         * tree-ssa-structalias.c (get_constraint_for_address_of): New
17584         function split out from ...
17585         (get_constraint_for_1): ... here.
17586         (handle_rhs_call): Use it to mark the return slot escaped if
17587         it is addressable and NRV was applied.
17588
17589 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
17590
17591         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
17592         Change first argument type to location_t.
17593         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
17594         Do not set input_location.
17595         Use loc instead of input_location throughout.
17596
17597 2009-06-13  Richard Guenther  <rguenther@suse.de>
17598
17599         PR tree-optimization/40421
17600         * tree-predcom.c (should_unroll_loop_p): Remove.
17601         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
17602
17603 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
17604
17605         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
17606         Add location argument.
17607
17608 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
17609
17610         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
17611         build_decl.
17612         * config/s390/s390.c (s390_build_builtin_va_list): Same.
17613         (s390_gimplify_va_arg): Pass location to create_artificial_label.
17614         * config/spu/spu-protos.h: Add location to
17615         spu_resolve_overloaded_builtin.
17616         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
17617         spu_build_builtin_va_list.
17618         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
17619         argument.  Pass location to build_function_call_vec.
17620         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
17621         build_decl.
17622         (emit_fpu_switch): Same.
17623         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
17624         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
17625         to build_decl and create_artificial_label.
17626         (xtensa_gimplify_va_arg_expr): Same.
17627         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
17628         (xstormy16_gimplify_va_arg_expr): Same.
17629         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
17630         * config/arm/arm.c (arm_build_builtin_va_list): Same.
17631         * config/mips/mips.c (mips_build_builtin_va_list): Same.
17632         (mips16_build_function_stub): Same.
17633         (mips16_build_call_stub): Same.
17634
17635 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
17636
17637         PR target/40327
17638         * arm/constraints.md (Pa, Pb): New constraints.
17639         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
17640         split pattern to deal with them.
17641
17642 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
17643
17644         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
17645         fix index entry for -Xpreprocessor.
17646
17647 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
17648
17649         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
17650         Add location argument to build_decl call.
17651         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
17652         (rs6000_init_builtins): Same.
17653         (spe_init_builtins): Same.
17654         (rs6000_gimplify_va_arg): Add location argument to
17655         create_artificial_label call.
17656
17657 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
17658
17659         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
17660         * combine-stack-adj.c (pass_stack_adjustments): Use it.
17661         * Makefile.in: Fix GGC dependency for gcse.o.
17662
17663 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
17664
17665         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
17666         * gimple-pretty-print.c (dump_gimple_stmt): Same.
17667         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
17668         created.
17669         * c-parser.c (c_parser_binary_expression): Use current column while
17670         building binary operations.
17671         * common.opt (fshow-column): Enable by default.
17672         * tree-vrp.c (check_array_ref): Use warning_at.
17673         (check_array_bounds): Use location from call back if expr has no
17674         location.
17675         * tree.h: Add location argument to maybe_fold_*.
17676         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
17677         (maybe_fold_offset_to_array_ref): Add location argument and use it.
17678         (maybe_fold_offset_to_component_ref): Same.
17679         (maybe_fold_offset_to_reference): Same.
17680         (maybe_fold_offset_to_address): Same.
17681         (maybe_fold_stmt_indirect): Same.
17682         (maybe_fold_stmt_addition): Same.
17683         (fold_stmt_r): Pass location to maybe_fold_*.
17684         (fold_gimple_assign): Same.
17685         * c-tree.h: Add location argument to finish_decl,
17686         default_function_array_conversion, store_init_value.
17687         * c-decl.c (define_label): Use error_at.
17688         (c_make_fname_decl): Pass location to finish_decl.
17689         (finish_decl): New location argument.
17690         (build_compound_literal): Pass location to store_init_value.
17691         (grokdeclarator): Pass location to finish_decl.
17692         (grokfield): Same.
17693         * c-typeck.c (array_to_pointer_conversion): New location argument.
17694         (function_to_pointer_conversion): Same.
17695         (default_function_array_conversion): Same.
17696         (parser_build_unary_op): Pass location to overflow_warning.
17697         (parser_build_binary_op): Same.  Use warning_at.
17698         (build_unary_op): Pass location to array_to_pointer_conversion.
17699         (build_c_cast): Pass location to digest_init.
17700         (build_modify_expr): New location argument.
17701         (convert_for_assignment): Same.
17702         (store_init_value): Same.
17703         (digest_init): Same.
17704         (output_init_element): Pass location to digest_init and
17705         array_to_pointer_conversion.
17706         (c_finish_return): Pass location to convert_for_assignment.
17707         * gimplify.c (gimplify_conversion): Pass location to
17708         maybe_fold_offset_to_address.
17709         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
17710         to maybe_fold_stmt_addition.
17711         * c-omp.c (c_finish_omp_atomic): Pass new location to
17712         build_modify_expr.
17713         (c_finish_omp_for): Same.
17714         * c-common.c (overflow_warning): New argument.
17715         * c-common.h: New argument to build_modify_expr, overflow_warning.
17716         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
17717         finish_decl.
17718         (c_parser_initializer): Pass location to
17719         default_function_array_conversion.
17720         (c_parser_initelt): Same.
17721         (c_parser_initval): Same.
17722         (c_parser_asm_operands): Same.
17723         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
17724         (c_parser_conditional_expression): Same.
17725         (c_parser_binary_expression): Add location info to stack.  Use it.
17726         (c_parser_unary_expression): Pass location to
17727         default_function_array_conversion, parser_build_unary_op,
17728         build_indirect_ref, c_parser_postfix_expression_after_primary.
17729         (c_parser_postfix_expression_after_primary): New location argument.
17730         Use it.
17731         (c_parser_expression_conv): Pass location to
17732         default_function_array_conversion.
17733         (c_parser_expr_list): Same.
17734         (c_parser_omp_atomic): Same.
17735         (c_parser_omp_for_loop): Same.
17736         * c-tree.h (struct c_declarator): Add comment to id_loc.
17737         (build_array_declarator): New argument.
17738         * c-decl.c (build_array_declarator): Add location argument.
17739         (grokdeclarator): Set id_loc for cdk_array.
17740         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
17741         build_array_declarator.
17742         * tree.c (build_omp_clause): Add location argument.
17743         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
17744         (OMP_CLAUSE_LOCATION): New macro.
17745         (struct tree_omp_clause): Add location field.
17746         (build_omp_clause): Add argument.
17747         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
17748         build_omp_clause.
17749         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
17750         (cp_parser_omp_clause_collapse): Same.
17751         (cp_parser_omp_clause_default): Same.
17752         (cp_parser_omp_clause_if): Same.
17753         (cp_parser_omp_clause_nowait): Same.
17754         (cp_parser_omp_clause_num_threads): Same.
17755         (cp_parser_omp_clause_ordered): Same.
17756         (cp_parser_omp_clause_schedule): Same.
17757         (cp_parser_omp_clause_untied): Same.
17758         (cp_parser_omp_for_loop): Same.
17759         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
17760         * c-tree.h (c_start_case): Add location argument.
17761         (c_process_expr_stmt): Same.
17762         (c_finish_goto_*): Same.
17763         * tree-parloops.c (initialize_reductions): Pass location to
17764         build_omp_clause.
17765         (create_parallel_loop): Same.
17766         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
17767         (gfc_trans_omp_reduction_list): Same.
17768         (gfc_trans_omp_clauses): Same.
17769         (gfc_trans_omp_do): Same.
17770         * c-typeck.c (c_finish_goto_label): Same.
17771         (c_finish_goto_ptr): New location argument.
17772         (c_start_case): Same.
17773         (emit_side_effect_warnings): Same.
17774         (c_process_expr_stmt): Same.
17775         (c_finish_stmt_expr): Same.
17776         (c_finish_omp_clauses): Use error_at instead of error.
17777         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
17778         build_omp_clause.
17779         * c-omp.c (c_split_parallel_clauses): New location argument.
17780         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
17781         to build_omp_clause.
17782         (convert_local_reference_stmt): Same.
17783         (convert_gimple_call): Same.
17784         * c-common.h (c_split_parallel_clauses): New argument.
17785         * c-parser.c (c_parser_statement_after_labels): Pass location to
17786         c_finish_goto_label.
17787         (c_parser_switch_statement): Pass location to c_start_case.
17788         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
17789         and c_process_expr_stmt.
17790         (c_parser_omp_variable_list): Add location argument.
17791         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
17792         (c_parser_omp_clause_default): Same.
17793         (c_parser_omp_clause_if): Same.
17794         (c_parser_omp_clause_num_threads): Same.
17795         (-c_parser_omp_clause_ordered): Same.
17796         (c_parser_omp_clause_reduction): Pass location to
17797         c_parser_omp_variable_list.
17798         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
17799         (c_parser_omp_clause_untied): Same.
17800         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
17801         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
17802
17803         * c-tree.h (check_for_loop_decls, undeclared_variable,
17804         build_component_ref, build_array_ref, build_external_ref,
17805         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
17806         build_conditional_expr, build_compound_expr, c_cast_expr,
17807         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
17808         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
17809         argument.
17810         * c-semantics.c (build_stmt): Same.
17811         (build_case_label): Same.
17812         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
17813         (undeclared_variable): New argument.
17814         (make_label): Same.
17815         (lookup_label): Pass location on down.
17816         (define_label): Same.
17817         (finish_decl): Same.
17818         (build_compound_literal): Same.
17819         (finish_struct): Same.
17820         (finish_function): Do not set location here.
17821         (check_for_loop_decls): New argument.
17822         * tree.c (save_expr): Set location.
17823         (build_empty_stmt): New argument.
17824         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
17825         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
17826         * builtins.c (gimplify_va_arg_expr): Use locations.
17827         (expand_builtin_sync_operation): Same.
17828         * c-typeck.c (build_component_ref): New argument.
17829         (build_array_ref): Same.
17830         (build_external_ref): Same.
17831         (c_expr_sizeof_expr): Same.
17832         (c_expr_sizeof_type): Same.
17833         (parser_build_unary_op): Same.
17834         (build_conditional_expr): Same.
17835         (build_compound_expr): Pass location on down.
17836         (build_compound_expr): New argument.
17837         (build_c_cast): Same.
17838         (c_cast_expr): Same.
17839         (build_asm_expr): Same.
17840         (c_finish_return): Same.
17841         (c_process_expr_stmt): Pass location on down.
17842         (c_finish_stmt_expr): New argument.
17843         (push_clenaup): Same.
17844         (c_finish_omp_parallel): Same.
17845         (c_finish_omp_task): Same.
17846         * gimplify.c (gimplify_call_expr): Pass location on down.
17847         * c-omp.c (c_finish_omp_master): New argument.
17848         (c_finish_omp_critical): Same.
17849         (c_finish_omp_ordered): Same.
17850         (c_finish_omp_barrier): Same.
17851         (-c_finish_omp_taskwait): Same.
17852         (c_finish_omp_atomic): Same.
17853         (c_finish_omp_flush): Same.
17854         * tree-inline.c (copy_tree_body_r): Pass location on down.
17855         (inline_forbidden_p): Remove use of input_location.
17856         * c-gimplify.c (c_build_bind_expr): New argument.
17857         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
17858         (c_sizeof_or_alignof_type): New argument.
17859         (c_alignof_expr): Same.
17860         (build_va_arg): Same.
17861         (c_add_case_label): Same.
17862         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
17863         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
17864         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
17865         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
17866         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
17867         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
17868         New argument.
17869         * stub-objc.c (objc_build_selector_expr): Same.
17870         (objc_build_throw_stmt): Same.
17871         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
17872         (c_parser_initelt): Same.
17873         (c_parser_compound_statement): Same.
17874         (c_parser_compound_statement_nostart): Same.
17875         (c_parser_label): Same.
17876         (c_parser_statement_after_labels): Same.
17877         (c_parser_if_body): Same.
17878         (c_parser_else_body): Same.
17879         (c_parser_if_statement): Same.
17880         (c_parser_switch_statement): Same.
17881         (c_parser_while_statement): Same.
17882         (c_parser_do_statement): Same.
17883         (c_parser_for_statement): Same.
17884         (c_parser_asm_statement): Same.
17885         (c_parser_conditional_expression): Same.
17886         (c_parser_binary_expression): Same.
17887         (c_parser_cast_expression): Same.
17888         (c_parser_unary_expression): Same.
17889         (c_parser_sizeof_expression): Same.
17890         (c_parser_alignof_expression): Same.
17891         (c_parser_postfix_expression): Same.
17892         (c_parser_expression): Same.
17893         (c_parser_objc_receiver): Same.
17894         (c_parser_omp_variable_list): Same.
17895         (c_parser_omp_structured_block): Same.
17896         (c_parser_omp_atomic): New argument.
17897         (c_parser_omp_barrier): Same.
17898         (c_parser_omp_critical): Same.
17899         (c_parser_omp_flush): Pass location on down.
17900         (c_parser_omp_for_loop): New argument.
17901         (c_parser_omp_for): Same.
17902         (c_parser_omp_master): Same.
17903         (c_parser_omp_ordered): Same.
17904         (c_parser_omp_sections_scope): Same.
17905         (c_parser_omp_sections): Same.
17906         (c_parser_omp_parallel): Same.
17907         (c_parser_omp_single): Same.
17908         (c_parser_omp_task): Same.
17909         (c_parser_omp_taskwait): Pass location on down.
17910         (c_parser_omp_construct): Same.
17911         (c_parser_omp_threadprivate): Same.
17912         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
17913         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
17914         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
17915         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
17916         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
17917         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
17918         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
17919         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
17920         config/i386/i386.c, stmt.c:
17921         Add location argument to the following function definitions and/or
17922         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
17923         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
17924         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
17925         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
17926         do_case, c_finish_bc_stmt, build_compound_literal,
17927         build_function_call.
17928         * c-decl.c (build_compound_literal): Add location argument.
17929         Make all diagnostic calls use location.
17930         (start_struct): Same.
17931         (finish_struct): Same.
17932         (start_enum): Same.
17933         (build_enumerator): Same.
17934         (start_function): Same.
17935         (grokdeclarator): Make all diagnostic calls use location.
17936         (store_parm_decls_oldstyle): Same.
17937         * c-typeck.c (build_function_call): Add location argument.
17938         Make all diagnostic calls use location.
17939         (do_case): Same.
17940         (c_finish_bc_stmt): Same.
17941         * tree-nested.c (get_trampoline_type): Add argument.
17942         Pass location to build_decl.
17943         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
17944         * rtl.h (RTL_LOCATION): New.
17945         * c-common.c (c_add_case_label): Add location argument.
17946         Make all diagnostic calls use location.
17947         * c-common.h: Add location argument to make_fname_decl, do_case,
17948         c_add_case_label, build_function_call, resolve_overloaded_builtin.
17949         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
17950         Set it appropriately for every case.  Pass enum_loc to start_enum
17951         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
17952         parser_xref_tag.
17953         (c_parser_struct_or_union_specifier): Save location.  Use it for
17954         start_struct, finish_struct, and parser_xref_tag.
17955
17956 2009-06-12  Ian Lance Taylor  <iant@google.com>
17957
17958         * fold-const.c (fold_unary): Rename local variable and to and_expr.
17959
17960         * c-opts.c (c_common_handle_option): For -Wc++-compat set
17961         cpp_opts->warn_cxx_operator_names.
17962
17963 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17964
17965         PR tree-opt/38865
17966         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
17967         is returns NULL and OP is a VCE, look through the VCE.
17968
17969 2009-06-12  Ian Lance Taylor  <iant@google.com>
17970
17971         PR bootstrap/40430
17972         * collect2.c (main): Use CONST_CAST2 in code inside #if
17973         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
17974
17975 2009-06-12  Joey Ye  <joey.ye@intel.com>
17976
17977         PR middle-end/39146
17978         * cfgexpand.c (get_decl_align_unit): Update
17979         max_used_stack_slot_alignment with align instead of
17980         stack_alignment_needed.
17981
17982         * function.c (assign_stack_local_1): Update
17983         max_used_stack_slot_alignment with alignment_in_bits instead
17984         of stack_alignment_needed.
17985         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
17986         here.
17987
17988 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
17989
17990         * dwarf2out.c (last_var_location_insn): New variable.
17991         (dwarf2out_end_epilogue): Clear last_var_location_insn.
17992         (dwarf2out_var_location): Don't record anything after last real
17993         insn.  Only change labels if there were any real instructions
17994         in between last note and this one, or if changed sections.
17995
17996 2009-06-11  Richard Henderson  <rth@redhat.com>
17997
17998         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
17999         note when storing the frame pointer in a register.
18000         (FRP): Don't redefine to nothing for epilogue.
18001         (alpha_expand_epilogue): Mark register and sp restores.
18002         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
18003
18004         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
18005         when gen_lowpart is needed.
18006
18007 2009-06-11  Richard Henderson  <rth@redhat.com>
18008
18009         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
18010
18011         * dwarf2out.c (need_data_align_sf_opcode): New.
18012         (div_data_align): Move earlier.
18013         (def_cfa_1, reg_save): Use it.
18014
18015 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
18016
18017         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
18018         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
18019         (ix86_handle_option): Handle OPT_mcrc32.
18020         (ix86_target_string): Add -mcrc32.
18021         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
18022
18023         * config/i386/i386.h (TARGET_CRC32): New.
18024
18025         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
18026         (sse4_2_crc32di): Likewise.
18027
18028         * config/i386/i386.opt (mcrc32): New.
18029
18030         * doc/invoke.texi: Document -mcrc32.
18031
18032 2009-06-11  Richard Henderson  <rth@redhat.com>
18033
18034         * common.opt (gdwarf-): Accept a version number.
18035         * doc/invoke.texi (gdwarf-): Update docs.
18036         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
18037         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
18038         version level, and record it.
18039
18040         * dwarf2.h (DW_CIE_VERSION): Remove.
18041         * dwarf2out.c (DWARF_VERSION): Remove.
18042         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
18043         (output_call_frame_info): Use CIE version 3 for dwarf3,
18044         or if the return register column is out of range for version 1.
18045         (dwarf_stack_op_name): Add all dwarf3 values.
18046         (DEBUG_PUBTYPES_SECTION): New.
18047         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
18048         encoding change for dwarf3.
18049         (output_die) [dw_val_class_die_ref]: Likewise.
18050         (output_compilation_unit_header): Emit correct version for dwarf3.
18051         (output_line_info): Likewise.
18052         (output_pubnames): Update for DWARF_VERSION removal.
18053         (output_aranges): Likewise.
18054         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
18055         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
18056         (dwarf2out_finish): Likewise.
18057
18058 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
18059
18060         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
18061         in r148403.
18062
18063 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
18064
18065         PR c/39252
18066         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
18067         * builtins.c (expand_builtin_unreachable): New function.
18068         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
18069         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
18070         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
18071         successors.
18072         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
18073         searching for missing barriers.
18074
18075 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
18076
18077         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
18078         when -fprofile-generate* was passed.
18079         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
18080
18081 2009-06-11  Anthony Green  <green@moxielogic.com>
18082
18083         * config/moxie/moxie.md: Define length attribute for all instructions.
18084         (rCC): Define.
18085         (*b<cond:code>): Support limited branch ranges for new PC-relative
18086         branch instructions.
18087         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
18088
18089 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
18090
18091         * config/i386/i386.c (min_insn_size): Use get_attr_length
18092         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
18093         For __asm return 0.
18094
18095         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
18096         instead of emit_insn_before.
18097
18098 2009-06-10  Ian Lance Taylor  <iant@google.com>
18099
18100         PR bootstrap/40408
18101         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
18102         GIMPLE_SWITCH.
18103
18104 2009-06-10  Revital Eres  <eres@il.ibm.com>
18105
18106         * passes.c (init_optimization_passes): Reschedule
18107         predictive-commoning pass before complete unroll pass.
18108
18109 2009-06-10  Martin Jambor  <mjambor@suse.cz>
18110
18111         * cgraph.c (cgraph_node_can_be_local_p): New function.
18112         (cgraph_make_node_local): New function.
18113         * cgraph.h (cgraph_node_can_be_local_p): Declare.
18114         (cgraph_make_node_local): Declare.
18115
18116 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
18117
18118         * tree.h (tree_base): Add packed_flag and user_align fields.
18119         Decrease size of spare field.
18120         (TYPE_USER_ALIGN): Use user_align from tree_base.
18121         (DECL_USER_ALIGN): Likewise.
18122         (TYPE_PACKED): Use packed_flag from tree_base.
18123         (DECL_PACKED): Likewise.
18124         (tree_type): Delete packed_flag and user_align fields.  Widen
18125         precision field.  Widen mode field and shuffle fields to align
18126         mode on an 8-bit boundary.
18127         (tree_decl_common): Delete decl_flag_1 and user_align fields.
18128         Renumber decl_flag_* fields.  Fix comments.  Widen
18129         decl_common_unused field.
18130         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
18131         (DECL_EXTERNAL): Likewise.
18132         (DECL_BIT_FIELD): Likewise.
18133         (DECL_NONADDRESSABLE_P): Likewise.
18134         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
18135         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
18136
18137 2009-06-10  Ian Lance Taylor  <iant@google.com>
18138
18139         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
18140         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
18141         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
18142         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
18143         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
18144         DEF_VEC_ALLOC_FUNC_P.
18145         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
18146         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
18147         DEF_VEC_ALLOC_FUNC_O.
18148         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
18149         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
18150         DEF_VEC_ALLOC_FUNC_I.
18151         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
18152         (vec_stack_p_reserve_exact_1): Declare.
18153         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
18154         (vec_stack_free): Declare.
18155         (VEC_stack_alloc): Define.
18156         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
18157         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
18158         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
18159         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
18160         for void_p.
18161         (stack_vecs): New static variable.
18162         (vec_stack_p_reserve_exact_1): New function.
18163         (vec_stack_o_reserve_1): New static function.
18164         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
18165         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
18166         (vec_stack_free): New function.
18167         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
18168         (VEC_df_ref_stack_alloc): Define.
18169         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
18170         DEF_VEC_ALLOC_P_STACK.
18171         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
18172         (struct df_collection_rec): Change _vec fields to VEC.  Remove
18173         _use fields.
18174         (df_free_collection_rec): Adjust for new fields.
18175         (df_insn_rescan): Use new df_collection_rec fields.
18176         (df_notes_rescan, df_canonize_collection_rec): Likewise.
18177         (df_ref_create_structure, df_ref_record): Likewise.
18178         (df_get_conditional_uses, df_get_call_refs): Likewise.
18179         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
18180         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
18181         (df_record_exit_block_uses, df_bb_verify): Likewise.
18182         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
18183         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
18184         Remove count parameter.  Change return type to void.  Change all
18185         callers.
18186         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
18187         Remove count parameter.  Change return type to void.  Change all
18188         callers.
18189         (df_install_refs): Change old_vec parameter to VEC.  Remove count
18190         parameter.  Change all callers.
18191         (df_install_mws): Change old_vec parameter to VEC.  Remove count
18192         parameter.  Change all callers.
18193         (df_refs_verify): Change new_rec parameter to VEC.  Change call
18194         callers.
18195         (df_mws_verify): Likewise.
18196
18197 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
18198
18199         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
18200
18201 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
18202
18203         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
18204
18205 2009-06-10  Anthony Green  <green@moxielogic.com>
18206
18207         * config/moxie/crti.asm: New file.
18208         * config/moxie/crtn.asm: New file.
18209         * config/moxie/moxie.c: New file.
18210         * config/moxie/moxie.h: New file.
18211         * config/moxie/sfp-machine.h: New file.
18212         * config/moxie/moxie-protos.h: New file.
18213         * config/moxie/t-moxie: Created.
18214         * config/moxie/t-moxie-softfp: Created.
18215         * config/moxie/moxie.md: Created.
18216         * config/moxie/constraints.md: Created.
18217         * config.gcc: Add moxie support.
18218         * doc/md.texi (Machine Constraints): Add moxie constraints.
18219         * doc/contrib.texi (Contributors): Mention moxie port.
18220         * doc/install.texi (Specific): Mention the moxie port.
18221
18222 2009-06-09  Ian Lance Taylor  <iant@google.com>
18223
18224         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
18225         compiling with C++.
18226         * optabs.c (optab_table): Only use designated initializers if
18227         HAVE_DESIGNATED_INITIALIZERS is defined.
18228         (convert_optab_table): Likewise.
18229         (init_optabs): Always call init_insn_codes if
18230         HAVE_DESIGNATED_INITIALIZERS is not defined.
18231
18232 2009-06-09  Ian Lance Taylor  <iant@google.com>
18233
18234         * targhooks.c (default_builtin_vectorized_function): Change fn
18235         parameter to unsigned int.
18236         (default_builtin_vectorized_conversion): Change code parameter to
18237         unsigned int.
18238         (default_builtin_reciprocal): Change fn parameter to unsigned int.
18239         * targhooks.h: Update declarations.
18240         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
18241         parameter to unsigned int.
18242
18243         * c-typeck.c (comptypes_check_enum_int): New static function.
18244         (comptypes_internal): Add enum_and_int_p parameter.  Change all
18245         callers.
18246         (comp_target_types): Add location parameter.  Change all callers.
18247         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
18248         Change all callers.
18249         (function_types_compatible_p, type_lists_compatible_p): Likewise.
18250         (build_conditional_expr): Add colon_loc parameter.  Change all
18251         callers.
18252         (convert_for_assignment): Add location parameter.  Change all callers.
18253         * c-parser.c (c_parser_conditional_expression): Pass location of
18254         colon to build_conditional_expr.
18255         * c-tree.h (build_conditional_expr): Update declaration.
18256
18257 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
18258
18259         * graphite.c: Revert previous patch.
18260
18261 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
18262
18263         PR bootstrap/40103
18264         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
18265
18266 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
18267
18268         * tree-ssa-loop-prefetch.c
18269         (loop_prefetch_arrays): Fixed a portability problem in printf format
18270         string.
18271
18272 2009-06-09  Martin Jambor  <mjambor@suse.cz>
18273
18274         PR tree-optimization/40351
18275         * tree-sra.c (propagate_subacesses_accross_link): Check that a
18276         refrence to a potential artifical subaccess can be constructed.
18277
18278 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
18279
18280         * config/sh/sh-protos.h (sh_optimization_options): Declare.
18281         (sh_override_options): Likewise.
18282         * config/sh/sh.c: Include params.h.
18283         (sh_optimization_options): New.
18284         (sh_override_options): Likewise.
18285         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
18286         (OVERRIDE_OPTIONS): Use sh_override_options.
18287
18288 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
18289
18290         * dwarf2out.c (emit_cfa_remember): New variable.
18291         (add_fde_cfi): If emit_cfa_remember, recurse to add
18292         DW_CFA_remember_state first.
18293         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
18294         instead just set emit_cfa_remember.
18295
18296 2009-06-08  Jan Hubicka  <jh@suse.cz>
18297
18298         PR debug/40126
18299         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
18300
18301 2009-06-08  Jan Hubicka  <jh@suse.cz>
18302
18303         PR middle-end/39834
18304         * cgraphunit.c (save_inline_function_body): Do not copy transform
18305         hooks for saved inline bodies.
18306         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
18307         for given function.
18308
18309 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
18310
18311         * jump.c (returnjump_p): Handle delayed branches.  Add missing
18312         function comment.
18313
18314 2009-06-08  Jan Hubicka  <jh@suse.cz>
18315
18316         PR middle-end/40102
18317         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
18318         original node might've been modified.
18319         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
18320
18321 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
18322
18323         * tree-object-size.c (addr_object_size): Add OSI argument.
18324         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
18325         (compute_builtin_object_size, expr_object_size): Adjust callers.
18326         (plus_stmt_object_size): Call addr_object_size instead of
18327         compute_builtin_object_size.
18328
18329 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
18330             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
18331
18332         * tree-ssa-loop-prefetch.c
18333         (gather_memory_references): Introduced a counter for the number of
18334         memory references.
18335         (anything_to_prefetch_p): Introduced a counter for the number of
18336         prefetches.
18337         (is_loop_prefetching_profitable): New function with a cost model
18338         for prefetching.
18339         (loop_prefetch_arrays): Use the new cost model to determine if
18340         prefetching is profitable.
18341         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
18342         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18343         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
18344         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18345         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
18346         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18347
18348 2009-06-08  Michael Matz  <matz@suse.de>
18349
18350         PR debug/40012
18351         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
18352         partitions use the same.
18353         (expand_one_var): Deal with DECL_RTL sometimes begin set also
18354         for basevars of SSA_NAMEs.
18355         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
18356         to not expand them twice.
18357         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
18358         multiple places.
18359
18360 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
18361
18362         * common.opt (fcompare-debug=, fcompare-debug-second): New.
18363         (fdump-final-insns=, gtoggle): New.
18364         * doc/invoke.texi: Document them.
18365         * final.c (rest_of_clean_state): Dump final insn stream.
18366         * gcc.c (invoke_as): Hook in -fcompare-debug.
18367         (static_spec_functions): Add compare-debug-dump-opt,
18368         compare-debug-self-opt and compare-debug-auxbase-opt.
18369         (compare_debug, compare_debug_second, compare_debug_opt): New.
18370         (switches_debug_check, n_switches_debug_check): New.
18371         (debug_auxbase_opt, debug_check_temp_file): New.
18372         (process_command): Handle -fno-compare-debug, -fcompare-debug and
18373         -fcompare-debug=*.
18374         (do_self_spec): Handle arguments after switches.
18375         (do_spec_1): Add .gk extension to temp file basenames for compare.
18376         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
18377         (cc1_options): Use it instead of normal auxbase computation for
18378         the second compare-debug compilation.
18379         (compare_files): New.
18380         (main): Set up and implement compare debug mode.
18381         (compare_debug_dump_opt_spec_function): New.
18382         (compare_debug_self_opt_spec_function): New.
18383         (compare_debug_auxbase_opt_spec_function): New.
18384         * toplev.c (process_options): Handle flag_gtoggle,
18385         flag_dump_final_insns.
18386         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
18387         during -fcompare-debug-second compilation.
18388
18389 2009-06-07  Ian Lance Taylor  <iant@google.com>
18390
18391         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
18392         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
18393
18394         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
18395         with no default node.  Change warning with %H to warning_at.
18396         Don't clear warn_switch around case checking.
18397         * doc/invoke.texi (Warning Options): Clarify distinction between
18398         -Wswitch and -Wswitch-enum.
18399
18400 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18401
18402         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
18403
18404 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18405
18406         * gbl-ctors.h: Add header guard.
18407
18408 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18409
18410         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
18411         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
18412         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
18413         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
18414         prototypes for removed functions.
18415         (expressions_equal_p): Move to ...
18416         * tree-ssa-sccvn.h: ... here and ...
18417         * matrix-reorg.c: ... adjust includes.
18418
18419 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18420
18421         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
18422
18423 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18424
18425         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
18426         (finish_function): Remove erroneous whitespace.
18427
18428 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18429
18430         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
18431         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
18432
18433 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18434
18435         * errors.c (internal_error): Commentary typo fix.
18436         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
18437         * tree-ssa-pre.c: Ditto.
18438
18439 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18440
18441         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
18442         them is supposed to hold actual statements.
18443
18444 2009-06-06  Ian Lance Taylor  <iant@google.com>
18445
18446         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
18447         empty statements can now have attributes.
18448
18449 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
18450
18451         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
18452         * config/mips/mips.md: Ditto.
18453
18454 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
18455
18456         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
18457         _RELOCATABLE.
18458         (__eabi_uconvert): Likewise.
18459
18460 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
18461
18462         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
18463         CFI_* definitions with IN_GCC.
18464
18465 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
18466
18467         * xcoffout.h (xcoffout_source_line): Update prototype.
18468
18469 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18470
18471         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
18472         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
18473
18474 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
18475
18476         PR middle-end/40340
18477         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
18478         inlined_function_outer_scope_p blocks for artificial inlines
18479         even at -g0/-g1.
18480         * tree.c (tree_nonartificial_location): Rewrite using
18481         block_nonartificial_location.
18482
18483 2009-06-05  Revital Eres  <eres@il.ibm.com>
18484             Leehod Baruch  <leehod@il.ibm.com>
18485
18486         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
18487         (expand_expr_real_1): Remove comment.
18488         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
18489         Vectorize misaligned access when the target supports it.
18490         (vect_supportable_dr_alignment): Check for unaligned access support.
18491         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
18492         and remove asset.
18493
18494 2009-06-05  Julian Brown  <julian@codesourcery.com>
18495
18496         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
18497         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
18498
18499 2009-06-05  Richard Guenther  <rguenther@suse.de>
18500
18501         PR bootstrap/40350
18502         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
18503         as possibly unused.
18504
18505 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
18506
18507         * config/s390/s390.c (global_not_special_regno_p): New static inline.
18508         (save_gprs): Don't tell unwinder when a global register is saved.
18509         (s390_emit_epilogue): Emit needed epilogue unwind info.
18510
18511 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
18512
18513         * dwarf2out.c (deferred_asm_name): New.
18514         (add_name_and_src_coords_attributes): Defer creation of
18515         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
18516         computed yet.
18517         (move_linkage_attr): New.
18518         (dwarf2out_finish): Revisit deferrals and emit attributes at the
18519         right place.
18520
18521 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
18522
18523         * tree-nested.c (finalize_nesting_tree_1): Declare the
18524         frame_decl in the binding tree.
18525
18526 2009-06-04  Cary Coutant  <ccoutant@google.com>
18527
18528         * basic-block.h (struct basic_block_def): Add discriminator field.
18529         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
18530         callers.
18531         * debug.c (do_nothing_debug_hooks): Add additional entry.
18532         (debug_nothing_int_charstar_int): New function.
18533         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
18534         (debug_nothing_int_charstar_int): New declaration.
18535         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
18536         discriminator value in .loc directive.
18537         * final.c (last_discriminator): New variable.
18538         (discriminator): New variable.
18539         (final_start_function): Initialize above variables, pass current
18540         discriminator to debug hook.
18541         (notice_source_line): Check for discriminator change.
18542         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
18543         * sdbout.c (sdbout_source_line): New parameter.
18544         * tree-cfg.c (struct locus_discrim_map): New structure type.
18545         (discriminator_per_locus): New hash table.
18546         (build_gimple_cfg): Allocate and free discriminator hash table.
18547         (make_edges): Call assign_discriminator.
18548         (locus_map_hash): New function.
18549         (locus_map_eq): New function.
18550         (next_discriminator_for_locus): New function.
18551         (same_line_p): New function.
18552         (assign_discriminator): New function.
18553         (make_cond_expr_edges): Call assign_discriminator.
18554         (make_gimple_switch_edges): Likewise.
18555         (first_non_label_stmt): New function.
18556         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
18557         all callers.
18558         * xcoffout.c (xcoffout_source_line): Add new parameter.
18559
18560         * configure.ac (gcc_cv_as_discriminator): New configury check for
18561         gas support for discriminator.
18562         * configure: Regenerate.
18563         * config.in: Regenerate.
18564
18565 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
18566
18567         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
18568         val after checking for integers.
18569
18570 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
18571
18572         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
18573         X64_REGPARM_MAX.
18574         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
18575         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
18576         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
18577         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
18578         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
18579         X64_SSE_REGPARM_MAX.
18580         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
18581         X64_SSE_REGPARM_MAX.
18582
18583 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
18584
18585         * gcc.c (report_times_to_file): New.
18586         (execute): Implement it.
18587         (process_command): Support -time=.
18588         * doc/invoke.texi: Document it.
18589
18590 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
18591
18592         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
18593         that have value exprs.
18594
18595 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
18596
18597         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
18598         declarations for constants until...
18599         (dw2_output_indirect_constant_1): ... this point.
18600
18601 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
18602
18603         PR target/10242
18604         * arm.md (arm_addsi3): Don't try to split an add with an
18605         eliminable register until after reload has completed.
18606
18607 2009-06-03  Ian Lance Taylor  <iant@google.com>
18608
18609         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
18610         * genattrtab.c (write_length_unit_log): Likewise.
18611         * genchecksum.c (dosum): Likewise.
18612         * gengtype.c (write_rtx_next): Likewise.
18613         (finish_root_table, write_roots): Likewise.
18614         * gimple.c (gimple_ops_offset_): Likewise.
18615         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
18616         * config/arc/arc.c (arc_attribute_table): Likewise.
18617         * config/arm/arm.c (arm_attribute_table): Likewise.
18618         * config/avr/avr.c (avr_attribute_table): Likewise.
18619         * config/crx/crx.c (crx_attribute_table): Likewise.
18620         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
18621         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
18622         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
18623         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
18624         * config/sh/sh.c (sh_attribute_table): Likewise.
18625         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
18626         * config/spu/spu.c (spu_attribute_table): Likewise.
18627         * config/v850/v850.c (v850_attribute_table): Likewise.
18628
18629         * config/alpha/alpha.c (vms_attribute_table): Make static.
18630         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
18631         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
18632         * config/mips/mips.c (mips_attribute_table): Likewise.
18633
18634         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
18635         $(SYSTEM_H).
18636         (cc1-checksum.o): Likewise.
18637
18638 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
18639
18640         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
18641
18642 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
18643
18644         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
18645         insn if it is changing sp.  Use gen_add3_insn instead of
18646         conditionally gen_addsi3 and gen_adddi3.
18647         (offset_below_red_zone_p): New static inline function.
18648         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
18649         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
18650         * config/rs6000/ppc-asm.h: Include auto-host.h.
18651         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
18652         CFI_RESTORE): Define.
18653         * config/rs6000/crtresxgpr.asm: Add unwind info.
18654         * config/rs6000/crtresxfpr.asm: Likewise.
18655         * config/rs6000/crtresgpr.asm: Likewise.
18656         * config/rs6000/crtresfpr.asm: Likewise.
18657         * config/rs6000/crtsavgpr.asm: Likewise.
18658         * config/rs6000/crtsavfpr.asm: Likewise.
18659
18660         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
18661         argument of DWARF2_FRAME_REG_OUT macros.
18662
18663 2009-06-03  Julian Brown  <julian@codesourcery.com>
18664
18665         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
18666         words or less (including TImode) in core registers.
18667
18668 2009-06-03  Richard Guenther  <rguenther@suse.de>
18669
18670         PR middle-end/40328
18671         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
18672
18673 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
18674
18675         * statistics.c (statistics_counter_event): Do not record event
18676         in pass dump if its number == -1.
18677         (curr_statistics_hash): Add assert that we never get passes
18678         with static number == -1.
18679
18680 2009-06-03  Richard Guenther  <rguenther@suse.de>
18681             Andrey Belevantsev  <abel@ispras.ru>
18682
18683         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
18684         non-BLKmode arrays addressable.
18685
18686 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
18687
18688         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
18689         * config/m68k/m68k.h: ... here.
18690
18691 2009-06-03  Martin Jambor  <mjambor@suse.cz>
18692
18693         PR tree-optimization/40323
18694         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
18695         assignment.
18696
18697 2009-06-03  Richard Guenther  <rguenther@suse.de>
18698
18699         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
18700         consistently.
18701
18702 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
18703
18704         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
18705         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
18706         JUMP_TABLE_DATA_P where applicable.
18707         * config/sh/sh.c: Ditto.
18708         * config/sh/sh.h: Ditto.
18709         * config/sh/sh.md: Ditto.
18710         * config/sh/symbian.c: Ditto.
18711
18712 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
18713
18714         * config/i386/driver-i386.c (describe_cache): Optimize
18715         concatenation of strings.  Use snprintf instead of sprintf.
18716         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
18717         target when not compiling with GCC.
18718
18719 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
18720
18721         * config/sh/sh.c: Revert last change.
18722         (sh_expand_epilogue): Emit a blockage insn before the frame
18723         pointer adjustment unconditionally.
18724
18725 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18726
18727         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
18728         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
18729         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
18730         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
18731         to COLLECT_GCC_OPTIONS.
18732
18733 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18734
18735         * collect2.c (target_system_root): New variable.
18736         (main): Handle --sysroot=.
18737         (ignore_library): Strip the sysroot from the library path.
18738
18739 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18740
18741         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
18742         (collect2.o): Depend on collect2-aix.h.
18743         (collect2-aix.o): New rule.
18744         * collect2-aix.h: New file.
18745         * collect2-aix.c: Likewise.
18746         * collect2.c: Include collect2-aix.h.  Don't undefine
18747         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
18748         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
18749         Use TARGET_AIX_VERSION instead of _AIX51.
18750         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
18751         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
18752         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
18753         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
18754         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
18755
18756 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18757
18758         * collect2.c (ignore_library): Avoid premature post-increment
18759         and null deference.
18760
18761 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18762
18763         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
18764         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
18765         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
18766         CROSS_DIRECTORY_STRUCTURE too.
18767         (LINK_LIBG_SPEC): Likewise.
18768         (LIB_SPEC): Add %R to sysroot paths.
18769         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
18770         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
18771         * config/rs6000/aix51.h: As for aix43.h.
18772         * config/rs6000/aix52.h: Likewise.
18773         * config/rs6000/aix53.h: Likewise.
18774         * config/rs6000/aix61.h: Likewise.
18775         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
18776         to the beginning of sysroot paths.
18777
18778 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18779
18780         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
18781         INSN_LISTs that are out of the REG_NOTE range.
18782
18783 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18784
18785         * loop-unroll.c (struct iv_to_split): Add pointer to next.
18786         (struct var_to_expand): Likewise.
18787         (struct opt_info): Add head and tail for linked lists of the above.
18788         (analyze_insn_to_expand_var): Initialize next.
18789         (analyze_iv_to_split_insn): Likewise.
18790         (analyze_insns_in_loop): Create linked lists.
18791         (allocate_basic_variable): Simplify for use without hash table.
18792         (insert_var_expansion_initialization): Likewise, make it type-safer.
18793         (combine_var_copies_in_loop_exit): Likewise.
18794         (apply_opt_in_copies): Walk lists rather than hash tables.
18795         (release_var_copies): Simplified and inlined by hand into...
18796         (free_opt_info): ... this function.
18797
18798 2009-06-02  Richard Guenther  <rguenther@suse.de>
18799
18800         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
18801         for field decls.
18802
18803 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18804
18805         * cfgexpand.c (gimple_expand_cfg): Discard the source location
18806         only for builtins that are not overridden.
18807
18808 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18809
18810         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
18811         label string.
18812
18813 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18814
18815         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
18816
18817 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18818
18819         * combine.c (move_deaths): Compare LUIDs within the same BB only.
18820
18821 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18822
18823         * common.opt (fdump-unnumbered-links): New.
18824         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
18825         * print-rtl.c (flag_dump_unnumbered_links): New.
18826         (print_rtx): Test it.
18827
18828 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
18829
18830         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
18831         push/pop multiple to 8-byte alignment.
18832
18833 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
18834
18835         * config/i386/i386.c (queued_cfa_restores): New static variable.
18836         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
18837         functions.
18838         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
18839         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
18840         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
18841         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
18842         note unconditionally.
18843         (ix86_emit_restore_regs_using_mov): Likewise.
18844         (ix86_emit_restore_sse_regs_using_mov): Likewise.
18845         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
18846         it through to ix86_emit_restore_reg_using_pop.
18847         (ix86_emit_leave): Add RED_OFFSET argument.  Call
18848         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
18849         instead of adding REG_CFA_OFFSET note unconditionally.
18850         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
18851         the above functions.  Call ix86_add_queued_cfa_restore_notes when
18852         needed.
18853
18854         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
18855         force output of the label even for dwarf2out_do_cfi_asm.
18856         (add_fde_cfi): If -g2 and above and cfi might change CFA,
18857         force creation of CFI label and chain DW_CFA_set_loc jumping to it
18858         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
18859         caller.
18860         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
18861         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
18862         dwarf2out_cfi_label callers.
18863         * tree.h (dwarf2out_cfi_label): Adjust prototype.
18864         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
18865         Adjust dwarf2out_cfi_label callers.
18866         * config/vax/vax.c (vax_output_function_prologue): Likewise.
18867
18868         * config/i386/i386.h (struct machine_cfa_state,
18869         struct machine_function): Guard with ifndef USED_FOR_TARGET
18870         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
18871
18872         PR other/40024
18873         * emutls.c (__emutls_get_address): Change arr->size to mean number
18874         of allocated arr->data entries instead of # of slots + 1.
18875
18876         PR middle-end/40316
18877         * recog.c (peep2_reinit_state): New function.
18878         (peephole2_init_state): Use it at the end of a basic block and also
18879         when seeing a RTX_FRAME_RELATED_P insn.
18880
18881 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
18882
18883         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
18884         fixuns_truncrfdi2): New.
18885         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
18886         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
18887         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
18888         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
18889         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
18890         *recip_approx): Remove.
18891         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
18892         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
18893         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
18894         move to div.md.
18895         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
18896         setf_exp_rf): New.
18897
18898 2009-06-01  Ian Lance Taylor  <iant@google.com>
18899
18900         * attribs.c (register_attribute): Use CONST_CAST.
18901         * collect2.c (main): Use CONST_CAST2.
18902         (scan_prog_file): Likewise.
18903         * gcc.c (process_command, main): Likewise.
18904         * toplev.c (toplev_main): Likewise.
18905
18906         * c-typeck.c (handle_warn_cast_qual): New static function,
18907         partially broken out of build_c_cast.
18908         (build_c_cast): Call handle_warn_cast_qual.
18909         * doc/invoke.texi (Warning Options): Document new effect of
18910         -Wcast-qual.
18911
18912 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
18913
18914         * diagnostic.c (diagnostic_build_prefix): Always print columns.
18915         (diagnostic_report_current_module): Print columns.
18916         * common.opt (flag_show_column): Enable by default.
18917
18918 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
18919
18920         * alias.c (find_base_term): Check for NULL term before returning.
18921
18922 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18923
18924         Revert due to PR40320:
18925         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18926         * calls.c (emit_library_call_value_1): Don't force_operand for move
18927         and push insns.
18928
18929 2009-06-01  Olivier Hainque  <hainque@adacore.com>
18930             Eric Botcazou  <ebotcazou@adacore.com>
18931
18932         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
18933         to be processed as a bitfield for constructor output purposes.
18934         * output.h (initializer_constant_valid_for_bitfield_p): Declare
18935         new function.
18936         * varasm.c (oc_local_state): New type, output_constructor
18937         local state to support communication with helpers.
18938         (oc_outer_state): New type, output_constructor outer state of
18939         relevance in recursive calls.
18940         (output_constructor_array_range): New output_constructor helper,
18941         extracted code for an array range element.
18942         (output_constructor_regular_field): New output_constructor helper,
18943         extracted code for an element that is not a bitfield.
18944         (output_constructor_bitfield): New output_constructor helper,
18945         extracted code for a bitfield element.  Accept an OUTER state
18946         argument for recursive processing.  Recurse on record or array
18947         CONSTRUCTOR values, possibly past noop conversions.
18948         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
18949         VALUE is a valid constant-valued expression for use in a static
18950         bit-field initializer.
18951         (output_constructor): Rework to use helpers.  Accept and honor an
18952         OUTER state argument for recursive calls.  Return total size.  Be
18953         prepared for nested constructors initializing bitfields.
18954         (output_constant): Feed OUTER in calls to output_constructor.
18955
18956 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18957
18958         * calls.c (emit_library_call_value_1): Don't force_operand for move
18959         and push insns.
18960
18961 2009-06-01  Nick Clifton  <nickc@redhat.com>
18962
18963         * doc/invoke.texi (IA-64 Options): Fix typo.
18964
18965 2009-06-01  Ira Rosen  <irar@il.ibm.com>
18966
18967         PR tree-optimization/39129
18968         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
18969         printed message.
18970         (vect_do_peeling_for_loop_bound): Use
18971         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
18972         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
18973         (vect_loop_versioning): Likewise.
18974         (vect_create_cond_for_alias_checks): Fix indentation.
18975         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
18976         macros.
18977         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
18978         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
18979         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
18980         "control flow in loop".
18981         (vect_estimate_min_profitable_iters): Use
18982         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
18983         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
18984         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
18985         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
18986         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
18987         statement belongs to a group of strided accesses with the exact code
18988         check.
18989         (vectorizable_load): Likewise.
18990         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
18991         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
18992
18993 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
18994
18995         * config/freebsd-stdint.h: New file.
18996         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
18997         Add freebsd-stdint.h to tm_file.
18998
18999 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
19000
19001         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
19002         (thumb2_extendhidi2): Likewise.
19003
19004 2009-05-31  Ian Lance Taylor  <iant@google.com>
19005
19006         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
19007
19008 2009-05-31  Ian Lance Taylor  <iant@google.com>
19009
19010         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
19011         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
19012         (ipa-reference.o): Depend upon gt-ipa-reference.h.
19013
19014 2009-05-31  Jason Merrill  <jason@redhat.com>
19015
19016         * tree-pretty-print.c (print_call_name): Take the callee, not the
19017         call itself.  Make non-static.  Use dump_function_name for functions.
19018         (dump_generic_node): Adjust.
19019         * diagnostic.h: Declare print_call_name.
19020         * gimple-pretty-print.c (dump_gimple_call): Use it.
19021
19022 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
19023
19024         * config/sh/sh.md (ashldi3_std): New define_expand.
19025         (ashldi3): Use it.
19026
19027 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
19028
19029         PR target/40313
19030         * config/sh/sh.c: Include debug.h.
19031         (sh_expand_epilogue): Emit a blockage insn before the frame
19032         pointer adjustment also when dwarf2out_do_frame returns true.
19033
19034 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
19035
19036         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
19037         (thumb2_extendqidi2): New pattern.
19038
19039 2009-05-31  Ira Rosen  <irar@il.ibm.com>
19040
19041         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
19042         mark phis for renaming.
19043         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
19044         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
19045         Call mark_sym_for_renaming.
19046         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
19047         * tree-vect-loop.c (vect_transform_loop): Remove
19048         vect_memsyms_to_rename initialization and a call to
19049         mark_set_for_renaming.
19050
19051 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
19052
19053         PR middle-end/40304
19054         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
19055         frame related even if !set_cfa && style < 0.
19056
19057 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
19058
19059         * config/i386/mingw-tls.c: New file.
19060         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
19061         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
19062         defining _WIN32 but not __CYGWIN__.
19063
19064 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19065
19066         * configure.ac: Add MPC support.
19067
19068         * config.in, configure: Regenerate.
19069
19070 2009-05-29  Richard Henderson  <rth@redhat.com>
19071
19072         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
19073         NOTE_INSN_BASIC_BLOCK.
19074         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
19075         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
19076         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
19077         to be deleted.
19078         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
19079         add in_use field.
19080         (add_cfi): Disable check redefining cfa away from drap.
19081         (lookup_cfa_1): Add remember argument; handle remember/restore.
19082         (lookup_cfa): Pass remember argument.
19083         (cfa_remember): New.
19084         (compute_barrier_args_size_1): Remove sibcall check.
19085         (dwarf2out_frame_debug_def_cfa): New.
19086         (dwarf2out_frame_debug_adjust_cfa): New.
19087         (dwarf2out_frame_debug_cfa_offset): New.
19088         (dwarf2out_frame_debug_cfa_register): New.
19089         (dwarf2out_frame_debug_cfa_restore): New.
19090         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
19091         (dwarf2out_begin_epilogue): New.
19092         (dwarf2out_frame_debug_restore_state): New.
19093         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
19094         DW_CFA_restore_state.
19095         (output_cfi_directive): Likewise.
19096         (convert_cfa_to_fb_loc_list): Likewise.
19097         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
19098         * dwarf2out.h: Update.
19099         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
19100         (copy_insn_1): Early out for null.
19101         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
19102         and dwarf2out_frame_debug_restore_state.
19103         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
19104         (prologue_insn_hash, epilogue_insn_hash): New.
19105         (free_after_compilation): Adjust freeing accordingly.
19106         (record_insns): Create hash table if needed; push insns into
19107         hash instead of array.
19108         (maybe_copy_epilogue_insn): New.
19109         (contains): Search hash table instead of array.
19110         (sibcall_epilogue_contains): Remove.
19111         (thread_prologue_and_epilogue_insns): Split eh_return insns
19112         and mark them as epilogues.
19113         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
19114         scanning in terms of basic blocks.
19115         * insn-notes.def (CFA_RESTORE_STATE): New.
19116         * jump.c (returnjump_p_1): Accept EH_RETURN.
19117         (eh_returnjump_p_1, eh_returnjump_p): New.
19118         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
19119         CFA_REGISTER, CFA_RESTORE): New.
19120         * rtl.def (EH_RETURN): New.
19121         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
19122
19123         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
19124         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
19125
19126         * config/i386/i386.c (gen_push): Update cfa state.
19127         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
19128         add a CFA_ADJUST_CFA note.
19129         (ix86_dwarf_handle_frame_unspec): Remove.
19130         (ix86_expand_prologue): Update cfa state.
19131         (ix86_emit_restore_reg_using_pop): New.
19132         (ix86_emit_restore_regs_using_pop): New.
19133         (ix86_emit_leave): New.
19134         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
19135         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
19136         * config/i386/i386.h (struct machine_cfa_state): New.
19137         (ix86_cfa_state): New.
19138         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
19139         (eh_return_internal): Merge from eh_return_<mode>,
19140         use eh_return rtx, split w/ epilogue.
19141
19142 2009-05-29  Ian Lance Taylor  <iant@google.com>
19143
19144         * builtins.c (validate_gimple_arglist): Don't use va_arg with
19145         enum type.
19146         * calls.c (emit_library_call_value_1): Likewise.
19147
19148         * c-typeck.c (c_build_va_arg): New function.
19149         * c-tree.h (c_build_va_arg): Declare.
19150         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
19151         instead of build_va_arg.
19152
19153 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
19154
19155         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
19156         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
19157         (ptr_difference_cost): Use affine combinations to compute it.
19158         (difference_cost): Likewise.
19159         (get_computation_cost_at): Compute more accurate cost for addresses
19160         if the ratio is a multiplier allowed in addresses.
19161         For non-addresses, consider that an additional offset or symbol is
19162         added only once.
19163
19164 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19165
19166         * config/i386/i386.c (ix86_decompose_address): Avoid useless
19167         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
19168
19169         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
19170         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
19171         (prefix_rex): For UNIT_MMX don't imply the prefix by default
19172         if MODE_DI.
19173         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
19174         to 1 for TYPE_SSE{IADD1,CVT1}.
19175         (prefix_vex_imm8): Removed.
19176         (length_vex): Only pass 1 as second argument to
19177         ix86_attr_length_vex_default if prefix_extra is 0.
19178         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
19179         (length): For prefix vex computation use length_immediate
19180         attribute instead of prefix_vex_imm8.
19181         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
19182         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
19183         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
19184         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
19185         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
19186         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
19187         a space in between the operands.
19188         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
19189         if one operand is 0xff and the other one si, di, bp or sp.
19190         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
19191         other one si, di, bp or sp.
19192         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
19193         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
19194         type and mode attributes.
19195         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
19196         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
19197         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
19198         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
19199         prefix_data16 attribute iff MODE_DF.
19200         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
19201         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
19202         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
19203         constm128_operand in length_immediate computation.
19204         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
19205         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
19206         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
19207         length_immediate attribute to 1.
19208         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
19209         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
19210         for certain alternatives.
19211         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
19212         prefix_data16 attribute if MODE_V1DF.
19213         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
19214         length_immediate to 1.
19215         (set_got_rex64, set_rip_rex64): Remove length attribute, set
19216         length_address to 4, set mode attribute to MODE_DI.
19217         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
19218         (fxam<mode>2_i387): Set length attribute to 4.
19219         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
19220         *prefetch_3dnow_rex): Override length_address attribute.
19221         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
19222         attributes.
19223         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
19224         (constm128_operand): Removed.
19225         * config/i386/i386.c (memory_address_length): For
19226         disp && !index && !base in 64-bit mode account for SIB byte if
19227         print_operand_address can't optimize disp32 into disp32(%rip)
19228         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
19229         for fs: or gs: segment.
19230         (ix86_attr_length_immediate_default): When checking if shortform
19231         is possible, truncate immediate to the length of the non-shortened
19232         immediate.
19233         (ix86_attr_length_address_default): Ignore MEM_P operands
19234         with X constraint.
19235         (ix86_attr_length_vex_default): Only check for DImode on
19236         GENERAL_REG_P operands.
19237         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
19238         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
19239         (sse_cvttps2pi): Clear prefix_rep attribute.
19240         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
19241         attribute.
19242         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
19243         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
19244         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
19245         iff operand 2 is const_int_operand.
19246         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
19247         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
19248         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
19249         instead of vex.
19250         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
19251         prefix_data16.
19252         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
19253         prefix_data16 attribute for movlpd and movhpd instructions.
19254         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
19255         length_immediate for shufpd instruction.
19256         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
19257         (avx_cmpp<avxmodesuffixf2c><mode>3,
19258         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
19259         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
19260         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
19261         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
19262         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
19263         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
19264         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
19265         prefix_data16 attribute for the first alternative to 1.
19266         (*avx_loadlps): Override length_immediate for the first alternative.
19267         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
19268         attributes for second alternative.
19269         (*vec_concatv2sf_sse4_1): Override length_immediate and
19270         prefix_data16 attributes for second alternative.
19271         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
19272         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
19273         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
19274         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
19275         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
19276         prefix_data16 and length_immediate to 1.
19277         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
19278         to 1.
19279         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
19280         prefix_extra attribute for variants that don't have 0f prefix alone.
19281         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
19282         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
19283         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
19284         *sse4_1_pextrd): Set length_immediate to 1.
19285         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
19286         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
19287         to 1.
19288         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
19289         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
19290         length_immediate to 1 for second alternative.
19291         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
19292         prefix_extra and length_immediate attributes for the first
19293         alternative.
19294         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
19295         first alternative.
19296         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
19297         to 1 for the first and third alternative.
19298         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
19299         alternative.
19300         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
19301         attribute.
19302         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
19303         attribute to 0.
19304         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
19305         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
19306         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
19307         *avx_psign<mode>3): Set prefix_extra attribute to 1.
19308         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
19309         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
19310         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
19311         ssse3_psign<mode>3): Override prefix_rex attribute.
19312         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
19313         (ssse3_palignrti): Override length_immediate to 1.
19314         (ssse3_palignrdi): Override length_immediate to 1, override
19315         prefix_rex attribute.
19316         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
19317         (sse4a_extrqi): Override length_immediate to 2.
19318         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
19319         (sse4a_insertq): Override prefix_data16 to 0.
19320         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
19321         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
19322         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
19323         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
19324         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
19325         and length_immediate to 1.
19326         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
19327         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
19328         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
19329         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
19330         and length_immediate to 1.
19331         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
19332         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
19333         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
19334         avx_ptest256): Override prefix_extra to 1.
19335         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
19336         Override prefix_data16 and length_immediate to 1.
19337         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
19338         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
19339         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
19340         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
19341         prefix_data16 to 0 and prefix_extra to 2.
19342         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
19343         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
19344         attribute.
19345         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
19346         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
19347         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
19348         and prefix_extra to 2.
19349         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
19350         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
19351         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
19352         avx_vpermilvar<mode>3,
19353         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
19354         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
19355         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
19356         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
19357         Override prefix_extra to 1.
19358         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
19359         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
19360         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
19361         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
19362         prefix_extra and length_immediate to 1.
19363         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
19364         modrm to 0.
19365         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
19366         to 1 for the first alternative.
19367         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
19368         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
19369         cases.
19370         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
19371         *movv2sf_internal_avx, *movv2sf_internal): Override
19372         prefix_rep attribute for certain alternatives.
19373         (*mov<mode>_internal): Override prefix_rep or prefix_data16
19374         attributes for certain alternatives.
19375         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
19376         attributes for certain alternatives.
19377         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
19378         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
19379         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
19380         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
19381         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
19382         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
19383         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
19384         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
19385         length_immediate to 1 if operand 2 is const_int_operand.
19386         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
19387         *vec_extractv2si_1): Set length_immediate attribute to 1.
19388         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
19389         using old 3DNOW insn rather than SSE/3DNOW_A.
19390         (mmx_emms, mmx_femms): Clear modrm attribute.
19391
19392 2009-05-29  Martin Jambor  <mjambor@suse.cz>
19393
19394         * tree-sra.c:  New implementation of SRA.
19395
19396         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
19397         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
19398         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
19399         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
19400         (SRA_MAX_STRUCTURE_COUNT): Removed.
19401         (SRA_FIELD_STRUCTURE_RATIO): Removed.
19402         * doc/invoke.texi (sra-max-structure-size): Removed.
19403         (sra-field-structure-ratio): Removed.
19404
19405 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19406
19407         PR middle-end/40291
19408         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
19409         before expansion.
19410
19411 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
19412
19413         PR rtl-optimization/40101
19414         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
19415         seqno.  Adjust comment.
19416         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
19417         inserting bookkeeping before a jump, the jump is not scheduled.
19418         When no positive seqno found, provide a value.  Add comment.
19419
19420 2009-05-29  Richard Guenther  <rguenther@suse.de>
19421
19422         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
19423         short-cutting on the first component.
19424
19425 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19426
19427         PR middle-end/39958
19428         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
19429         for trees other than decls/types.
19430
19431 2009-05-29  Richard Guenther  <rguenther@suse.de>
19432
19433         * tree-ssa-operands.c (get_expr_operands): Do not handle
19434         INDIRECT_REFs in the handled-component case.  Remove
19435         unused get_ref_base_and_extent case.
19436         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
19437         tree_low_cst and host_integerp where possible.
19438         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
19439         codes for equivalence.
19440         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
19441
19442 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
19443
19444         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
19445         to tmake_file for i[34567]86-*-cygwin*.
19446
19447 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19448
19449         PR target/40017
19450         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
19451         (altivec_categorize_keyword, init_vector_keywords,
19452         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
19453         similar to bool.
19454
19455 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
19456
19457         * tree.c (handle_dll_attribute): Check if node is
19458         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
19459
19460 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
19461
19462         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
19463         component.
19464         (thumb2_zero_extendqidi2): Likewise.
19465
19466 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
19467
19468         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
19469         instead of gen_movrt.
19470         * config/sh/sh.md (movrt): Remove.
19471
19472 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
19473
19474         * doc/invoke.texi (IA-64 Options):
19475         Add -msdata, -mfused-madd, -mno-inline-float-divide,
19476         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
19477         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
19478         -msched-prefer-non-control-spec-insns,
19479         -msched-stop-bits-after-every-cycle,
19480         -msched-count-spec-in-critical-path,
19481         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
19482         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
19483         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
19484         and -msched-spec-verbose.
19485
19486 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
19487
19488         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
19489         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
19490         error if used.
19491         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
19492
19493 2009-05-28  Richard Guenther  <rguenther@suse.de>
19494
19495         * tree-ssa-alias.c (ao_ref_init): New function.
19496         (ao_ref_base): Likewise.
19497         (ao_ref_base_alias_set): Likewise.
19498         (ao_ref_alias_set): Likewise.
19499         (refs_may_alias_p_1): Change signature.
19500         (refs_may_alias_p): Adjust.
19501         (refs_anti_dependent_p): Likewise.
19502         (refs_output_dependent_p): Likewise.
19503         (call_may_clobber_ref_p_1): Change signature.
19504         (call_may_clobber_ref_p): Adjust.
19505         (stmt_may_clobber_ref_p_1): New function split out from ...
19506         (stmt_may_clobber_ref_p): ... here.
19507         (maybe_skip_until): Adjust signature.
19508         (get_continuation_for_phi): Likewise.
19509         (walk_non_aliased_vuses): Likewise.
19510         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
19511         (ao_ref_init): Declare.
19512         (ao_ref_base): Likewise.
19513         (ao_ref_alias_set): Likewise.
19514         (stmt_may_clobber_ref_p_1): Likewise.
19515         (walk_non_aliased_vuses): Adjust.
19516         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
19517         (get_ref_from_reference_ops): remove.
19518         (vn_reference_lookup_2): Adjust signature.
19519         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
19520         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
19521         (vn_reference_lookup): Adjust.
19522         (vn_reference_insert): Likewise.
19523         (vn_reference_insert_pieces): Adjust signature.
19524         (visit_reference_op_call): Adjust.
19525         * tree-ssa-pre.c (get_expr_type): Simplify.
19526         (phi_translate_1): Adjust.
19527         (compute_avail): Likewise.
19528         (translate_vuse_through_block): Do not re-build trees.
19529         (value_dies_in_block_x): Likewise.
19530         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
19531         fields.
19532         (vn_reference_lookup_pieces): Adjust declaration.
19533         (vn_reference_insert_pieces): Likewise.
19534
19535 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
19536
19537         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
19538         with checking disabled.
19539
19540 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
19541
19542         PR target/37216
19543
19544         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
19545         macro definition for support of three-operand format aligned
19546         .comm directive in assembler on cygwin/pe/mingw target OS.
19547         * configure:  Regenerate.
19548         * config.h:  Regenerate.
19549
19550         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
19551         aligned form of .comm directive if -mpe-aligned-commons is in effect.
19552         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
19553
19554         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
19555         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
19556
19557 2009-05-28  Ira Rosen  <irar@il.ibm.com>
19558
19559         PR tree-optimization/40254
19560         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
19561         in analysis of basic blocks.
19562
19563 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
19564
19565         PR middle-end/33699
19566         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
19567         * target-def.h (TARGET_CONST_ANCHOR): New macro.
19568         (TARGET_INITIALIZER): Use it.
19569         * cse.c (CHEAPER): Move it up to the other macros.
19570         (insert): Rename this ...
19571         (insert_with_costs): ... to this.  Add cost parameters.  Update
19572         function comment.
19573         (insert): New function.  Call insert_with_costs.
19574         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
19575         find_reg_offset_for_const, try_const_anchors): New functions.
19576         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
19577         when using a const-anchor.  Call insert_const_anchors.
19578         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
19579         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
19580
19581 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
19582
19583         * tree-inline.c (remap_decls): Enable nonlocalized variables
19584         when not optimizing.
19585
19586 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
19587
19588         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
19589         Simplify other tests involving optimize.
19590
19591 2009-05-27  Tom Tromey  <tromey@redhat.com>
19592
19593         * unwind-dw2.c (_Unwind_DebugHook): New function.
19594         (uw_install_context): Call _Unwind_DebugHook.
19595
19596 2009-05-27  Tom Tromey  <tromey@redhat.com>
19597
19598         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
19599
19600 2009-05-27  Ian Lance Taylor  <iant@google.com>
19601
19602         * Makefile.in (LINKER, LINKER_FLAGS): Define.
19603         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
19604         (ALL_LINKERFLAGS): Define.
19605         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
19606         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
19607         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
19608         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
19609         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
19610         $(LINKER_FOR_BUILD).
19611         (build/gcov-iov$(build_exeext)): Likewise.
19612
19613 2009-05-27  Julian Brown  <julian@codesourcery.com>
19614
19615         * gcse.c (target.h): Include.
19616         (can_assign_to_reg_without_clobbers_p): Check that the target allows
19617         copy of argument to a pseudo register.
19618
19619 2009-05-27  Diego Novillo  <dnovillo@google.com>
19620
19621         * tree-ssa-live.c (dump_scope_block): Document arguments.
19622         (dump_scope_blocks): Document.
19623         (debug_scope_blocks): New.
19624         * tree-flow.h (debug_scope_blocks): Declare.
19625
19626 2009-05-21  Denis Chertykov  <denisc@overta.ru>
19627
19628         * doc/contrib.texi (Contributors): Add myself to the list.
19629
19630 2009-05-27  Olivier Hainque  <hainque@adacore.com>
19631
19632         * expr.c (target_align): New function.  Alignment the TARGET of an
19633         assignment may be assume to have.
19634         (highest_pow2_factor_for_target): Use it instead of relying on
19635         immediate tree attributes of TARGET, not necessarily honored when
19636         intermediate bitfields are involved.
19637
19638 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
19639
19640         PR target/40266
19641         * config/i386/driver-i386.c (host_detect_local_cpu): Support
19642         AVX, SSE4, AES, PCLMUL and POPCNT.
19643
19644 2009-05-27  Diego Novillo  <dnovillo@google.com>
19645
19646         * tree-pretty-print.c (dump_location): New.
19647         (dump_generic_node): Call it.
19648         Factor code to handle BLOCK nodes ...
19649         (dump_block_node): ... here.
19650
19651 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
19652
19653         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
19654         with it.
19655         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
19656         included.
19657         * gcc-plugin.h: Include config.h and system.h.
19658         (IN_GCC): Define if not defined.
19659
19660 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
19661
19662         PR middle-end/40249
19663         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
19664         with -fno-inline.
19665
19666 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
19667
19668         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
19669         applicable.
19670         * config/m32r/m32r.h: Ditto.
19671         * config/m32r/m32r.md: Ditto.
19672         * config/m32r/predicates.md: Ditto.
19673
19674 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
19675
19676         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
19677
19678 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
19679
19680         * doc/plugins.texi
19681         (Loading plugins): typo.
19682         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
19683         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
19684         (Interacting with the GCC Garbage Collector): Added new section.
19685         (Giving information about a plugin): Added new section for
19686         PLUGIN_INFO.
19687         * ggc.h (ggc_register_root_tab): Added declaration.
19688         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
19689         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
19690         (register_callback): Improved comment in declaration.
19691         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
19692         (extra_root_vec) Added static variable for dynamic roots registration.
19693         (ggc_register_root_tab) Added new routine.
19694         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
19695         PLUGIN_GGC_MARKING event.
19696         * ggc-zone.c: Include plugin.h.
19697         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
19698         * ggc-page.c: Include plugin.h.
19699         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
19700         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
19701         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
19702         (register_callback): check lack of callbacks for
19703         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
19704         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
19705         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
19706         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
19707         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
19708         dependency on plugin.h.
19709         (plugin.o): Added dependency on ggc.h...
19710
19711 2009-05-26  Richard Guenther  <rguenther@suse.de>
19712
19713         PR middle-end/40248
19714         Revert
19715         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
19716         with mismatched comparison modes.
19717
19718         * expr.c (expand_expr_real_1): Expand the operand of a
19719         VIEW_CONVERT_EXPR in its natural mode.
19720
19721 2009-05-26  Ian Lance Taylor  <iant@google.com>
19722
19723         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
19724         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
19725         (ALL_COMPILERFLAGS): Define.
19726         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
19727         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
19728         (collect2$(exeext), collect2.o): Likewise.
19729         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
19730         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
19731         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
19732         (libbackend.o, intl.o, cppdefault.o): Likewise.
19733         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
19734         (build/%.o): Use $(COMPILER_FOR_BUILD).
19735         (build/gen%$(build_exeext)): Likewise.
19736         (build/gcov-iov$(build_exeext)): LIkewise.
19737         * config/t-darwin (darwin.o): Use $(COMPILER).
19738         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
19739         * config/t-sol2 (sol2-c.o): Likewise.
19740         (sol2.o): Likewise.
19741         * config/t-vxworks (vxworks.o): Likewise.
19742         * config/x-darwin (host-darwin.o): Likewise.
19743         * config/x-hpux (host-hpux.o): Likewise.
19744         * config/x-linux (host-linux.o): Likewise.
19745         * config/x-solaris (host-solaris.o): Likewise.
19746         * config/alpha/x-alpha (driver-alpha.o): Likewise.
19747         * config/arm/t-arm (arm-c.o): Likewise.
19748         * config/arm/t-pe (pe.o): Likewise.
19749         * config/arm/t-wince-pe (pe.o): Likewise.
19750         * config/i386/t-cygming (winnt.o): Likewise.
19751         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
19752         * config/i386/t-cygwin (cygwin1.o): Likewise.
19753         (cygwin2.o): Likewise.
19754         * config/i386/t-i386 (i386-c.o): Likewise.
19755         * config/i386/t-interix (winnt.o): Likewise.
19756         * config/i386/t-netware (netware.o): Likewise.
19757         * config/i386/t-nwld (nwld.o): Likewise.
19758         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
19759         * config/i386/x-i386 (driver-i386.o): Likewise.
19760         * config/i386/x-cygwin (host-cygwin.o): Likewise.
19761         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
19762         * config/ia64/t-ia64 (ia64-c.o): Likewise.
19763         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
19764         * config/mips/x-native (driver-native.o): Likewise.
19765         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
19766         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
19767         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
19768         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
19769         * config/score/t-score-elf (score7.o): Likewise.
19770         (score3.o): Likewise.
19771         * config/sh/t-sh (sh-c.o): Likewise.
19772         * config/sh/t-symbian (sh-c.o): Likewise.
19773         (symbian.o): Likewise.
19774         * config/spu/t-spu-elf (spu-c.o): Likewise.
19775         * config/v850/t-v850 (v850-c.o): Likewise.
19776         * config/v850/t-v850e (v850-c.o): Likewise.
19777
19778 2009-05-26  Richard Guenther  <rguenther@suse.de>
19779
19780         PR tree-optimization/40122
19781         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
19782         VECTOR_CSTs if possible.
19783         (fold_gimple_assign): Likewise.
19784
19785 2009-05-26  Richard Guenther  <rguenther@suse.de>
19786
19787         PR middle-end/40252
19788         * fold-const.c (fold_binary): Use the correct types for building
19789         rotates.
19790
19791 2009-05-26  Richard Guenther  <rguenther@suse.de>
19792
19793         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
19794         redundant calls to merge_alias_info.
19795         (bump_vector_ptr): Likewise.
19796         * tree-ssa-copy.c (merge_alias_info): Remove.
19797         (replace_exp_1): Remove call to merge_alias_info.
19798         (propagate_tree_value): Likewise.
19799         (fini_copy_prop): Propagate points-to info.
19800         * tree-flow.h (merge_alias_info): Remove.
19801
19802 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
19803
19804         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
19805
19806 2009-05-25  Jan Hubicka  <jh@suse.cz>
19807
19808         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
19809         * cgraph.h (struct inline_summary): New filed self_wize,
19810         size_inlining_benefit, self_time and time_inlining_benefit.
19811         (struct cgraph_global_info): Replace insns by time ans size fields.
19812         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
19813         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
19814         (ipcp_update_callgraph): Do not touch function bodies.
19815         * ipa-inline.c: Include except.h
19816         (MAX_TIME): New constant.
19817         (overall_insns): Remove.
19818         (leaf_node_p): New.
19819         (overall_size, max_benefit): New static variables.
19820         (cgraph_estimate_time_after_inlining): New function.
19821         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
19822         (cgraph_clone_inlined_nodes): Update size.
19823         (cgraph_mark_inline_edge): Update size.
19824         (cgraph_estimate_growth): Use size info.
19825         (cgraph_check_inline_limits): Check size.
19826         (cgraph_default_inline_p): Likewise.
19827         (cgraph_edge_badness): Compute badness based on benefit and size cost.
19828         (cgraph_decide_recursive_inlining): Check size.
19829         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
19830         and times.
19831         (cgraph_decide_inlining): Likewise.
19832         (cgraph_decide_inlining_incrementally): Likewise; honor
19833         PARAM_EARLY_INLINING_INSNS.
19834         (likely_eliminated_by_inlining_p): New predicate.
19835         (estimate_function_body_sizes): New function.
19836         (compute_inline_parameters): Use it.
19837         * except.c (must_not_throw_labels): New function.
19838         * except.h (must_not_throw_labels): Declare.
19839         * tree-inline.c (init_inline_once): Kill inlining_weigths
19840         * tree-ssa-structalias.c: Avoid uninitialized warning.
19841         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
19842         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
19843         (PARAM_INLINE_CALL_COST): Remove.
19844         (PARAM_EARLY_INLINING_INSNS): New.
19845
19846 2009-05-25  Richard Guenther  <rguenther@suse.de>
19847
19848         PR tree-optimization/36327
19849         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
19850         callback for reference translation or lookup at the point of may-defs.
19851         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
19852         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
19853         for union COMPONENT_REFs.
19854         (vn_reference_lookup_3): New callback.  Lookup from memset
19855         and CONSTRUCTOR assignment, translate through struct copies.
19856         (vn_reference_lookup_pieces): Make sure to not free the
19857         passed operands array.  Adjust walk_non_aliased_vuses call.
19858         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
19859         make sure we do not leak memory.
19860
19861 2009-05-25  Richard Guenther  <rguenther@suse.de>
19862
19863         * tree-ssa-alias.h (dump_points_to_solution): Declare.
19864         * tree-inline.c (expand_call_inline): Reset the escaped and
19865         callused solutions.
19866         * tree-ssa-structalias.c (pass_build_ealias): New.
19867         * tree-pass.h (pass_build_ealias): Declare.
19868         * passes.c (init_optimization_passes): Add PTA during
19869         early optimizations.
19870         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
19871         and CALLUSED solutions.
19872         (dump_points_to_solution): New function, split out from ...
19873         (dump_points_to_info_for): ... here.
19874         * tree-parloops.c (parallelize_loops): Reset the escaped and
19875         callused solutions.
19876
19877 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
19878
19879         PR bootstrap/40027
19880         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
19881         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
19882
19883 2009-05-25  Ira Rosen  <irar@il.ibm.com>
19884
19885         PR tree-optimization/40238
19886         * tree-vect-stmts.c (vect_init_vector): Insert initialization
19887         statements after basic block's labels.
19888         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
19889         to free the allocated memory.
19890
19891 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
19892
19893         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
19894         return address with a USE.
19895
19896 2009-05-24  Richard Guenther  <rguenther@suse.de>
19897
19898         PR middle-end/40233
19899         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
19900         array type from the main variant of the inner type.
19901
19902 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
19903
19904         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
19905         definition to bool (from int) to un-break build.
19906         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
19907
19908 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
19909
19910         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
19911         discard_stmt_changes): Delete.
19912         * tree-ssa-operands.c (scb_stack): Delete.
19913         (init_ssa_operands): Do not initialize it.
19914         (fini_ssa_operands): Do not free it.
19915         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
19916
19917         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
19918         update_stmt, remove the others.  Fix comments.
19919         * tree-dfa.c (optimize_stack_restore): Likewise.
19920         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
19921         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
19922         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
19923         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
19924         Likewise.
19925         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
19926         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
19927         (dom_opt_finalize_block): Likewise, adjusting access to
19928         stmts_to_rescan.
19929         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
19930         (stmts_to_rescan): Change item type to gimple.
19931         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
19932
19933 2009-05-24  Ira Rosen  <irar@il.ibm.com>
19934
19935         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
19936         * tree-pass.h (pass_slp_vectorize): New pass.
19937         * params.h (SLP_MAX_INSNS_IN_BB): Define.
19938         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
19939         * tree-vectorizer.c (timevar.h): Include.
19940         (user_vect_verbosity_level): Declare.
19941         (vect_location): Fix comment.
19942         (vect_set_verbosity_level): Update user_vect_verbosity_level
19943         instead of vect_verbosity_level.
19944         (vect_set_dump_settings): Add an argument. Ignore user defined
19945         verbosity if dump flags require higher level of verbosity. Print to
19946         stderr only for loop vectorization.
19947         (vectorize_loops): Update call to vect_set_dump_settings.
19948         (execute_vect_slp): New function.
19949         (gate_vect_slp): Likewise.
19950         (struct gimple_opt_pass pass_slp_vectorize): New.
19951         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
19952         access its members.
19953         (vec_info_for_bb): New function.
19954         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
19955         (VECTORIZATION_ENABLED): New macro.
19956         (SLP_ENABLED, SLP_DISABLED): Likewise.
19957         (vect_is_simple_use): Add bb_vec_info argument.
19958         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
19959         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
19960         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
19961         vect_schedule_slp, vect_analyze_slp): Likewise.
19962         (vect_analyze_stmt): Add slp_tree argument.
19963         (find_bb_location): Declare.
19964         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
19965         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
19966         (vect_analyze_loop_operations, vect_analyze_loop,
19967         get_initial_def_for_induction, vect_create_epilog_for_reduction,
19968         vect_finalize_reduction, vectorizable_reduction,
19969         vectorizable_live_operation, vect_transform_loop): Likewise.
19970         * tree-data-ref.c (dr_analyze_innermost): Update comment,
19971         skip evolution analysis if analyzing a basic block.
19972         (dr_analyze_indices): Likewise.
19973         (initialize_data_dependence_relation): Skip the test whether the
19974         object is invariant for basic blocks.
19975         (compute_all_dependences): Skip dependence analysis for data
19976         references in basic blocks.
19977         (find_data_references_in_stmt): Don't fail in case of invariant
19978         access in basic block.
19979         (find_data_references_in_bb): New function.
19980         (find_data_references_in_loop): Move code to
19981         find_data_references_in_bb and add a call to it.
19982         (compute_data_dependences_for_bb): New function.
19983         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
19984         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
19985         that STEP is 0.
19986         (vect_analyze_data_ref_dependence): Check for interleaving in case of
19987         unknown dependence in basic block and fail in case of dependence in
19988         basic block.
19989         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
19990         dependence instances from either loop or basic block vectorization
19991         info.
19992         (vect_compute_data_ref_alignment): Check if it is loop vectorization
19993         before calling nested_in_vect_loop_p.
19994         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
19995         dependence instances from either loop or basic block vectorization
19996         info.
19997         (vect_verify_datarefs_alignment): Likewise.
19998         (vect_enhance_data_refs_alignment): Adjust function calls.
19999         (vect_analyze_data_refs_alignment): Likewise.
20000         (vect_analyze_group_access): Fix printing. Skip different checks if
20001         DR_STEP is 0. Keep strided stores either in loop or basic block
20002         vectorization data structure. Fix indentation.
20003         (vect_analyze_data_ref_access): Fix comments, allow zero step in
20004         basic blocks.
20005         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
20006         dependence instances from either loop or basic block vectorization
20007         info.
20008         (vect_analyze_data_refs): Update comment. Call
20009         compute_data_dependences_for_bb to analyze basic blocks.
20010         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
20011         case of loop vectorization. In case of basic block vectorization use
20012         data-ref itself as a base.
20013         (vect_create_data_ref_ptr): In case of basic block vectorization:
20014         don't advance the pointer, add new statements before the current
20015         statement.  Adjust function calls.
20016         (vect_supportable_dr_alignment): Support only aligned accesses in
20017         basic block vectorization.
20018         * common.opt (ftree-slp-vectorize): New flag.
20019         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
20020         (vect_pattern_recog_1): Likewise.
20021         * tree-vect-stmts.c (process_use): Likewise.
20022         (vect_init_vector): Add new statements in the beginning of the basic
20023         block in case of basic block SLP.
20024         (vect_get_vec_def_for_operand): Adjust function calls.
20025         (vect_finish_stmt_generation): Likewise.
20026         (vectorizable_call): Add assert that it is loop vectorization, adjust
20027         function calls.
20028         (vectorizable_conversion, vectorizable_assignment): Likewise.
20029         (vectorizable_operation): In case of basic block SLP, take
20030         vectorization factor from statement's type and skip the relevance
20031         check. Adjust function calls.
20032         (vectorizable_type_demotion): Add assert that it is loop
20033         vectorization, adjust function calls.
20034         (vectorizable_type_promotion): Likewise.
20035         (vectorizable_store): Check for outer loop only in case of loop
20036         vectorization. Adjust function calls. For basic blocks, skip the
20037         relevance check and don't advance pointers.
20038         (vectorizable_load): Likewise.
20039         (vectorizable_condition): Add assert that it is loop vectorization,
20040         adjust function calls.
20041         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
20042         that it is not reduction, get vector type, call only supported
20043         functions, skip loop specific parts.
20044         (vect_transform_stmt): Check for outer loop only in case of loop
20045         vectorization.
20046         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
20047         (vect_is_simple_use): Fix comment, add new argument, fix conditions
20048         for external definition.
20049         * passes.c (pass_slp_vectorize): New pass.
20050         * tree-vect-slp.c (find_bb_location): New function.
20051         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
20052         check for patterns only in loops.
20053         (vect_build_slp_tree): Add argument, adjust function calls, fail in
20054         case of multiple types in basic block SLP.
20055         (vect_mark_slp_stmts_relevant): New function.
20056         (vect_supported_load_permutation_p): Fix comment.
20057         (vect_analyze_slp_instance): Add argument. In case of basic block
20058         SLP, take vectorization factor from statement's type, check that
20059         unrolling factor is 1. Adjust function call. Save SLP instance in
20060         either loop or basic block vectorization structure. Return FALSE,
20061         if SLP failed.
20062         (vect_analyze_slp): Add argument. Get strided stores groups from
20063         either loop or basic block vectorization structure. Return FALSE
20064         if basic block SLP failed.
20065         (new_bb_vec_info): New function.
20066         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
20067         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
20068         (vect_schedule_slp): Add argument. Get SLP instances from either
20069         loop or basic block vectorization structure. Set vectorization factor
20070         to be 1 for basic block SLP.
20071         (vect_slp_transform_bb): New function.
20072         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
20073
20074 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
20075
20076         * final.c (shorten_branches): Do not align labels for jump tables.
20077         (final_scan_insn): Use JUMP_TABLE_DATA_P.
20078
20079 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
20080
20081         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
20082         Remove outdated reference to flow.c and fix nits.
20083         * doc/gccint.texi: Tweak RTL description.
20084         * doc/rtl.texi: Likewise.
20085
20086 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
20087
20088         * config/avr/avr.c: Change my email address.
20089         * config/avr/avr.h: Likewise.
20090         * config/avr/avr.md: Likewise.
20091         * config/avr/avr-protos.h: Likewise.
20092         * config/avr/libgcc.S: Likewise.
20093
20094 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
20095
20096         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
20097         (spu_split_load, spu_split_store): Change return type to int.
20098         (spu_split_convert): Declare.
20099         * config/spu/predicates.md (spu_mem_operand): Remove.
20100         (spu_mov_operand): Update.
20101         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
20102         * config/spu/spu.c (regno_aligned_for_load): Remove.
20103         (reg_aligned_for_addr, spu_expand_load): Define.
20104         (spu_expand_extv): Reimplement and handle MEM.
20105         (spu_expand_insv): Handle MEM.
20106         (spu_sched_reorder): Handle insn's with length 0.
20107         (spu_legitimate_address_p): Reimplement.
20108         (store_with_one_insn_p): Return TRUE for any mode with size
20109         larger than 16 bytes.
20110         (address_needs_split): Define.
20111         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
20112         operands.
20113         (spu_convert_move): Define.
20114         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
20115         (spu_split_store): Change all MEM's to TImode.
20116         (spu_init_expanders): Preallocate registers that correspond to
20117         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
20118         mark_reg_pointer.
20119         (spu_split_convert): Define.
20120         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
20121         (_move<mode>, _movdi, _movti): Update predicate and condition.
20122         (load, store): Change to define_split.
20123         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
20124         extend<mode>ti2.
20125         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
20126         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
20127         define_insn_and_split of lshr<mode>3.
20128         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
20129         (<v>ashr<mode>3_imm): Define.
20130         (extv, extzv, insv): Allow MEM operands.
20131         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
20132         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
20133         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
20134         (_spu_convert2): Change to define_insn_and_split and remove the
20135         corresponding define_peephole2.
20136         (stack_protect_set, stack_protect_test, stack_protect_test_si):
20137         Change predicates to memory_operand.
20138
20139 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
20140
20141         * config/arm/thumb2.md: Add 16-bit multiply instructions.
20142
20143 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
20144
20145         PR tree-optimization/40219
20146         * tree.c (iterative_hash_expr): Make sure the builtin function is
20147         a normal builtin function and not a front end or back end builtin
20148         before indexing into the built_in_decls array.
20149
20150 2009-05-22  Richard Guenther  <rguenther@suse.de>
20151
20152         PR middle-end/38964
20153         * alias.c (write_dependence_p): Do not use TBAA for answering
20154         anti-dependence or output-dependence.
20155         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
20156         (emit_pointer_definition): Remove.
20157         (emit_alias_warning): Likewise.
20158         (find_what_var_points_to): Remove TBAA pruning code.
20159         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
20160         violations.
20161         (compute_points_to_sets): Remove code computing the set of
20162         dereferenced pointers.
20163         * tree-data-ref.c (dr_may_alias_p): Properly use the split
20164         oracle for querying anti and output dependencies.
20165         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
20166         if TBAA may be applied.
20167         (refs_anti_dependent_p): New function.
20168         (refs_output_dependent_p): Likewise.
20169         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
20170         (refs_output_dependent_p): Likewise.
20171         * doc/tree-ssa.texi (Memory model): New section.
20172         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
20173         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
20174         * cfgexpand.c (expand_gimple_basic_block): Do not handle
20175         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
20176         * expr.c (expand_expr_real_1): Likewise.
20177         * gimple-low.c (lower_stmt): Likewise.
20178         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
20179         (dump_gimple_cdt): Remove.
20180         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
20181         (gimple_size): Likewise.
20182         (walk_gimple_op): Likewise.
20183         (is_gimple_stmt): Likewise.
20184         (walk_stmt_load_store_addr_ops): Likewise.
20185         (gimple_build_cdt): Remove.
20186         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
20187         * gimple.h (gimple_cdt_new_type): Remove.
20188         (gimple_cdt_new_type_ptr): Likewise.
20189         (gimple_cdt_set_new_type): Likewise.
20190         (gimple_cdt_location): Likewise.
20191         (gimple_cdt_location_ptr): Likewise.
20192         (gimple_cdt_set_location): Likewise.
20193         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
20194         * tree-cfg.c (remove_useless_stmts_1): Do not handle
20195         GIMPLE_CHANGE_DYNAMIC_TYPE.
20196         (verify_types_in_gimple_stmt): Likewise.
20197         * tree-inline.c (estimate_num_insns): Likewise.
20198         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
20199         (copy_decl_to_var): Likewise.
20200         (copy_result_decl_to_var): Likewise.
20201         * tree-pretty-print.c (dump_generic_node): Do not handle
20202         CHANGE_DYNAMIC_TYPE_EXPR.
20203         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
20204         * tree-ssa-operands.c (get_expr_operands): Likewise.
20205         * tree-ssa-structalias.c (struct variable_info): Remove
20206         no_tbaa_pruning member.
20207         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
20208         (unify_nodes): Do not copy it.
20209         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
20210         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
20211         (set_uids_in_ptset): Do not check it.
20212         (find_what_var_points_to): Likewise.
20213         (compute_tbaa_pruning): Remove.
20214         (compute_points_to_sets): Do not call it.
20215         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
20216         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
20217         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
20218         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
20219         (DECL_NO_TBAA_P): Likewise.
20220         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
20221         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
20222         (expand_omp_atomic_pipeline): Do not set it.
20223         * print-tree.c (print_node): Do not dump it.
20224         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
20225         redundant check.
20226
20227 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
20228
20229         PR target/39856
20230         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
20231         for clobber.
20232
20233 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
20234
20235         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
20236         non-external.
20237
20238 2009-05-22  Ben Elliston  <bje@au.ibm.com>
20239
20240         * Makefile.in (bversion.h, s-bversion): New targets.
20241         (TOPLEV_H): Add bversion.h.
20242         * toplev.h: Include "bversion.h".
20243         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
20244         the __format__ attribute only if compiling with the same version
20245         of GCC as the sources (the "build version").
20246
20247 2009-05-22  Ben Elliston  <bje@au.ibm.com>
20248
20249         * c-format.c (handle_format_attribute): Fix comment typo.
20250
20251 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
20252
20253         PR target/37846
20254         * config/ia64/ia64.opt (mfused-madd): New.
20255         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
20256         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
20257         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
20258         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
20259         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
20260         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
20261         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
20262         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
20263         instruction if !TARGET_FUSED_MADD.
20264         (fpma, fpms): Remove colon from name.
20265
20266 2009-05-22  Richard Guenther  <rguenther@suse.de>
20267
20268         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
20269         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
20270         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
20271         TARGET_MEM_REF.
20272         (create_expression_by_pieces): Only convert if necessary.
20273         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
20274         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
20275
20276 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
20277
20278         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
20279         regular pattern from a template and rename it ...
20280         (*extzv_truncsi_exts): ... to this.
20281
20282 2009-05-21  Richard Guenther  <rguenther@suse.de>
20283
20284         * cgraph.h (struct cgraph_node): Remove inline_decl member.
20285         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
20286         (cgraph_default_inline_p): Likewise.
20287         (cgraph_decide_inlining_incrementally): Likewise.
20288
20289 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
20290             Uros Bizjak  <ubizjak@gmail.com>
20291
20292         * config/i386/cpuid.h (bit_MOVBE): New.
20293
20294         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
20295
20296         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
20297         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
20298         (ix86_handle_option): Handle OPT_mmovbe.
20299         (ix86_target_string): Add -mmovbe.
20300         (pta_flags): Add PTA_MOVBE.
20301         (processor_alias_table): Add PTA_MOVBE to "atom".
20302         (override_options): Handle PTA_MOVBE.
20303
20304         * config/i386/i386.h (TARGET_MOVBE): New.
20305
20306         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
20307         (*bswapsi_movbe): New.
20308         (*bswapdi_movbe): Likewise.
20309         (bswapdi2): Renamed to ...
20310         (*bswapdi_1): This.
20311         (bswapdi2): New expander.
20312
20313         * config/i386/i386.opt (mmovbe): New.
20314
20315         * doc/invoke.texi: Document -mmovbe.
20316
20317 2009-05-21  Taras Glek  <tglek@mozilla.com>
20318
20319         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
20320         * gcc-plugin.h (plugin_init): Updated signature.
20321         * gcc-plugin.h (plugin_name_args): Moved to this header.
20322         * doc/plugins.texi (plugin_init): Updated documention to reflect
20323         API change.
20324         * doc/plugins.texi (plugin_name_args): Added to documention.
20325
20326 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
20327
20328         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
20329         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
20330
20331 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
20332
20333         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
20334         JUMP_TABLE_DATA_P predicates where applicable.
20335         * config/i386/predicates.md: Ditto.
20336         * config/i386/sse.md: Ditto.
20337
20338 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
20339
20340         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
20341         operand2 -128 override length_immediate attribute to 1.
20342         * config/i386/predicates.md (constm128_operand): New predicate.
20343
20344         * config/i386/i386.c (memory_address_length): Handle %r12
20345         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
20346         also check REGNO.
20347         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
20348         mode look through optional ZERO_EXTEND and SUBREG.
20349         * config/i386/i386.md (R12_REG): New define_constant.
20350         (prefix_data16): For sse unit set also for MODE_TI insns.
20351         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
20352         insns set if operand 1 is ext_QIreg_operand.
20353         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
20354         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
20355         immediate.
20356         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
20357         mode from MODE_DI to MODE_SI.
20358         (movdi_1_rex64): Override modrm and length_immediate attributes
20359         only for movabs (TYPE_IMOV, alternative 2).
20360         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
20361         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
20362         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
20363         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
20364         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
20365         prefix_rex attribute if DImode.
20366         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
20367         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
20368         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
20369         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
20370         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
20371         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
20372         Likewise.  For TYPE_IMOV clear length_immediate attribute.
20373         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
20374         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
20375         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
20376         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
20377         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
20378         or one operand TYPE_ISHIFT.
20379         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
20380         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
20381         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
20382         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
20383         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
20384         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
20385         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
20386         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
20387         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
20388         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
20389         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
20390         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
20391         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
20392         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
20393         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
20394         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
20395         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
20396         set mode attribute, don't override length attribute.
20397         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
20398         to 1.
20399         (return_internal_long): Set length attribute to 2 instead of 1.
20400         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
20401         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
20402         prefix_rex attribute.
20403         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
20404         New predicates.
20405         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
20406
20407 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
20408
20409         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
20410
20411 2009-05-20  Ian Lance Taylor  <iant@google.com>
20412
20413         * tree.c (build_tree_list_vec_stat): New function.
20414         (ctor_to_vec): New function.
20415         (build_nt_call_vec): New function.
20416         (build_call_array): Change args to be a const pointer.
20417         (build_call_vec): New function.
20418         * tree.h (build_nt_call_vec): Declare.
20419         (build_tree_list_vec_stat): Declare.
20420         (build_tree_list_vec): Define.
20421         (build_call_array): Update declaration.
20422         (build_call_vec): Declare.
20423         (ctor_to_vec): Declare.
20424         * c-common.c (tree_vector_cache): New static variable.
20425         (make_tree_vector): New function.
20426         (release_tree_vector): New function.
20427         (make_tree_vector_single): New function.
20428         (make_tree_vector_copy): New function.
20429         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
20430         (make_tree_vector_single, make_tree_vector_copy): Declare.
20431         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
20432         (c_parser_expr_list): Don't manage cache here, instead call
20433         make_tree_vector.
20434         (c_parser_release_expr_list): Remove static function.
20435         (c_parser_vec_to_tree_list): Remove static function.
20436         (c_parser_attributes): Call build_tree_list_vec instead of
20437         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
20438         c_parser_release_expr_list.
20439         (c_parser_postfix_expression_after_primary): Likewise.
20440         (c_parser_objc_keywordexpr): Likewise.
20441
20442 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
20443
20444         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
20445         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
20446         TARGET_CONVERT_TO_TYPE.
20447         * hooks.c (hook_tree_const_tree_null): Define.
20448         * hooks.h (hook_tree_const_tree_null): Declare.
20449         * target.h (struct gcc_target):  Add invalid_parameter_type,
20450         invalid_return_type, promoted_type, and convert_to_type fields.
20451         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
20452         (TARGET_INVALID_RETURN_TYPE): Define.
20453         (TARGET_PROMOTED_TYPE): Define.
20454         (TARGET_CONVERT_TO_TYPE): Define.
20455         (TARGET_INITIALIZER): Update for new fields.
20456         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
20457         (grokparms): Check targetm.invalid_parameter_type.
20458         * c-typeck.c (default_conversion): Check targetm.promoted_type.
20459         * c-convert.c (convert): Check targetm.convert_to_type.
20460
20461 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
20462
20463         * config/mips/mips.md (*extenddi_truncate<mode>,
20464         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
20465         defintions.
20466         (*extendhi_truncateqi): New define_insn_and_sptit.
20467
20468 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
20469
20470         PR middle-end/40204
20471         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
20472         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
20473
20474 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
20475
20476         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
20477         the operand of VIEW_CONVERT_EXPR.
20478
20479 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
20480
20481         * config/i386/driver-i386.c (host_detect_local_cpu): Check
20482         extended family and model for Intel processors.  Support Intel Atom.
20483
20484 2009-05-20  Olivier Hainque  <hainque@adacore.com>
20485
20486         * gstab.h (stab_code_type): Define, to be used instead of the
20487         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
20488         notice.
20489         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
20490         occurrences by stab_code_type.
20491         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
20492
20493 2009-05-20  Martin Jambor  <mjambor@suse.cz>
20494
20495         * tree-flow.h (insert_edge_copies_seq): Undeclare.
20496         (sra_insert_before): Likewise.
20497         (sra_insert_after): Likewise.
20498         (sra_init_cache): Likewise.
20499         (sra_type_can_be_decomposed_p): Likewise.
20500         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
20501         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
20502         (sra_insert_before): Likewise.
20503         (sra_insert_after): Likewise.
20504         (sra_init_cache): Likewise.
20505         (insert_edge_copies_seq): Made static and moved upwards.
20506
20507         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
20508         case.
20509
20510         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
20511
20512         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
20513         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
20514         simple copies.
20515
20516 2009-05-20  Richard Guenther  <rguenther@suse.de>
20517
20518         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
20519         with mismatched comparison modes.
20520
20521 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
20522
20523         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
20524         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
20525         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
20526         with shifts for Thumb2.
20527         (orsi_notsi): New for orn.
20528         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
20529         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
20530         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
20531         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
20532         Don't invert remainder for IOR.
20533
20534 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
20535
20536         PR tree-optimization/40087
20537         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
20538         number_of_iterations_ne): Rename never_infinite argument.
20539         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
20540         number_of_iterations_le): Handle pointer-type ivs when
20541         exit_must_be_taken is false.
20542         (number_of_iterations_cond):  Do not always assume that
20543         exit_must_be_taken if the control variable is a pointer.
20544
20545 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20546
20547         * c-typeck.c (build_binary_op): Allow % on integal vectors.
20548         * doc/extend.texi (Vector Extension): Document that % is allowed too.
20549
20550 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
20551
20552         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
20553         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
20554
20555 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20556
20557         PR c/40172
20558         * c.opt (Wlogical-op): Disabled by default.
20559         * c-opt (c_common_post_options): Do not enable Wlogical-op with
20560         Wextra.
20561         * doc/invoke.texi (Wlogical-op): Likewise.
20562
20563 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
20564
20565         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
20566         into CASE_CONVERT.
20567         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
20568         Propagate the type of the first operand.
20569         <ASSERT_EXPR>: Simplify.
20570         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
20571         Rewrite using the RHS code as discriminant.
20572         <NOP_EXPR>: Turn into CASE_CONVERT.
20573         <PLUS_EXPR>: Propagate the type of the first operand.
20574
20575 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
20576
20577         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
20578         (ia64_dconst_0_375): New.
20579         * config/ia64/ia64.c (ia64_override_options): Remove
20580         -minline-sqrt-min-latency warning.
20581         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
20582         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
20583         * config/ia64/ia64.md (*sqrt_approx): Remove.
20584         (sqrtsf2): Remove #if 0.
20585         (sqrtsf2_internal_thr): Rewrite and move to div.md.
20586         (sqrtdf): Remove assert.
20587         (sqrtdf2_internal_thr): Rewrite and move to div.md.
20588         (sqrtxf2): Remove #if 0.
20589         (sqrtxf2_internal_thr): Rewrite and move to div.md.
20590         * div.md (sqrt_approx_rf): New.
20591         (sqrtsf2_internal_thr): New implementation.
20592         (sqrtsf2_internal_lat): New.
20593         (sqrtdf2_internal_thr: New implementation.
20594         (sqrtxf2_internal): New implementation.
20595
20596 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
20597             Hans-Peter Nilsson  <hp@axis.com>
20598
20599         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
20600         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
20601         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
20602         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
20603         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
20604         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
20605         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
20606         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
20607         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
20608         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
20609         * c-common.c: ...from here.
20610
20611 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20612
20613         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
20614
20615 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20616
20617         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
20618
20619 2009-05-19  Ben Elliston  <bje@au.ibm.com>
20620
20621         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
20622         assignments with memcpy calls.
20623         (add_fdes): Likewise.
20624         (binary_search_unencoded_fdes): Likewise.
20625         (linear_search_fdes): Eliminate type puns.
20626
20627 2009-05-19  Richard Guenther  <rguenther@suse.de>
20628
20629         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
20630         not falsely claim to have propagated into all uses.
20631
20632 2009-05-19  Ben Elliston  <bje@au.ibm.com>
20633
20634         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
20635         version to v3.0.
20636
20637 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
20638
20639         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
20640         * config/sh/sh.c (sh_legitimate_address_p): Make static.
20641         (TARGET_LEGITIMATE_ADDRESS_P): New.
20642         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20643         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
20644
20645 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
20646
20647         PR debug/40109
20648         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
20649         child of the containing namespace's DIE.
20650
20651 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
20652
20653         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
20654         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
20655         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
20656         extend patterns.
20657
20658 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
20659
20660         PR target/39942
20661         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
20662         gen_align with gen_pad.
20663         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
20664         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
20665
20666         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
20667         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
20668
20669         * config/i386/i386.md (align): Renamed to ...
20670         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
20671         ASM_OUTPUT_MAX_SKIP_PAD.
20672
20673 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
20674
20675         * config.gcc: Fix variable syntax.
20676
20677         PR target/39531
20678         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
20679         before calling exact_log2.
20680         (output_iorsi3): Likewise.
20681         (output_xorsi3): Likewise.
20682
20683 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
20684
20685         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
20686         for the none zero constant operand except for EQ and NE
20687         comprisons even when the first operand is R0.
20688
20689 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
20690
20691         * config/s390/2064.md: Remove trailing whitespaces.
20692         * config/s390/2084.md: Likewise.
20693         * config/s390/constraints.md: Likewise.
20694         * config/s390/fixdfdi.h: Likewise.
20695         * config/s390/libgcc-glibc.ver: Likewise.
20696         * config/s390/s390-modes.def: Likewise.
20697         * config/s390/s390-protos.h: Likewise.
20698         * config/s390/s390.c: Likewise.
20699         * config/s390/s390.h: Likewise.
20700         * config/s390/s390.md: Likewise.
20701         * config/s390/tpf-unwind.h: Likewise.
20702
20703 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
20704
20705         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
20706
20707 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
20708
20709         M68K TLS support.
20710         * configure.ac (m68k-*-*): Check if binutils support TLS.
20711         * configure: Regenerate.
20712         * config/m68k/predicates.md (symbolic_operand): Extend comment.
20713         * config/m68k/constraints.md (Cu): New constraint.
20714         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
20715         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
20716         (movsi): Handle TLS symbols.
20717         (addsi3_5200): Handle XTLS symbols, indent.
20718         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
20719         (m68k_tls_reference_p): Declare.
20720         (m68k_legitimize_address): Declare.
20721         (m68k_unwrap_symbol): Declare.
20722         * config/m68k/m68k.opt (mxtls): New option.
20723         * config/m68k/m68k.c (ggc.h): Include.
20724         (m68k_output_dwarf_dtprel): Implement hook.
20725         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
20726         (m68k_expand_prologue): Load GOT pointer when function needs it.
20727         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
20728         (m68k_legitimate_constant_address_p): Same.
20729         (m68k_decompose_address): Handle TLS references.
20730         (m68k_get_gp): New static function.
20731         (enum m68k_reloc): New contants.
20732         (TLS_RELOC_P): New macro.
20733         (m68k_wrap_symbol): New static function.
20734         (m68k_unwrap_symbol): New function.
20735         (m68k_final_prescan_insn_1): New static function.
20736         (m68k_final_prescan_insn): New function.
20737         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
20738         functions.
20739         (legitimize_pic_address): Handle TLS references..
20740         (m68k_tls_get_addr, m68k_get_tls_get_addr)
20741         (m68k_libcall_value_in_a0_p)
20742         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
20743         (m68k_call_m68k_read_tp): Helper variables and functions for ...
20744         (m68k_legitimize_tls_address): Handle TLS references.
20745         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
20746         New functions.
20747         (m68k_legitimize_address): Handle TLS symbols.
20748         (m68k_get_reloc_decoration): New static function.
20749         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
20750         UNSPEC_RELOC32.
20751         (m68k_output_dwarf_dtprel): Implement hook.
20752         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
20753         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
20754         m68k_call_* routines.
20755         (sched_attr_op_type): Handle TLS symbols.
20756         (gt-m68k.h): Include.
20757         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
20758         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
20759
20760 2009-05-18  Martin Jambor  <mjambor@suse.cz>
20761
20762         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
20763         (visit_store_addr_for_mod_analysis): New function.
20764         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
20765         (determine_cst_member_ptr): Use gimple_assign_single_p.
20766         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
20767         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
20768         operands.  Don't check number of operands of a NOP_EXPR.
20769
20770 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
20771
20772         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
20773
20774 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20775
20776         PR c/40172
20777         * c-common.c (warn_logical_operator): Don't warn if one of
20778         expression isn't always true or false.
20779
20780 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
20781
20782         * config/i386/biarch32.h: New file.
20783         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
20784
20785 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
20786
20787         * config/mips/mips.md (*zero_extend<mode>_trunchi,
20788         *zero_extend<mode>_truncqi): Merge these into ...
20789         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
20790         Name the pattern following this as *zero_extendhi_truncqi.
20791
20792 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
20793
20794         PR middle-end/39301
20795         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
20796         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
20797         (output_info): Make field HOST_WIDEST_INT.
20798         (print_statistics): Use HOST_WIDEST_INT_PRINT.
20799         (dump_bitmat_statistics): Same.
20800
20801 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
20802
20803         * config.gcc (use_gcc_stdint):  Set to wrap.
20804         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
20805         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
20806         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
20807         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
20808         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
20809         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
20810         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
20811         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
20812
20813 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
20814
20815         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
20816         tune_64.
20817         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
20818         Move definitions earlier.
20819         (OPT_ARCH64, OPT_ARCH32): Define.
20820         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
20821         and tune_64.
20822
20823 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
20824
20825         PR target/40153
20826         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
20827         implies.
20828
20829 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
20830
20831         * arm.md (movdi2): Copy non-reg values to DImode registers.
20832
20833 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
20834
20835         PR target/39942
20836         * final.c (label_to_max_skip): New function.
20837         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
20838         CODE_LABEL_NUMBER <= max_labelno.
20839         * output.h (label_to_max_skip): New prototype.
20840         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
20841         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
20842         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
20843         Handle CODE_LABELs with >= 16 byte alignment or with
20844         max_skip == (1 << align) - 1.
20845         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
20846         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
20847
20848         PR target/39942
20849         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
20850         .p2align 3 if MAX_SKIP is smaller than 7.
20851         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
20852
20853 2009-05-15  Ian Lance Taylor  <iant@google.com>
20854
20855         * alias.c (struct alias_set_entry_d): Rename from struct
20856         alias_set_entry.  Change all uses.
20857         * except.c (struct call_site_record_d): Rename from struct
20858         call_site_record.  Change all uses.
20859         * except.h (struct eh_region_d): Rename from struct eh_region.
20860         Change all uses.
20861         * gcse.c (struct hash_table_d): Rename from struct hash_table.
20862         Change all uses.
20863         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
20864         ivtype_map_elt.  Change all uses.
20865         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
20866         Change all uses.
20867         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
20868         * graphite.h (struct name_tree_d): Rename from struct name_tree.
20869         Change all uses.
20870         (struct sese_d): Rename from struct sese.  Change all uses.
20871         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
20872         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
20873         * optabs.h (struct optab_d): Rename from struct optab.  Change all
20874         uses.
20875         (struct convert_optab_d): Rename from struct convert_optab.
20876         Change all uses.
20877         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
20878         ipa_opt_pass.  Change all uses.
20879         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
20880         all uses.
20881
20882         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
20883         defined as a typedef.
20884         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
20885         defined as a tag.
20886
20887 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20888
20889         PR 16302
20890         * fold-const.c (make_range,build_range_check,merge_ranges): Move
20891         declaration to...
20892         (merge_ranges): Returns bool.
20893         * tree.h (make_range): .. to here.
20894         (build_range_check): Likewise.
20895         (merge_ranges): Likewise. Renamed from merge_ranges.
20896         * c-typeck.c (parser_build_binary_op): Update calls to
20897         warn_logical_operator.
20898         * c-common.c (warn_logical_operator): Add new warning.
20899         * c-common.h (warn_logical_operator): Update declaration.
20900
20901 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20902
20903         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
20904
20905 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20906
20907         * doc/install.texi: Document MPC requirements, flags etc.
20908
20909         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
20910         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
20911         Evaluate constant arguments.
20912         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
20913         (fold_builtin_1): Likewise, also evaluate constant arguments.
20914         Remove superfluous break.
20915         (do_mpc_ckconv): New.
20916         * real.h: Include mpc.h.
20917         * toplev.c (print_version): Output MPC version info if available.
20918
20919 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20920
20921         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
20922
20923 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
20924
20925         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
20926         only once.
20927
20928 2009-05-15  Jan Hubicka  <jh@suse.cz>
20929
20930         * doc/invoke.texi (max-early-inliner-iterations): New flag.
20931         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
20932         (try_inline): Fix return value.
20933         (cgraph_decide_inlining_incrementally): Honor new value.
20934         (cgraph_early_inlining): Handle indirect inlining.
20935         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
20936
20937 2009-05-15  Jan Hubicka  <jh@suse.cz>
20938
20939         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
20940         * cgraphunit.c (cgraph_finalize_function): Set it.
20941         (cgraph_expand_function): Use it.
20942
20943 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20944
20945         * real.c (encode_ieee_half): Define.
20946         (decode_ieee_half): Define.
20947         (ieee_half_format): Define.
20948         (arm_half_format): Define.
20949         * real.h (ieee_half_format): Declare.
20950         (arm_half_format): Declare.
20951
20952 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20953
20954         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
20955         swapped, and reversed optabs exist before trying to use them.
20956
20957 2009-05-15  Paul Brook  <paul@codesourcery.com>
20958             Sandra Loosemore  <sandra@codesourcery.com>
20959
20960         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
20961         loads.  Allow PRE_DEC.
20962         (output_move_neon): Handle PRE_DEC.
20963         (arm_print_operand): Add 'A' for neon structure loads.
20964         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
20965         * config/arm/neon.md (neon_mov): Update comment.
20966         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
20967         calls.
20968         (Um): New constraint.
20969
20970 2009-05-15  Jan Hubicka  <jh@suse.cz>
20971
20972         Revert the following patch until testsuite fallout is fixed:
20973         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
20974         * cgraph.h (struct inline_summary): New filed self_wize,
20975         size_inlining_benefit, self_time and time_inlining_benefit.
20976         (struct cgraph_global_info): Replace insns by time ans size fields.
20977         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
20978         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
20979         (ipcp_update_callgraph): Do not touch function bodies.
20980         * ipa-inline.c: Include except.h
20981         (MAX_TIME): New constant.
20982         (overall_insns): Remove
20983         (overall_size, max_benefit): New static variables.
20984         (cgraph_estimate_time_after_inlining): New function.
20985         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
20986         (cgraph_clone_inlined_nodes): Update size.
20987         (cgraph_mark_inline_edge): Update size.
20988         (cgraph_estimate_growth): Use size info.
20989         (cgraph_check_inline_limits): Check size.
20990         (cgraph_default_inline_p): Likewise.
20991         (cgraph_edge_badness): Compute badness based on benefit and size cost.
20992         (cgraph_decide_recursive_inlining): Check size.
20993         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
20994         and times.
20995         (cgraph_decide_inlining): Likewise.
20996         (cgraph_decide_inlining_incrementally): Likewise; honor
20997         PARAM_EARLY_INLINING_INSNS.
20998         (likely_eliminated_by_inlining_p): New predicate.
20999         (estimate_function_body_sizes): New function.
21000         (compute_inline_parameters): Use it.
21001         * except.c (must_not_throw_labels): New function.
21002         * except.h (must_not_throw_labels): Declare.
21003         * tree-inline.c (init_inline_once): Kill inlining_weigths
21004         * tree-ssa-structalias.c: Avoid uninitialized warning.
21005         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
21006         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
21007         (PARAM_INLINE_CALL_COST): Remove.
21008         (PARAM_EARLY_INLINING_INSNS): New.
21009
21010 2009-05-15  Richard Guenther  <rguenther@suse.de>
21011
21012         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
21013         not TODO_update_ssa.
21014
21015 2009-05-15  Richard Guenther  <rguenther@suse.de>
21016
21017         PR tree-optimization/39999
21018         * gimple.h (gimple_expr_type): Use the expression type looking
21019         through useless conversions.
21020         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
21021         (vn_nary_op_insert_stmt): Likewise.
21022         (simplify_binary_expression): Likewise.
21023
21024 2009-05-15  Richard Guenther  <rguenther@suse.de>
21025
21026         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
21027         New options, enabled by default.
21028         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
21029         Document.
21030         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
21031         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
21032         * tree-ssa-structalias.c (gate_tree_pta): New function.
21033         (pass_build_alias): Use it.
21034
21035 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
21036
21037         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
21038         recurse on an invariant address if a conversion from a pointer
21039         type to a wider integer type is involved.
21040
21041 2009-05-15  Jan Hubicka  <jh@suse.cz>
21042
21043         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21044         * cgraph.h (struct inline_summary): New filed self_wize,
21045         size_inlining_benefit, self_time and time_inlining_benefit.
21046         (struct cgraph_global_info): Replace insns by time ans size fields.
21047         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21048         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21049         (ipcp_update_callgraph): Do not touch function bodies.
21050         * ipa-inline.c: Include except.h
21051         (MAX_TIME): New constant.
21052         (overall_insns): Remove
21053         (overall_size, max_benefit): New static variables.
21054         (cgraph_estimate_time_after_inlining): New function.
21055         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21056         (cgraph_clone_inlined_nodes): Update size.
21057         (cgraph_mark_inline_edge): Update size.
21058         (cgraph_estimate_growth): Use size info.
21059         (cgraph_check_inline_limits): Check size.
21060         (cgraph_default_inline_p): Likewise.
21061         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21062         (cgraph_decide_recursive_inlining): Check size.
21063         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21064         and times.
21065         (cgraph_decide_inlining): Likewise.
21066         (cgraph_decide_inlining_incrementally): Likewise; honor
21067         PARAM_EARLY_INLINING_INSNS.
21068         (likely_eliminated_by_inlining_p): New predicate.
21069         (estimate_function_body_sizes): New function.
21070         (compute_inline_parameters): Use it.
21071         * except.c (must_not_throw_labels): New function.
21072         * except.h (must_not_throw_labels): Declare.
21073         * tree-inline.c (init_inline_once): Kill inlining_weigths
21074         * tree-ssa-structalias.c: Avoid uninitialized warning.
21075         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
21076         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
21077         (PARAM_INLINE_CALL_COST): Remove.
21078         (PARAM_EARLY_INLINING_INSNS): New.
21079         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
21080         (inline-call-cost): Remove.
21081         (early-inlining-insns): New.
21082
21083 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
21084
21085         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
21086         for bounds.
21087         (print_int_cst_bounds_in_octal_p): Likewise.
21088         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
21089         with subtypes.
21090         * dwarf2out.c (base_type_die): Likewise.
21091         (is_subrange_type): Delete.
21092         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
21093         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
21094         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
21095         if the destination type is boolean.
21096         (build_range_check): Do not special-case subtypes.
21097         (fold_sign_changed_comparison): Likewise.
21098         (fold_unary): Likewise.
21099         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
21100         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
21101         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
21102         * tree.c (subrange_type_for_debug_p): New predicate based on the
21103         former is_subrange_type.
21104         * tree.h (subrange_type_for_debug_p): Declare.
21105         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
21106         (convert_affine_scev): Remove call to above function.
21107         (chrec_convert_aggressive): Likewise.
21108         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
21109         false for conversions involving subtypes.
21110         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
21111         (vrp_val_min): Likewise.
21112         (needs_overflow_infinity): Likewise.
21113         (extract_range_from_unary_expr): Likewise.
21114
21115 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
21116
21117         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
21118         * config/frv/frv.c: Likewise.
21119         * config/s390/s390.c: Likewise.
21120         * config/sparc/sparc.h: Likewise.
21121         * config/i386/i386.h: Likewise.
21122         * config/i386/i386.c: Likewise.
21123         * config/crx/crx.c: Likewise.
21124         * config/m68hc11/m68hc11.h: Likewise.
21125         * config/iq2000/iq2000.c: Likewise.
21126         * config/mn10300/mn10300.h: Likewise.
21127         * config/mn10300/mn10300.c: Likewise.
21128         * config/m68k/m68k.c: Likewise.
21129         * config/rs6000/rs6000.c: Likewise.
21130         * config/rs6000/xcoff.h: Likewise.
21131         * config/rs6000/linux64.h: Likewise.
21132         * config/rs6000/sysv4.h: Likewise.
21133         * config/score/score3.c: Likewise.
21134         * config/score/score7.c: Likewise.
21135         * config/score/score.c: Likewise.
21136         * config/arm/arm.md: Likewise.
21137         * config/mips/mips.c: Likewise.
21138         * config/mips/mips.md: Likewise.
21139         * config/bfin/bfin.h: Likewise.
21140         * config/pa/pa.c: Likewise.
21141         * config/pa/constraints.md: Likewise.
21142
21143         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
21144         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
21145         * config/pdp11/pdp11.h: Use memory_address_p instead.
21146
21147 2009-05-14  Ian Lance Taylor  <iant@google.com>
21148
21149         * passes.c (finish_optimization_passes): Change i to int.
21150         * plugin.c (plugins_active_p): Change event to int.
21151         (dump_active_plugins): Likewise.
21152         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
21153         Add cast.
21154         * tree.c (tree_range_check_failed): Change c to unsigned int.
21155         (omp_clause_range_check_failed): Likewise.
21156         (build_common_builtin_nodes): Change mode to int.  Add cast.
21157         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
21158         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
21159
21160         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
21161         ++ or -- with a variable of enum type.
21162
21163 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21164
21165         PR driver/40144
21166         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
21167
21168 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21169
21170         * store-motion.c: Do not include params.h
21171         * Makefile.in: Fix dependencies for various files.
21172
21173 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21174
21175         * auto-inc-dec.c: Fix pass description, remove apparent
21176         accidental duplication.
21177
21178 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
21179
21180         PR middle-end/40147
21181         * ipa-utils.h (memory_identifier_string): Moved to ...
21182         * tree.h (memory_identifier_string): Here.  Add GTY(()).
21183
21184 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
21185
21186         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
21187         in the former documentation of...
21188         (GO_IF_LEGITIMATE_ADDRESS): ... this.
21189         * ira-conflicts.c (get_dup_num): Use address_operand.
21190         * targhooks.c (default_legitimate_address_p): New.
21191         * targhooks.h (default_legitimate_address_p): New.
21192         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
21193         Call hook.
21194         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
21195         * target.h (struct target): Add legitimate_address_p.
21196         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
21197         (TARGET_INITIALIZER): Include it.
21198
21199         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21200         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
21201         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
21202         (TARGET_LEGITIMATE_ADDRESS_P): New.
21203
21204         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21205         (REG_OK_STRICT_P): Delete.
21206         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
21207         (frv_legitimate_address_p_1): ... this.
21208         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
21209         (frv_legitimate_address_p_1): ... the renamed old
21210         frv_legitimate_address_p.
21211         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
21212         (TARGET_LEGITIMATE_ADDRESS_P): New.
21213
21214         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21215         * config/s390/s390-protos.h (legitimate_address_p): Remove.
21216         * config/s390/s390.c (legitimate_address_p): Rename to...
21217         (s390_legitimate_address_p): ... this, make static.
21218         (legitimize_address): Adjust call.
21219         (TARGET_LEGITIMATE_ADDRESS_P): New.
21220         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
21221
21222         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21223         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
21224         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
21225         (TARGET_LEGITIMATE_ADDRESS_P): New.
21226
21227         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21228         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
21229         * config/spu/spu.c (spu_legitimate_address): Rename to...
21230         (spu_legitimate_address_p): ... this, make static.
21231         (TARGET_LEGITIMATE_ADDRESS_P): New.
21232
21233         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21234         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
21235         * config/sparc/sparc.c (legitimate_address_p): Rename to...
21236         (sparc_legitimate_address_p): ... this, make static and return bool.
21237         (legitimize_address): Adjust call.
21238         (TARGET_LEGITIMATE_ADDRESS_P): New.
21239
21240         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21241         * config/i386/i386-protos.h (legitimate_address_p): Remove.
21242         * config/i386/i386.c (legitimate_address_p): Rename to...
21243         (ix86_legitimate_address_p): ... this, make static.
21244         (constant_address_p): Move after it, adjust call.
21245         (TARGET_LEGITIMATE_ADDRESS_P): New.
21246
21247         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21248         * config/avr/avr-protos.h (legitimate_address_p): Remove.
21249         * config/avr/avr.c (legitimate_address_p): Rename to...
21250         (avr_legitimate_address_p): ... this, make static.
21251         (legitimize_address): Adjust call.
21252         (TARGET_LEGITIMATE_ADDRESS_P): New.
21253
21254         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21255         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
21256         * config/crx/crx.c (crx_legitimate_address_p): Make static.
21257         (TARGET_LEGITIMATE_ADDRESS_P): New.
21258
21259         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21260         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
21261         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
21262         (TARGET_LEGITIMATE_ADDRESS_P): New.
21263
21264         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21265         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
21266         Remove.
21267         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
21268         Make static.
21269         (TARGET_LEGITIMATE_ADDRESS_P): New.
21270
21271         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21272         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
21273         Remove.
21274         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
21275         Rename to...
21276         (m68hc11_legitimate_address_p): ... this, make static.
21277         (go_if_legitimate_address_internal): Rename to...
21278         (m68hc11_legitimate_address_p_1): ... this.
21279         (legitimize_address): Adjust call.
21280         (TARGET_LEGITIMATE_ADDRESS_P): New.
21281
21282         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21283         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
21284         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
21285         (TARGET_LEGITIMATE_ADDRESS_P): New.
21286
21287         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21288         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
21289         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
21290         (mn10300_legitimate_address_p): ... this, make static.
21291         (TARGET_LEGITIMATE_ADDRESS_P): New.
21292
21293         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21294         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
21295         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
21296         (TARGET_LEGITIMATE_ADDRESS_P): New.
21297
21298         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21299         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
21300         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
21301         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21302         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
21303         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
21304         (rs6000_legitimate_address_p): ... this, make static.
21305         (TARGET_LEGITIMATE_ADDRESS_P): New.
21306         (REG_MODE_OK_FOR_BASE_P): Delete.
21307         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
21308
21309         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21310         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
21311         Delete.
21312         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
21313         static, adjust types.
21314         (TARGET_LEGITIMATE_ADDRESS_P): New.
21315
21316         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21317         * config/score/score.c (score_address_p): Rename to...
21318         (score_legitimate_address_p): ... this.
21319         (TARGET_LEGITIMATE_ADDRESS_P): New.
21320         * config/score/score3.c (score3_address_p): Rename to...
21321         (score3_legitimate_address_p): ... this.
21322         * config/score/score7.c (score7_address_p): Rename to...
21323         (score7_legitimate_address_p): ... this.
21324
21325         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
21326         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
21327         GO_IF_LEGITIMATE_ADDRESS): Delete.
21328         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
21329         thumb2_legitimate_address_p): Delete.
21330         (arm_legitimate_address_p): Rename to...
21331         (arm_legitimate_address_outer_p): ... this.
21332         * config/arm/constraints.md ("Uq"): Adjust call.
21333         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
21334         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
21335         to...
21336         (arm_legitimate_address_outer_p): ... this.
21337         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
21338         static.
21339         (TARGET_LEGITIMATE_ADDRESS_P): New.
21340
21341         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21342         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
21343         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
21344         (TARGET_LEGITIMATE_ADDRESS_P): New.
21345
21346         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21347         * config/vax/vax-protos.h (legitimate_address_p): Remove.
21348         * config/vax/vax.c (legitimate_address_p): Rename to...
21349         (vax_legitimate_address_p): ... this, make static.
21350         (TARGET_LEGITIMATE_ADDRESS_P): New.
21351
21352         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21353         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
21354         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
21355         (TARGET_LEGITIMATE_ADDRESS_P): New.
21356
21357         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21358         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
21359         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
21360         (mmix_legitimate_address_p): ... this, make static.
21361         (TARGET_LEGITIMATE_ADDRESS_P): New.
21362
21363         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21364         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
21365         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
21366         (TARGET_LEGITIMATE_ADDRESS_P): New.
21367
21368 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
21369
21370         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
21371         of MODE_COMPLEX_INT.
21372
21373 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
21374
21375         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
21376         LCT_NORMAL in function call.
21377         * mips-tdump.c (print_file_desc): Add cast to enum type.
21378         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
21379         (mark_stabs): Add casts to enum types.
21380         (parse_stabs_common): Add casts to enum types.
21381
21382 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
21383
21384         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
21385         Check for invalid values of LETTER.
21386
21387 2009-05-13  Taras Glek  <tglek@mozilla.com>
21388
21389         * attribs.c (register_attribute): moved out attribute registration
21390         into register_attribute.
21391         * doc/plugins.texi: Documented register_attribute and
21392         PLUGIN_ATTRIBUTES.
21393         * gcc-plugin.h: Added forward decl for register_attribute.
21394         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
21395         * plugin.c (register_callback, invoke_plugin_callbacks): Added
21396         PLUGIN_ATTRIBUTES boilerplate.
21397
21398 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
21399
21400         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
21401         values even in sentinel and empty entries.
21402         (ms_printf_flag_specs):  Likewise.
21403         (ms_scanf_flag_specs):  Likewise.
21404         (ms_strftime_flag_specs):  Likewise.
21405         (ms_print_char_table):  Likewise.
21406         (ms_scan_char_table):  Likewise.
21407         (ms_time_char_table):  Likewise.
21408
21409 2009-05-13  Doug Kwan  <dougkwan@google.com>
21410
21411         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
21412
21413 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
21414
21415         * config/mips/mips.md (store): Add attributes for QI and HI.
21416         Update comment.
21417         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
21418         (truncdi<mode>2): ... this new pattern.
21419
21420 2009-05-13  Brad Hards  <bradh@kde.org>
21421
21422         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
21423
21424 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
21425             Ben Elliston <bje@au.ibm.com>
21426
21427         PR middle-end/40035
21428         * dse.c (check_mem_read_rtx): Guard against width == -1.
21429
21430 2009-05-13  Michael Matz  <matz@suse.de>
21431
21432         PR middle-end/39976
21433         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
21434         (trivially_conflicts_p): New function.
21435         (insert_backedge_copies): Use it.
21436
21437 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
21438
21439         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
21440         (handle_stdc_pragma): Use new enum constant names.
21441         (handle_pragma_float_const_decimal64): Ditto.
21442
21443 2009-05-13  Ian Lance Taylor  <iant@google.com>
21444
21445         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
21446         tree.def.
21447
21448 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
21449
21450         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
21451         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
21452         multilibs.
21453         * config/m68k/m68k.h (FL_UCLINUX): Define.
21454
21455 2009-05-13  Jan Hubicka  <jh@suse.cz>
21456
21457         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
21458
21459 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
21460
21461         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
21462         unless -fschedule-insns is specified.
21463
21464 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
21465
21466         PR target/39561
21467         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
21468         TARGET_EXPAND_CBRANCHDI4.
21469         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
21470         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
21471         (cmpeqdi): Fix comment.
21472
21473 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
21474
21475         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
21476         (sh_legitimate_address_p): Likewise.
21477         * config/sh/sh.c (sh_legitimate_index_p): New.
21478         (sh_legitimate_address_p): Likewise.
21479         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
21480         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
21481         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
21482         (MAYBE_BASE_REGISTER_RTX_P): New macro.
21483         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
21484         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
21485         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
21486         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
21487         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
21488
21489 2009-05-12  Jan Hubicka  <jh@suse.cz>
21490
21491         * tree-inline.c (estimate_operator_cost): Add operands;
21492         when division happens by constant, it is cheap.
21493         (estimate_num_insns): Loads and stores are not having cost of 0;
21494         EH magic stuff is cheap; when computing runtime cost of switch,
21495         use log2 base of amount of its cases; builtin_expect has cost of 0;
21496         compute cost for moving return value of call.
21497         (init_inline_once): Initialize time_based flags.
21498         * tree-inline.h (eni_weights_d): Add time_based flag.
21499
21500 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21501
21502         * df-core.c: Update head documentation.
21503
21504 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
21505
21506         PR bootstrap/40118
21507         * rs6000.c (rs6000_generate_compare): Use op1b instead of
21508         shadowing exisiting variable op1.
21509
21510 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
21511
21512         PR target/37179
21513         * config/i386/driver-i386.c (processor_signatures): New enum.
21514         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
21515         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
21516         processor signature to detect geode processor.
21517
21518 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21519
21520         Revert:
21521
21522         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21523
21524         * optabs.c (prepare_cmp_insn): Temporarily disable test that
21525         causes spurious differences between trunk and cond-optab branch.
21526
21527 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21528
21529         * dojump.c (compare_from_rtx): Delete.
21530         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
21531         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
21532         if the comparison does not satisfy the predicate; test predicates for
21533         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
21534         further if one existing pattern fails.
21535         * expr.h (compare_from_rtx): Delete.
21536         (prepare_operand): Declare it.
21537         * optabs.c: Change "lib call" to "libcall" throughout.
21538         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
21539         HAVE_conditional_trap, emit_cmp_insn): Delete.
21540         (can_compare_p): Delete cmp_optab case.
21541         (prepare_float_lib_cmp): Return an rtx and a machine mode.
21542         Accept other parameters by value.
21543         (prepare_operand): Make non-static.
21544         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
21545         other parameters by value.  Try to widen operands here based on
21546         an optab_methods argument and looking at cbranch_optab.
21547         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
21548         loop.  Use cbranch_optab directly.
21549         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
21550         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
21551         assertion.
21552         (emit_conditional_move, emit_conditional_add): Inline what's needed
21553         of compare_from_rtx, using new prepare_cmp_insn for the rest.
21554         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
21555         with COMPARE.  Move cmov_optab and cstore_optab above
21556         with cbranch_optab, move cmp_optab down with ucmp_optab,
21557         remove tst_otpab.  Do not initialize trap_rtx.
21558         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
21559         for trap code.  Do not check HAVE_conditional_trap.  Use
21560         prepare_cmp_insn.  Accept no predicate for operand 3.
21561         * optabs.h (OTI_cmp): Mark as used only for libcalls.
21562         (OTI_ctrap, ctrap_optab): New.
21563         (tst_optab): Delete.
21564         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
21565         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
21566         with lookup of ctrap_optab.
21567         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
21568         Delete.
21569         (ctrap_optab): New.
21570
21571         * combine.c (combine_simplify_rtx, simplify_set): Do not
21572         special case comparing against zero for cc0 machines.
21573         * simplify-rtx.c (simplify_binary_operation_1): Never remove
21574         COMPARE on cc0 machines.
21575         (simplify_relational_operation): Return a new expression when
21576         a COMPARE could be removed.
21577         * final.c (final_scan_insn): Compare cc_status values
21578         against LHS of a (compare FOO (const_int 0)) cc0 source.
21579         Also check if cc_status.value is the full compare.
21580
21581         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
21582         (cstoreMM4): Document.
21583         (conditional_trap): Document ctrapMM4 instead.
21584         (sync_compare_and_swapMM): Refer to cbranchcc4.
21585         (Dependent Patterns): Eliminate obsolete information referring to
21586         the old jump optimization phase.
21587         (Canonicalization): Include cbranchcc4 case, omit canonicalization
21588         of compares with 0 on cc0 machines.
21589         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
21590         avoiding references to cc0.  Remove text about storing operands
21591         in cmpMM.
21592         * doc/tm.texi (Condition Codes): Include blurb on different
21593         condition code representations, separate into subsections for
21594         CC0, MODE_CC and conditional execution.
21595
21596         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
21597         alpha_emit_setcc): Accept operands and a machine mode.
21598         * config/alpha/alpha.c (alpha_emit_conditional_branch):
21599         Get code/op0/op1 from operands, use machine mode argument
21600         instead of alpha_compare.fp_p.  Emit the branch here.
21601         (alpha_emit_setcc): Likewise, and return boolean.
21602         (alpha_emit_conditional_move): Likewise.  Assert that
21603         cmp_op_mode == cmp_mode, and simplify accordingly.
21604         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
21605         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
21606         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
21607         Delete.
21608         (stack probe test): Use cbranchdi4.
21609         * config/alpha/predicates.md (alpha_cbranch_operator): New.
21610
21611         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
21612         * config/arc/arc.h (movsicc, movsfcc): Use it.
21613         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
21614         (cbranchsi4, cstoresi4): New.
21615         (cmpsi, bCC and sCC expanders): Remove.
21616
21617         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
21618         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
21619         * config/arm/predicates.md (arm_comparison_operator): Only include
21620         floating-point operators if there is a hardware floating-point unit.
21621         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
21622         deferring to cbranch_cc and cstore_cc respectively.
21623         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
21624         cbranch_cc, cstore_cc): New.
21625         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
21626         arm_compare_op1.
21627         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
21628
21629         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
21630         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
21631         as an argument.
21632         (adjust_insn_length): Adjust calls.
21633         (avr_reorg): Handle (compare (foo) (const_int 0)).
21634         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
21635         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
21636         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
21637         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
21638         (bCC): Remove.
21639         (cbranchqi4, cbranchhi4, cbranchsi4): New.
21640         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
21641
21642         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
21643         (cbranchsi4, cstorebi4, cstoresi4): New.
21644         (movbisi): This insn is duplicate, split it to zero_extend.
21645         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
21646         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
21647         (bfin_optimize_loop): Use cbranch expander.
21648         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
21649         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
21650         (bfin_bimode_comparison_operator): ... this.
21651         (bfin_direct_comparison_operator): New.
21652
21653         * config/cris/cris.c (cris_normal_notice_update_cc): Look
21654         inside (compare FOO (const_int 0)).
21655         (cris_rtx_costs): Handle ZERO_EXTRACT.
21656         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
21657         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
21658         (*tstdi_v32): Delete.
21659         (*cmpdi_non_v32): Add M alternative for operand 1.
21660         (cmpsi, cmp<mode>): Make private.
21661         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
21662         with COMPARE.
21663         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
21664
21665         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
21666         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
21667         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
21668         (cc_reg_operand): New.
21669         (any_cond): Delete.
21670         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
21671         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
21672         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
21673         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
21674         crx_expand_scond): Delete.
21675
21676         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
21677         (cbranchsi4): New.
21678         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
21679         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
21680
21681         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
21682         cstoresi4, cstoresf4, cstoredf4): New.
21683         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
21684         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
21685         Receive the entire operands array.
21686         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
21687         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
21688         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
21689         Get test/op0/op1 from the operands array.
21690         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
21691
21692         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
21693         (h8300_expand_store): New.
21694         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
21695         (const_int 0)).
21696         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
21697         (h8300_expand_store): New.
21698         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
21699         or do not try to produce (set (cc0) REG).
21700         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
21701         change a compare into a move to a scratch register.  Disable some
21702         peepholes when comparing with zero.
21703         (tstsi, tsthi, tstsi, cmpqi): Make private.
21704         (cmphi): Delete.
21705         (bCC, sCC): Delete.
21706         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
21707         cstoresi4): New.
21708
21709         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
21710         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
21711         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
21712         (ix86_emit_i387_log1p): Use cbranchxf2.
21713         (ix86_expand_setcc): Return void.
21714         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
21715         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
21716         cmp<MODEF>, cmpcc): Remove.
21717         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
21718         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
21719         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
21720         (sCC and bCC expanders): Remove.
21721         (stack_protect_test): Use cbranchcc4.
21722
21723         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
21724         Delete.
21725         (ia64_expand_compare): Accept three rtx by reference and return void.
21726         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
21727         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
21728         from *expr.  Update *expr with the BImode comparison to do.
21729         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
21730         cmptf, bCC, sCC, conditional_trap): Delete.
21731         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
21732         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
21733         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
21734         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
21735         * config/ia64/predicates.md (ia64_cbranch_operator): New.
21736
21737         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
21738         type of last argument.
21739         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
21740         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
21741         use machine mode argument instead of branch_type.  Remove dead
21742         code for floating-point comparisons.
21743         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
21744         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
21745         Remove.
21746         (cbranchsi4, cstoresi4): New.
21747         * config/iq2000/predicates.md (reg_or_const_operand): New.
21748
21749         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
21750         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
21751         (b<code>_op): Rewrite to...
21752         (bcc_op): ... this, using match_operator.
21753         (s<code>_op): Rewrite to...
21754         (scc_op): ... this, using match_operator.
21755         (s<code>_24_op): Rewrite to...
21756         (scc_op_24): ... this, using match_operator.
21757         (s<code>_<mode>): Rewrite to...
21758         (cstore<mode>4): ... this, using match_operator.
21759         (s<code>_<mode>_24): Rewrite to...
21760         (cstore<mode>4_24): ... this, using match_operator.
21761         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
21762         m32c_unpend_compare, m32c_expand_scc): Delete.
21763         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
21764         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
21765         (m32c_expand_movcc): Change NE to EQ if necessary.
21766         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
21767
21768         * config/m32r/m32r-protos.h (gen_cond_store): New.
21769         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
21770         (gen_cond_store): New, from sCC patterns.
21771         (m32r_expand_block_move): Use cbranchsi4.
21772         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
21773         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
21774         (cbranchsi4, cstoresi4): New.
21775
21776         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
21777         Delete.
21778         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
21779         (m68hc11_notice_update_cc): Look into a compare with 0.
21780         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
21781         Delete.
21782         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
21783         cmphi, cmpqi, bCC): Delete.
21784         (cbranchsi4, cbranchhi4, cbranchqi4): New.
21785         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
21786         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
21787         sets with COMPARE.
21788
21789         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
21790         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
21791         * config/m68k/constraints.md (H): New.
21792         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
21793         the define_insn below.
21794         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
21795         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
21796         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
21797         patterns): Wrap RHS with COMPARE.
21798         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
21799         (*cmpdi_internal): Name this pattern.
21800         (cmpdi): Change to define_insn.
21801         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
21802         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
21803         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
21804         predicate.
21805         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
21806         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
21807         (conditional_trap): Change to...
21808         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
21809         (*conditional_trap): Use the ordered_comparison_operator and
21810         const1_operand predicates.
21811         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
21812         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
21813         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
21814         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
21815
21816         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
21817         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
21818         (mcore_gen_compare): New.
21819         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
21820         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
21821         (mcore_gen_compare): ... this.
21822         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
21823         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
21824         (stack probe pattern): Use cbranchsi4.
21825
21826         * config/mips/predicates.md (mips_cstore_operator): New.
21827         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
21828         * config/mips/mips.md (any_cond): Delete.
21829         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
21830         always succeed.
21831         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
21832         fixuns_truncsfdi2): Use cbranch patterns.
21833         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
21834         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
21835         Adjust call to mips_expand_conditional_branch.
21836         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
21837         cstore<GPR:mode>4.
21838         * config/mips/mips-protos.h (mips_expand_conditional_branch,
21839         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
21840         * config/mips/mips.c (cmp_operands): Delete.
21841         (mips_emit_compare): Get comparison operands from *op0/*op1.
21842         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
21843         that it succeeds.  Use op0/op1 instead of cmp_operands.
21844         (mips_expand_conditional_branch, mips_expand_conditional_move,
21845         mips_expand_conditional_trap): Likewise.
21846         (mips_block_move_loop): Use cbranch patterns.
21847         * config/mips/mips.h (cmp_operands): Delete.
21848
21849         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
21850         (mmix_gen_compare_reg): Just return a register in the right CC mode.
21851         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
21852         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
21853         (*cmpcc_folded): Rename to...
21854         (*cmpdi_folded): this.
21855         (*cmpcc): Rename to...
21856         (*cmps): ... this.
21857         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
21858         (bCC): Remove.
21859         (cbranchdi4): New.
21860         (cbranchdf4): New.  Handle invalid comparisons here.
21861         * config/mmix/predicates.md (float_comparison_operator): New.
21862
21863         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
21864         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
21865         * config/mn10300/mn10300.md (tst): Delete.
21866         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
21867         Name these patterns and wrap RHS in a compare.
21868         (*cmpsi): Make this pattern private.  Include tst.
21869         (*cmpsf): Make this pattern private.
21870         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
21871         (compare with zero peepholes): Likewise.
21872         (bCC): Remove.
21873         (cbranchsi4, cbranchsf4): New.
21874         (casesi): Use cbranchsi4.
21875
21876         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
21877         hppa_branch_type): Delete.
21878         (return_addr_rtx): Use cbranchsi4.
21879         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
21880         Emit CCFPmode comparison here.
21881         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
21882         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
21883         hppa_branch_type): Delete.
21884         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
21885         (movsicc, movdicc): Remove references to hppa_compare_op0,
21886         hppa_compare_op1 and compare_from_rtx.
21887         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
21888         (casesi): Use cbranchsi4.
21889
21890         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
21891         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
21892         * config/pdp11/pdp11.md (register_or_const0_operand): New.
21893         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
21894         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
21895         (bCC): Delete.
21896         (cbranchdf4, cbranchhi4, cbranchqi4): New.
21897         (*branch, *branch_inverted): New.
21898
21899         * config/picochip/picochip.md (cbranchhi4): Use
21900         ordered_comparison_operator.
21901         (cmphi, bCC): Remove.
21902
21903         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
21904         (trap_comparison_operator): Delete.
21905         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
21906         rs6000_emit_cbranch): Accept mode and operands.
21907         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
21908         rs6000_compare_fp_p): Delete.
21909         (rs6000_generate_compare): Accept mode and comparison.  Extract code
21910         and op0/op1 from there.  Replace references to rs6000_compare_op0
21911         and rs6000_compare_op1.
21912         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
21913         extract result from passed operands.
21914         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
21915         extract loc from passed operands.
21916         (rs6000_emit_cmove): Likewise.
21917         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
21918         rs6000_compare_fp_p): Delete.
21919         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
21920         (cbranch<GPR>4, cbranch<FP>4): New.
21921         (cstore<mode>4): New.  Consolidate here all choices about when to use
21922         portable or specialized sCC sequences.
21923         (stack_protect_test): Use cbranchsi4.
21924         (conditional_trap): Replace with ctrap<GPR>4.
21925         (conditional trap insn): Replace trap_comparison_operator with
21926         ordered_comparison_operator.
21927
21928         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
21929         (s390_emit_prologue): Use ctrap.
21930         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
21931         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
21932         New predicates replacing...
21933         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
21934         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
21935         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
21936         (add<mode>cc): Do not use s390_compare_op0/op1.
21937         (s<code>): Change to...
21938         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
21939         (seq): Change to...
21940         (cstorecc4): ... this.  Handle EQ or NE equally.
21941         (*sne): Un-privatize for use in cstorecc4.
21942         (b<code>): Change to...
21943         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
21944         (conditional_trap): Replace with...
21945         (ctrap<GPR>4, ctrap<FP>4): ... these.
21946         (stack_protect): Use cbranchcc4.
21947
21948         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
21949         * config/score/score-protos.h (score_gen_cmp): Delete.
21950         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
21951         (score_block_move-loop): Use cbranchsi4.
21952         * config/score/score.md (cbranchsi4): New.
21953         (cmpsi, bCC): Delete.
21954         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
21955         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
21956         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
21957         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
21958         * config/score/score3.h (score3_gen_cmp): Delete.
21959         * config/score/score7.h (score7_gen_cmp): Delete.
21960
21961         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
21962         (sh_emit_scc_to_t): ... this.  Return void.
21963         (from_compare): Rename to...
21964         (sh_emit_compare_and_branch): ... this.
21965         (sh_emit_compare_and_set): New.
21966         (sh_expand_t_scc): Accept operands.
21967         * config/sh/predicates.md (sh_float_comparison_operator): New.
21968         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
21969         (prepare_scc_operands): Rename to...
21970         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
21971         arguments.
21972         (sh_emit_cheap_store_flag): New.
21973         (sh_emit_set_t_insn): New.
21974         (from_compare): Rename to...
21975         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
21976         handling of TARGET_SH2E floating point to avoid recursive call.
21977         Generate branch here.
21978         (sh_emit_compare_and_set): New.
21979         (sh_expand_t_scc): Get op0/op1 from arguments.
21980         (sh_emit_cheap_store_flag): New.
21981         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
21982         cases.
21983         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
21984         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
21985         (movsicc, movdicc): Do nothing when it recreated operands from
21986         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
21987         prepare_scc_operands (now sh_emit_scc_to_t).
21988         (udivdi3): Use cstoresi4.
21989         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
21990         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
21991         (cbranchint4_media, cbranchfp4_media): New.
21992         (casesi): Use cbranchdi4.
21993         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
21994         Delete.
21995         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
21996         (movnegt): Remove second operand.
21997         (cbranchsf4, cbranchdf4): New.
21998         (stack_protect): Use cbranchdi4/cbranchsi4.
21999
22000         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
22001         (gen_compare_reg): Accept comparison, extract part of it to...
22002         (gen_compare_reg_1): ... this.
22003         (gen_compare_operator): Delete.
22004         (gen_v9_scc): Accept separate destination, comparison code and arms.
22005         Do not use sparc_compare_op0/sparc_compare_op1.
22006         (emit_scc_insn, emit_conditional_branch_insn): New.
22007         (emit_v9_brxx): Make static.  Remove useless assertion.
22008         (sparc_emit_float_lib_cmp): Return RTL instead of calling
22009         emit_cmp_insn.
22010         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
22011         * config/sparc/sparc-protos.h (gen_compare_reg,
22012         sparc_emit_float_lib_cmp): Adjust prototype.
22013         (emit_scc_insn, emit_conditional_branch_insn): New.
22014         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
22015         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
22016         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
22017         iterators to the top.
22018         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
22019         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
22020         snedi_special_trunc): Delete.
22021         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
22022         and snedi_special_trunc.
22023         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
22024         cbranchdi4, cbranch<F:mode>4): New.
22025         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
22026         here.  Use gen_compare_reg instead of gen_compare_operator.
22027         (conditional_trap): Replace with...
22028         (ctrapsi4, ctrapdi4): ... this.
22029         (stack_protect_test): Use cbranchcc4.
22030
22031         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
22032         argument to rtx.
22033         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
22034         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
22035         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
22036         from operands[0] or operands[3] depending on is_set.
22037         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
22038         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
22039         cmpdf, bCC), sCC: Remove.
22040         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
22041         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
22042         cstoredf4): New.
22043         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
22044         spu_emit_branch_or_set.
22045
22046         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
22047         Add two arguments.
22048         * config/stormy16/stormy16.h (xstormy16_compare_op0,
22049         xstormy16_compare_op1): Delete.
22050         * config/stormy16/stormy16.c (xstormy16_compare_op0,
22051         xstormy16_compare_op1): Delete.
22052         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
22053         Adjust calls.
22054         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
22055         (cmphi, cmpsi, bCC): Remove.
22056
22057         * config/v850/v850.md (tstsi, cmpsi): Fold into...
22058         (*cmpsi): ... this one.
22059         (cbranchsi4, cstoresi4): New.
22060         (bCC expanders): Delete.
22061         (sCC insns): Fold into...
22062         (*setcc): ... this one.
22063         (casesi): Do not use gen_cmpsi and gen_bgtu.
22064         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
22065         (movsicc): Simplify.
22066         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
22067
22068         * config/vax/vax-protos.h (cond_name): New.
22069         (vax_output_conditional_branch): Remove.
22070         * config/vax/vax.c (cond_name): New.
22071         (vax_output_conditional_branch): Remove.
22072         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
22073         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
22074         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
22075         (bit<VAXint>): Wrap source with (compare).
22076         (b<code> and following unnamed pattern): Rename to *branch and
22077         *branch_reversed.  Change macroization to match_operator.
22078         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
22079
22080         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
22081         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
22082         Change last argument to machine_mode.
22083         (xtensa_expand_scc): Add machine_mode argument.
22084         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
22085         (gen_conditional_move, xtensa_expand_conditional_branch,
22086         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
22087         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
22088         Adjust operand numbers.
22089         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
22090         Delete.
22091         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
22092         (cmpsi, cmpsf, b<code>, s<code>): Delete.
22093         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
22094
22095 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22096
22097         * optabs.c (prepare_cmp_insn): Temporarily disable test that
22098         causes spurious differences between trunk and cond-optab branch.
22099
22100 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
22101
22102         PR target/37137
22103         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
22104
22105 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
22106
22107         * tree.c (iterative_hash_pointer): Delete.
22108         (iterative_hash_expr): Short-circuit handling of NULL pointer.
22109         Hash UIDs and versions of SSA names.  Don't special-case built-in
22110         function declarations.
22111
22112 2009-05-11  Ian Lance Taylor  <iant@google.com>
22113
22114         PR bootstrap/40103
22115         * graphite.c: Force -Wc++-compat to only be a warning before
22116         #including "cloog/cloog.h".
22117
22118 2009-05-11  Martin Jambor  <mjambor@suse.cz>
22119
22120         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
22121
22122 2009-05-11  Jan Hubicka  <jh@suse.cz>
22123
22124         * tree-ssa-loop-ivcanon.c: Include target.h
22125         (struct loop_size): new structure.
22126         (constant_after_peeling): New predicate.
22127         (tree_estimate_loop_size): New function.
22128         (estimated_unrolled_size): Rewrite for new estimates.
22129         (try_unroll_loop_completely): Use new estimates.
22130         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
22131
22132 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22133
22134         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
22135         libcpp interface change.
22136         (spu_macro_to_expand): Likewise.
22137
22138 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
22139
22140         PR tree-optimization/40026
22141         * gimplify.c (gimplify_init_constructor): Change initial conditional
22142         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
22143         optimize_compound_literals_in_ctor.
22144
22145 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
22146
22147         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
22148         New devices.
22149         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
22150
22151 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
22152
22153         * tree-vect-data-refs.c (vect_analyze_group_access): Use
22154         HOST_WIDE_INT for gap.
22155
22156 2009-05-11  Ira Rosen  <irar@il.ibm.com>
22157
22158         PR tree-optimization/40074
22159         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
22160         account in group size and step comparison.
22161
22162 2009-05-11  Richard Guenther  <rguenther@suse.de>
22163
22164         * passes.c (init_optimization_passes): Strip now incorrect comment.
22165         (execute_function_todo): Do not set PROP_alias.
22166         * tree-pass.h (PROP_alias): Remove.
22167         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
22168         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
22169         * tree-nrv.c (pass_return_slot): Likewise.
22170         * tree-object-size.c (pass_object_sizes): Likewise.
22171         * tree-ssa-dom.c (pass_dominator): Likewise.
22172         (pass_phi_only_cprop): Likewise.
22173         * tree-ssa-dse.c (pass_dse): Likewise.
22174         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
22175         (pass_cselim): Likewise.
22176         * tree-ssa-pre.c (pass_pre): Likewise.
22177         (pass_fre): Likewise.
22178         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
22179         * tree-ssa-sink.c (pass_sink_code): Likewise.
22180         * tree-stdarg.c (pass_stdarg): Likewise.
22181         * tree-tailcall.c (pass_tail_calls): Likewise.
22182         * tree-vrp.c (pass_vrp): Likewise.
22183
22184 2009-05-10  Ian Lance Taylor  <iant@google.com>
22185
22186         * basic-block.h (enum profile_status): Break out of struct
22187         control_flow_graph.
22188         * cgraph.h (struct inline_summary): Break out of struct
22189         cgraph_local_info.
22190         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
22191         of struct cgraph_order_sort.
22192         * combine.c (enum undo_kind): New enum, broken out of struct undo.
22193         * cse.c (struct branch_path): Break out of struct
22194         cse_basic_block_data.
22195         * except.h (enum eh_region_type): Break out of struct eh_region.
22196         * gcc.c (enum add_del): Break out of struct modify_target.
22197         * genrecog.c (enum decision_type): Break out of struct decision_test.
22198         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
22199         ggc_pch_data.
22200         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
22201         * regmove.c (enum match_use): New enum, broken out of struct match.
22202         * sched-int.h (enum post_call_group): New enum, broken out of
22203         struct deps.
22204         (struct deps_reg): Break out of struct deps.
22205         * target.h (struct asm_int_op): Break out of struct gcc_target.
22206         * tree-eh.c (struct goto_queue_node): Break out of struct
22207         leh_tf_state.
22208         * tree-inline.h (enum copy_body_cge_which): Break out of
22209         copy_body_data.
22210         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
22211
22212         * c-decl.c (in_struct, struct_types): New static variables.
22213         (pushtag): Add loc parameter.  Change all callers.
22214         (lookup_tag): Add ploc parameter.  Change all callers.
22215         (check_compound_literal_type): New function.
22216         (parser_xref_tag): Add loc parameter.  Change all callers.  If
22217         -Wc++-compat, warn about struct/union/enum types defined within a
22218         struct or union.
22219         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
22220         and loc parameters.  Change all callers.  Change error calls to
22221         error_at, using loc.  For a redefinition, if the location of the
22222         original definition is known, report it.  Set in_struct and
22223         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
22224         (finish_struct): Add new parameters enclosing_in_struct and
22225         enclosing_struct_types.  Change all callers.  Set
22226         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
22227         in the struct.  If in a struct, add this struct to struct_types.
22228         (start_enum): Add loc parameter.  Change all callers.  Use
22229         error_at for errors, using loc.  For a redefinition, if the
22230         location of the original definition is known, report it.  If in a
22231         struct, add this enum type to struct_types.  If -Wc++-compat warn
22232         if in sizeof, typeof, or alignof.
22233         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
22234         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
22235         (c_parser_enum_specifier): Get enum location for start_enum.
22236         (c_parser_struct_or_union_specifier): Get struct location for
22237         start_struct.  Save in_struct and struct_types status between
22238         start_struct and finish_struct.
22239         (c_parser_cast_expression): Get location of cast.
22240         (c_parser_alignof_expression): Get location of type.
22241         (c_parser_postfix_expression): Likewise.
22242         (c_parser_postfix_expression_after_paren_type): Add type_loc
22243         parameter.  Change all callers.  Call check_compound_literal_type.
22244         Use type_loc for error about variable size type.
22245         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
22246         of an enum constant from an enum type defined in a struct or union.
22247         (c_cast_expr): Add loc parameter.  Change all callers.  If
22248         -Wc++-compat, warn about defining a type in a cast.
22249         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
22250         (start_enum, start_struct, finish_struct): Update declarations.
22251         (parser_xref_tag, c_cast_expr): Update declarations.
22252         (check_compound_literal_type): Declare.
22253
22254 2009-05-11  Ben Elliston  <bje@au.ibm.com>
22255
22256         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
22257         for recent libcpp interface change.
22258         (rs6000_macro_to_expand): Likewise.
22259
22260 2009-05-10  Michael Matz  <matz@suse.de>
22261
22262         PR target/40031
22263         * config/arm/arm.c (require_pic_register): Emit on entry edge,
22264         not at entry of function.
22265
22266 2009-05-10  Richard Guenther  <rguenther@suse.de>
22267
22268         PR tree-optimization/40081
22269         Revert
22270         * tree-sra.c (instantiate_element): Instantiate scalar replacements
22271         using the main variant of the element type.  Do not fiddle with
22272         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
22273
22274         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
22275         structs with volatile fields.
22276
22277 2009-05-10  Jan Hubicka  <jh@suse.cz>
22278
22279         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
22280         (estimate_move_cost): Assert that it does not get called for
22281         VOID_TYPE_P.
22282         (estimate_num_insns): Skip VOID types in argument handling.
22283         (optimize_inline_calls): Delete unreachable blocks and verify that
22284         callgraph is valid.
22285
22286 2009-05-10  Jan Hubicka  <jh@suse.cz>
22287
22288         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
22289         * cgraph.c (cgraph_mark_address_taken_node): New function.
22290         (dump_cgraph_node): Dump new flag.
22291         * cgraph.h (struct cgraph_node): Add address_taken.
22292         (cgraph_mark_address_taken_node): New function.
22293         * ipa.c (cgraph_postorder): Prioritize functions with address taken
22294         since new direct calls can be born.
22295
22296 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22297
22298         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
22299         tok->val.node.node.
22300
22301 2009-05-10  Jan Hubicka  <jh@suse.cz>
22302
22303         PR middle-end/40084
22304         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
22305         argument; rewrite.
22306         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
22307         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
22308         * tree-inline.c (copy_bb): Set frequency correctly.
22309         (fold_marked_statements): Update call to
22310         cgraph_update_edges_for_call_stmt.
22311
22312 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22313
22314         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
22315         identifiers in diagnostics.
22316         * config/arm/arm.c (arm_handle_fndecl_attribute,
22317         arm_handle_isr_attribute): Likewise.
22318         * config/avr/avr.c (avr_handle_progmem_attribute,
22319         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
22320         * config/bfin/bfin.c (handle_int_attribute,
22321         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
22322         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
22323         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
22324         Likewise.
22325         * config/darwin.c (darwin_handle_kext_attribute,
22326         darwin_handle_weak_import_attribute): Likewise.
22327         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
22328         h8300_handle_eightbit_data_attribute,
22329         h8300_handle_tiny_data_attribute): Likewise.
22330         * config/i386/i386.c (ix86_handle_cconv_attribute,
22331         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
22332         * config/i386/winnt.c (ix86_handle_shared_attribute,
22333         ix86_handle_selectany_attribute): Likewise.
22334         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
22335         * config/m32c/m32c.c (function_vector_handler): Likewise.
22336         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
22337         m68hc11_handle_fntype_attribute): Likewise.
22338         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
22339         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
22340         * config/mips/mips.c (mips_insert_attributes,
22341         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
22342         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
22343         rs6000_handle_struct_attribute): Likewise.
22344         * config/sh/sh.c (sh_insert_attributes,
22345         sh_handle_resbank_handler_attribute,
22346         sh_handle_interrupt_handler_attribute,
22347         sh2a_handle_function_vector_handler_attribute,
22348         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
22349         Likewise.
22350         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
22351         * config/spu/spu.c (spu_handle_fndecl_attribute,
22352         spu_handle_vector_attribute): Likewise.
22353         * config/stormy16/stormy16.c
22354         (xstormy16_handle_interrupt_attribute): Likewise.
22355         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
22356         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
22357
22358 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22359
22360         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
22361         (pp_translate_identifiers): New.
22362         (pp_identifier): Only conditionally translate identifier to locale
22363         character set.
22364         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
22365         (pp_base_tree_identifier): Only conditionally translate identifier
22366         to locale character set.
22367         * c-pretty-print.c (M_): Define.
22368         (pp_c_type_specifier, pp_c_primary_expression): Mark English
22369         fragments for conditional translation with M_.
22370         * tree-pretty-print.c (maybe_init_pretty_print): Disable
22371         identifier translation.
22372
22373 2009-05-10  Richard Guenther  <rguenther@suse.de>
22374
22375         PR tree-optimization/40081
22376         * tree-sra.c (instantiate_element): Instantiate scalar replacements
22377         using the main variant of the element type.  Do not fiddle with
22378         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
22379
22380 2009-05-09  Jan Hubicka  <jh@suse.cz>
22381
22382         PR middle-end/40080
22383         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
22384         indirect calls; verify cgraph afterwards.
22385
22386 2009-05-09  Jan Hubicka  <jh@suse.cz>
22387
22388         PR bootstrap/40082
22389         * ipa.c (update_inlined_to_pointer): New function.
22390         (cgraph_remove_unreachable_nodes): Use it.
22391
22392 2009-05-09  Jan Hubicka  <jh@suse.cz>
22393
22394         * tree-eh.c (struct leh_state): Remove prev_try.
22395         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
22396         not track prev_try.
22397         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
22398         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
22399         remove_eh_handler_and_replace, foreach_reachable_handler,
22400         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
22401         * except.h (struct eh_region): Remove eh_region_u_cleanup.
22402         (gen_eh_region_cleanup): Update prototype.
22403
22404 2009-05-09  Jan Hubicka  <jh@suse.cz>
22405
22406         PR middle-end/40043
22407         * except.c (copy_eh_region): Always set prev_try.
22408         (redirect_eh_edge_to_label): Find outer try.
22409         (foreach_reachable_handler): When looking for prev try
22410         handle case where previous try is not going to be taken.
22411
22412 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
22413
22414         PR tree-optimization/40049
22415         * tree-vect-stmts.c (vectorizable_operation): If the machine has
22416         only vector/vector shifts, convert the type of the constant to the
22417         appropriate type to avoid building incorrect trees, which
22418         eventually have problems with garbage collection.
22419
22420 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
22421
22422         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
22423         -1 for complex floating-point types if honoring signed zeros.
22424
22425 2009-05-08  Jan Hubicka  <jh@suse.cz>
22426
22427         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
22428         argument; handle correctly when profile is absent.
22429         (build_cgraph_edges): Update.
22430         (rebuild_cgraph_edges): Update.
22431         * cgraph.c: Do not include varray.h.
22432         (cgraph_set_call_stmt_including_clones): New function.
22433         (cgraph_create_edge_including_clones): Likewise
22434         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
22435         (cgraph_update_edges_for_call_stmt): Handle clones.
22436         (cgraph_remove_node): Handle clone tree.
22437         (cgraph_remove_node_and_inline_clones): New function.
22438         (dump_cgraph_node): Dump clone tree.
22439         (cgraph_clone_node): Handle clone tree.
22440         (clone_function_name): Bring here from tree-inline.c.
22441         (cgraph_create_virtual_clone): New function.
22442         * cgraph.h (ipa_replace_map): Move here from ipa.h.
22443         (cgraph_clone_info): New function.
22444         (strut cgraph_node): Add clone_info and new clone tree pointers.
22445         (cgraph_remove_node_and_inline_clones,
22446         cgraph_set_call_stmt_including_clones,
22447         cgraph_create_edge_including_clones,
22448         cgraph_create_virtual_clone): Declare.
22449         (cgraph_function_versioning): Use VEC argument.
22450         (compute_call_stmt_bb_frequency): Update prototype.
22451         (cgraph_materialize_all_clones): New function.
22452         * ipa-cp.c (ipcp_update_cloned_node): Remove.
22453         (ipcp_create_replace_map): Update to VECtors.
22454         (ipcp_update_callgraph): Use virtual clones.
22455         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
22456         (ipcp_update_profiling): Do not update local profiling.
22457         (ipcp_insert_stage): Use VECtors and virtual clones.
22458         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
22459         (clone_of_p): New function.
22460         (cgraph_preserve_function_body_p): Use clone tree.
22461         (cgraph_optimize): Materialize clones.
22462         (cgraph_function_versioning): Update for VECtors.
22463         (save_inline_function_body): Use clone tree.
22464         (cgraph_materialize_clone): New function.
22465         (cgraph_materialize_all_clones): Likewise.
22466         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
22467         * ipa.c: Include gimple.h.
22468         (cgraph_remove_unreachable_nodes): Use clone tree.
22469         * ipa-prop.c (ipa_note_param_call): Update call to
22470         compute_call_stmt_bb_frequencycall.
22471         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
22472         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
22473         (copy_bb): Handle updating of clone tree; add new edge when new call
22474         appears.
22475         (expand_call_inline): Be strict about every call having edge.
22476         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
22477         (delete_unreachable_blocks_update_callgraph): New function.
22478         (tree_function_versioning): Use VECtors; always remove unreachable
22479         blocks and fold conditionals.
22480         * tree-inline.h: Do not include varray.h.
22481         (tree_function_versioning): Remove.
22482         * Makefile.in (GTFILES): Remove tree-inline.c
22483         * passes.c (do_per_function): Do only functions having body.
22484         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
22485         tree.
22486
22487 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
22488             Andrew Morrow  <acm@google.com>
22489
22490         PR c/36892
22491         * c-common.c (c_common_attribute_table): Permit deprecated
22492         attribute to take an optional argument.
22493         (handle_deprecated_attribute): If the optional argument to
22494         __attribute__((deprecated)) is not a string ignore the attribute
22495         and emit a warning.
22496
22497         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
22498         * c-typeck.c (build_component_ref): Likewise.
22499         (build_external_ref): Likewise.
22500
22501         * toplev.c (warn_deprecated_use): Add an attribute argument.
22502         Emit the message associated with __attribute__((deprecated)).
22503
22504         * toplev.h (warn_deprecated_use): Updated.
22505
22506         * doc/extend.texi: Document new optional parameter to
22507         __attribute__((deprecated))
22508
22509 2009-05-08  Michael Eager <eager@eagercon.com>
22510
22511         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
22512         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
22513
22514 2009-05-08  Richard Guenther  <rguenther@suse.de>
22515
22516         PR tree-optimization/40062
22517         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
22518         Avoid exponential behavior.
22519
22520 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
22521
22522         PR rtl-optimization/33928
22523         PR 26854
22524         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
22525         process_uses, build_single_def_use_links): New.
22526         (update_df): Update use_def_ref.
22527         (forward_propagate_into): Use get_def_for_use instead of use-def
22528         chains.
22529         (fwprop_init): Call build_single_def_use_links and let it initialize
22530         dataflow.
22531         (fwprop_done): Free use_def_ref.
22532         (fwprop_addr): Eliminate duplicate call to df_set_flags.
22533         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
22534         df_rd_simulate_one_insn): New.
22535         (df_rd_bb_local_compute_process_def): Update head comment.
22536         (df_chain_create_bb): Use the new RD simulation functions.
22537         * df.h (df_rd_simulate_artificial_defs_at_top,
22538         df_rd_simulate_one_insn): New.
22539         * opts.c (decode_options): Enable fwprop at -O1.
22540         * doc/invoke.texi (-fforward-propagate): Document this.
22541
22542 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
22543
22544         PR c/24581
22545         * c-typeck.c (build_binary_op): Handle arithmetic between one real
22546         and one complex operand specially.
22547         * tree-complex.c (some_nonzerop): Do not identify a real value as
22548         zero if flag_signed_zeros.
22549
22550 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
22551
22552         PR rtl-optimization/33928
22553         * loop-invariant.c (record_use): Fix && vs. || mishap.
22554
22555 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
22556
22557         PR rtl-optimization/33928
22558         * loop-invariant.c (struct use): Add addr_use_p.
22559         (struct def): Add n_addr_uses.
22560         (struct invariant): Add cheap_address.
22561         (create_new_invariant): Set cheap_address.
22562         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
22563         (record_uses): Pass df_ref to record_use.
22564         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
22565         used only as such.
22566
22567 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
22568
22569         * config/sh/sh.c: Do not include c-pragma.h.
22570
22571 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22572
22573         * config/spu/spu.c: Remove include of c-common.h.
22574
22575 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
22576
22577         PR c/39037
22578         * c-common.h (mark_valid_location_for_stdc_pragma,
22579         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
22580         clear_float_const_decimal64, float_const_decimal64_p): New.
22581         * c.opt (Wunsuffixed-float-constants): New.
22582         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
22583         unsuffixed float constant, handle new warning.
22584         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
22585         * c-decl.c (c_scope): New flag float_const_decimal64.
22586         (set_float_const_decimal64, clear_float_const_decimal64,
22587         float_const_decimal64_p): New.
22588         (push_scope): Set new flag.
22589         * c-parser.c (c_parser_translation_unit): Mark when it's valid
22590         to use STDC pragmas.
22591         (c_parser_external_declaration): Ditto.
22592         (c_parser_compound_statement_nostart): Ditto.
22593         * c-pragma.c (valid_location_for_stdc_pragma,
22594         mark_valid_location_for_stdc_pragma,
22595         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
22596         handle_pragma_float_const_decimal64): New.
22597         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
22598         * cp/semantics.c (valid_location_for_stdc_pragma_p,
22599         set_float_const_decimal64, clear_float_const_decimal64,
22600         float_const_decimal64_p): New dummy functions.
22601         * doc/extend.texi (Decimal Float): Remove statement that the
22602         pragma, and suffix for double constants, are not supported.
22603         * doc/invoke.texi (Warning Options): List new option.
22604         (-Wunsuffixed-float-constants): New.
22605
22606 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
22607
22608         * config/i386/i386.c: Do not include c-common.h.
22609
22610 2009-05-07  Mark Heffernan  <meheff@google.com>
22611
22612         * doc/invoke.texi (Debugging Options): Document change of debugging
22613         dump location.
22614         * opts.c (decode_options): Make dump_base_name relative to
22615         aux_base_name directory.
22616
22617 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
22618
22619         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
22620         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
22621
22622 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
22623
22624         * Makefile.in (install-plugin): Simplify a bit.
22625
22626 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
22627
22628         * Makefile.in (OBJS-common): Add regcprop.o.
22629         (regcprop.o): New.
22630         * timevar.def (TV_CPROP_REGISTERS): New.
22631         * regrename.c (regrename_optimize): Return 0.
22632         (rest_of_handle_regrename): Delete.
22633         (pass_rename_registers): Point to regrename_optimize.
22634         (struct value_data_entry, struct value_data,
22635         kill_value_one_regno, kill_value_regno, kill_value,
22636         set_value_regno, init_value_data, kill_clobbered_value,
22637         kill_set_value, kill_autoinc_value, copy_value,
22638         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
22639         replace_oldest_value_reg, replace_oldest_value_addr,
22640         replace_oldest_value_mem, copyprop_hardreg_forward_1,
22641         debug_value_data, validate_value_data): Move...
22642         * regcprop.c: ... here.
22643         (rest_of_handle_cprop): Delete.
22644         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
22645
22646 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
22647
22648         PR middle-end/40057
22649         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
22650         GEN_INT for 1 << bitnum.
22651         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
22652         build_int_cst_type.
22653
22654 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
22655
22656         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
22657         Remove wrong description of "nand" operation.
22658
22659 2009-05-06  Richard Guenther  <rguenther@suse.de>
22660             Adam Nemet  <anemet@caviumnetworks.com>
22661
22662         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
22663         comment.  Add that if LHS is not a gimple register, then RHS1 has
22664         to be a single object (GIMPLE_SINGLE_RHS).
22665
22666 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
22667
22668         * expr.c (get_def_for_expr): Move it up in the file.
22669         (store_field): When expanding a bit-field store, look at the
22670         defining gimple stmt for the masking conversion.
22671
22672 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
22673
22674         PR middle-end/39986
22675         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
22676         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
22677         32-bit memcpy into long.
22678
22679 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
22680
22681         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
22682         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
22683         new_reg_loc_descr.
22684         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
22685         instead of appending DW_OP_deref*.
22686
22687 2009-05-06  Michael Matz  <matz@suse.de>
22688
22689         PR middle-end/40021
22690         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
22691         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
22692
22693 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
22694
22695         * Makefile.in (install-plugin): Fix srcdir handling.
22696
22697 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
22698
22699         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
22700         when processing for not_regs_needed bitmap.
22701         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
22702         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
22703         handling it for rhs.
22704
22705 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22706
22707         * config/i386/i386.md (unnamed inc/dec peephole): Use
22708         optimize_insn_for_size_p instead of optimize_size.
22709         * config/i386/predicates.md (incdec_operand): Likewise.
22710         (aligned_operand): Likewise.
22711         * config/i386/sse.md (divv8sf3): Likewise.
22712         (sqrtv8sf2): Likewise.
22713
22714 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22715
22716         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
22717
22718         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
22719
22720 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22721
22722         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
22723         ssemodesuffixf2c with avxmodesuffixf2c.
22724
22725 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
22726
22727         PR c/40032
22728         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
22729
22730 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
22731
22732         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
22733         (struct tree_base): Adjust spacing for 8 bit boundaries.
22734         (struct tree_decl_common): Add decl_by_reference_flag bit.
22735         (DECL_BY_REFERENCE): Adjust.
22736         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
22737         print DECL_BY_REFERENCE bit.
22738         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
22739         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
22740         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
22741         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
22742         unconditionally.
22743
22744         PR middle-end/39666
22745         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
22746         range of the type, but default label is missing, add it with one
22747         of the existing labels instead of adding a new label for it.
22748
22749 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
22750
22751         * dwarf.h: Remove.
22752
22753 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
22754
22755         * Makefile.in (enable_plugin, plugin_includedir): New.
22756         (install): Depend on install-plugin.
22757         (PLUGIN_HEADERS): New.
22758         (install-plugin): New.
22759         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
22760
22761 2009-05-05  Richard Guenther  <rguenther@suse.de>
22762
22763         PR tree-optimization/40022
22764         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
22765         the only vuse.
22766         (phivn_valid_p): Fix tuplification error, simplify.
22767         (phiprop_insert_phi): Add dumps.
22768         (propagate_with_phi): Simplify.
22769
22770 2009-05-05  Richard Guenther  <rguenther@suse.de>
22771
22772         PR middle-end/40023
22773         * builtins.c (gimplify_va_arg_expr): Properly build the address.
22774
22775 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
22776
22777         * tree.h (strip_float_extensions): Remove duplicate declaration.
22778         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
22779         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
22780         block_ultimate_origin): Rearrange the declarations line to match the
22781         comment that indicates the .c file which the functions are defined.
22782         (dwarf2out_*, set_decl_rtl): Add comment.
22783         (get_base_address): Adjust comment.
22784         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
22785         declarations line and add comment.
22786         (is_builtin_name): Add blank after function name, for clarity.
22787
22788 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22789
22790         * attribs.c (decl_attributes): Use %qE for identifiers in
22791         diagnostics.
22792         * cgraphunit.c (verify_cgraph_node): Translate function names to
22793         locale character set in diagnostics.
22794         * coverage.c (get_coverage_counts): Use %qE for identifiers in
22795         diagnostics.
22796         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
22797         Document that functions are named in UTF-8.
22798         * expr.c (expand_expr_real_1): Translate function names to locale
22799         character set in diagnostics.
22800         * gimplify.c (omp_notice_variable, omp_is_private,
22801         gimplify_scan_omp_clauses): Use %qE for identifiers in
22802         diagnostics.
22803         * langhooks.c (lhd_print_error_function): Translate function names
22804         to locale character set.
22805         * langhooks.h (decl_printable_name): Document that return value is
22806         in internal character set.
22807         * stmt.c: Include pretty-print.h
22808         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
22809         diagnostics.
22810         (resolve_operand_name_1): Translate named operand name to locale
22811         character set.
22812         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
22813         diagnostics.
22814         * toplev.c (announce_function): Translate function names to locale
22815         character set.
22816         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
22817         (default_tree_printer): Use pp_identifier or translate identifiers
22818         to locale character set.  Mark "<anonymous>" for translation.
22819         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
22820         for identifiers in diagnostics.
22821         * tree.c (handle_dll_attribute): Use %qE for identifiers in
22822         diagnostics.
22823         * varasm.c (output_constructor): Use %qE for identifiers in
22824         diagnostics.
22825
22826 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
22827
22828         * configure.ac: use ` ` instead of $()
22829         * configure: Regenerate.
22830
22831 2009-05-05  Ben Elliston  <bje@au.ibm.com>
22832
22833         * config/pa/linux-atomic.c: Eliminate conditional include of
22834         errno.h on non-LP64 systems to simplify build requirements.
22835
22836 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22837
22838         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
22839         diagnostics.
22840         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
22841         and pass value to identifier_to_locale.
22842         (warn_variable_length_array): Make name a tree.
22843         (grokdeclarator): Separate diagnostic texts for named and unnamed
22844         declarators.  Use %qE for named declarators.
22845         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
22846         diagnostics.
22847         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
22848         identifiers in diagnostics.
22849         * c-typeck.c (push_member_name, start_init): Pass identifiers to
22850         identifier_to_locale.  Mark "anonymous" strings for translation.
22851
22852 2009-05-04  Michael Eager <eager@eagercon.com>
22853
22854         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
22855         address for DImode/DFmode only if double-precision FP regs.
22856
22857 2009-05-04  Michael Eager <eager@eagercon.com>
22858
22859         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
22860         TARGET_SINGLE_FLOAT check.
22861
22862 2009-05-04  Michael Eager <eager@eagercon.com>
22863
22864         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
22865
22866 2009-05-04  Michael Eager <eager@eagercon.com>
22867
22868         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
22869         * config/rs6000/t-xilinx: New
22870
22871 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
22872
22873         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
22874         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
22875         * gcc/explow.c (memory_address): Use target hook.
22876         * gcc/targhooks.c (default_legitimize_address): New.
22877         * gcc/targhooks.h (default_legitimize_address): New.
22878         * gcc/target.h (legitimize_address): New.
22879         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
22880         (TARGET_INITIALIZER): Include it.
22881         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
22882
22883         * config/bfin/bfin-protos.h (legitimize_address): Remove.
22884         * config/bfin/bfin.c (legitimize_address): Remove.
22885         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
22886         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
22887         Remove.
22888         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
22889         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
22890
22891         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
22892         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
22893         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
22894         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
22895         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
22896         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
22897         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
22898         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
22899         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
22900         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
22901         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
22902         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
22903         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
22904         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
22905         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
22906         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
22907         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
22908         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
22909         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
22910         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
22911         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
22912         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
22913         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
22914
22915         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
22916         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
22917         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
22918         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
22919         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
22920         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
22921         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
22922         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
22923         (thumb_legitimize_address): Delete.
22924         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
22925         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
22926         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
22927         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
22928         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
22929         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
22930         Delete.
22931         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
22932         Delete.
22933
22934         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
22935         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
22936         * config/m32r/m32r.c (m32r_legitimize_address): New.
22937         * config/m68k/m68k.c (m68k_legitimize_address): New.
22938         * config/score/score.c (score_legitimize_address): Standardize.
22939         * config/score/score3.c (score3_legitimize_address): Standardize.
22940         * config/score/score3.h (score3_legitimize_address): Adjust.
22941         * config/score/score7.c (score7_legitimize_address): Standardize.
22942         * config/score/score7.h (score7_legitimize_address): Adjust.
22943         * config/sh/sh.c (sh_legitimize_address): New.
22944         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
22945
22946         * gcc/config/s390/s390.c (legitimize_address): Rename to...
22947         (s390_legitimize_address): ... this.
22948         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
22949         (sparc_legitimize_address): ... this.
22950         * gcc/config/i386/i386.c (legitimize_address): Rename to...
22951         (ix86_legitimize_address): ... this.
22952         * gcc/config/avr/avr.c (legitimize_address): Rename to...
22953         (avr_legitimize_address): ... this.
22954         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
22955         (mn10300_legitimize_address): ... this.
22956         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
22957         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
22958         (alpha_expand_mov): Adjust call.
22959
22960         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
22961         * config/spu/spu.c (spu_legitimize_address): Likewise.
22962         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
22963         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
22964
22965 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22966
22967         * intl.c (locale_encoding, locale_utf8): New.
22968         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
22969         * intl.h (locale_encoding, locale_utf8): Declare.
22970         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
22971         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
22972         New.
22973         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
22974         argument.
22975         (pp_tree_identifier): Define to call pp_base_tree_identifier.
22976         (pp_base_tree_identifier): Declare as function.
22977         (identifier_to_locale): Declare.
22978         * Makefile.in (pretty-print.o): Update dependencies.
22979         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
22980
22981 2009-05-04  Richard Guenther  <rguenther@suse.de>
22982
22983         PR middle-end/40015
22984         * builtins.c (fold_builtin_memory_op): Do not decay to element
22985         type if the size matches the whole array.
22986
22987 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
22988
22989         * expmed.c (synth_mult): When trying out a shift, pass the result
22990         of a signed shift.
22991
22992 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
22993
22994         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
22995         (shiftsub1_cost): New.
22996         (init_expmed): Compute shiftsub1_cost.
22997         (synth_mult): Optimize multiplications by constants of the form
22998         -(2^^m-1) for some constant positive integer m.
22999
23000 2009-05-03  Richard Guenther  <rguenther@suse.de>
23001
23002         PR c/39983
23003         * c-typeck.c (array_to_pointer_conversion): Do not built
23004         ADDR_EXPRs of arrays of pointer-to-element type.
23005         * c-gimplify.c (c_gimplify_expr): Revert change fixing
23006         up wrong ADDR_EXPRs after-the-fact.
23007         * c-common.c (strict_aliasing_warning): Strip pointer
23008         conversions for obtaining the original type.
23009         * builtins.c (fold_builtin_memset): Handle array types.
23010         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
23011         and array types
23012
23013 2009-05-03  Richard Guenther  <rguenther@suse.de>
23014
23015         PR middle-end/23329
23016         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
23017         Do not lose casts from array types with unknown extent to array
23018         types with known extent.
23019         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
23020         alias set compatibility.
23021
23022 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
23023
23024         * flags.h (extra_warnings): Delete.
23025         * toplev.c (process_options): Handle Wuninitialized here.
23026         * opts.c (extra_warnings): Delete.
23027         (set_Wextra): Delete.
23028         (common_handle_option): -Wextra can be handled automatically.
23029         * c-opts.c (c_common_handle_option): Delete obsolete code.
23030         (c_common_post_options): Simplify comment.
23031         * common.opt (W): Add Var.
23032         (Wextra): Add Var.
23033         (Wuninitialized): Initialize to -1.
23034
23035 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
23036             Richard Guenther  <rguenther@suse.de>
23037
23038         * expr.c (get_def_for_expr): New function.
23039         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
23040         SSA rather than trees.
23041         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
23042         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
23043
23044 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
23045
23046         * c-common.c (reswords): Add _Imaginary.
23047         * c-common.c (enum rid): Add RID_IMAGINARY.
23048
23049 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
23050
23051         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
23052         Patch by Richard Guenther.
23053
23054 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
23055
23056         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
23057         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
23058         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
23059         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
23060         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
23061         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
23062         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
23063         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
23064         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
23065         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
23066         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
23067         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
23068         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
23069         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
23070         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
23071         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
23072         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
23073         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
23074
23075 2009-05-02  Richard Guenther  <rguenther@suse.de>
23076
23077         PR tree-optimization/39940
23078         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
23079         doing so.
23080
23081 2009-05-02  Richard Guenther  <rguenther@suse.de>
23082
23083         PR middle-end/40001
23084         * tree-ssa.c (execute_update_addresses_taken): Properly check
23085         if we can mark a variable DECL_GIMPLE_REG_P.
23086         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
23087         back to the end of the function.
23088         (is_gimple_reg_type): Remove complex type special casing.
23089         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
23090         if not optimizing.
23091
23092 2009-05-02  Ben Elliston  <bje@au.ibm.com>
23093
23094         * doc/collect2.texi (Collect2): Document search path behaviour
23095         when configured with --with-ld.
23096
23097 2009-05-02  Jan Hubicka  <jh@suse.cz>
23098
23099         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
23100         parameter; update callers.
23101         (coalesce_cost_edge): EH edges are costier because they needs
23102         splitting even if not critical and even more costier when there are
23103         multiple EH predecestors.
23104
23105 2009-05-02  Jan Hubicka  <jh@suse.cz>
23106
23107         * except.c (remove_eh_handler_and_replace): Handle updating after
23108         removing TRY blocks.
23109
23110 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
23111
23112         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
23113
23114 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
23115
23116         * varasm.c: Do not include c-pragma.h.
23117         * attribs.c: Do not incude c-common.h.
23118
23119 2009-05-01  Michael Matz  <matz@suse.de>
23120
23121         * calls.c (initialize_argument_information): Handle SSA names like
23122         decls with a non MEM_P DECL_RTL.
23123
23124 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
23125
23126         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
23127         * ipa-utils.c: Likewise.
23128         * ipa-type-escape.c: Likewise.
23129         * cgraphunit.c Do not include c-common.h.
23130         * ipa-pure-const.c: Likewise.
23131         * tree-if-conv.c: Likewise.
23132         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
23133         * ipa-struct-reorg.c: Likewise.
23134         * tree-nomudflap.c: Likewise.
23135         * tree-ssa-structalias.c: Likewise.
23136
23137 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
23138
23139         * store-motion.c: Many cleanups to make this pass a first-class
23140         citizen instead of an appendix to gcse load motion.  Add TODO list
23141         to make this pass faster/cleaner/better.
23142
23143         (struct ls_expr): Post gcse.c-split cleanups.
23144         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
23145         "stores" field to "avail_stores".
23146         (pre_ldst_mems): Rename to store_motion_mems.
23147         (pre_ldst_table): Rename to store_motion_mems_table.
23148         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
23149         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
23150         (ldst_entry): Rename to st_expr_entry, update users.
23151         (free_ldst_entry): Rename to free_st_expr_entry, update users.
23152         (free_ldst_mems): Rename to free_store_motion_mems, update users.
23153         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
23154         update caller.
23155         (first_ls_expr): Rename to first_st_expr, update users.
23156         (next_ls_expr): Rename to next_st_expr, update users.
23157         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
23158         fields properly for store motion instead of names inherited from load
23159         motion in gcse.c.
23160         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
23161         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
23162         are done with it.
23163
23164         (ae_kill): Rename to st_kill, update users.
23165         (ae_gen): Rename to st_avloc, update users.
23166         (transp): Rename to st_transp, update users.
23167         (pre_insert_map): Rename to st_insert_map, update users.
23168         (pre_delete_map): Rename to st_delete_map, update users.
23169         (insert_store, build_store_vectors, free_store_memory,
23170         one_store_motion_pass): Update for abovementioned changes.
23171
23172         (gcse_subst_count, gcse_create_count): Remove.
23173         (one_store_motion_pass): New statistics counters "n_stores_deleted"
23174         and "n_stores_created", local variables.
23175
23176         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
23177         use for_each_rtx.
23178
23179         (regvec, compute_store_table_current_insn): Remove.
23180         (reg_set_info, reg_clear_last_set): Remove.
23181         (compute_store_table): Use DF caches instead of local dataflow
23182         solvers.
23183
23184 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
23185
23186         * c-objc-common.c (c_tree_printer): Print identifiers with
23187         pp_identifier, not pp_string.  Mark "({anonymous})" for
23188         translation.
23189         * c-pretty-print.c (pp_c_ws_string): New.
23190         (pp_c_cv_qualifier, pp_c_type_specifier,
23191         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
23192         pp_c_storage_class_specifier, pp_c_function_specifier,
23193         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
23194         pp_c_primary_expression, pp_c_postfix_expression,
23195         pp_c_unary_expression, pp_c_shift_expression,
23196         pp_c_relational_expression, pp_c_equality_expression,
23197         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
23198         use pp_string and pp_c_ws_string in place of pp_identifier and
23199         pp_c_identifier for non-identifiers.  Mark English strings for
23200         translation.
23201         * c-pretty-print.h (pp_c_ws_string): Declare.
23202
23203 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
23204             Roland McGrath <roland@redhat.com>
23205
23206         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
23207         (ENABLE_LD_BUILDID): New configuration option.
23208         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
23209         (LINK_BUILDID_SPEC): New macro.
23210         (init_spec): If defined, prepend it between LINK_EH_SPEC and
23211         link_spec.
23212         * doc/install.texi: Document --enable-linker-build-id option.
23213         * configure: Rebuild.
23214         * config.in: Rebuild.
23215
23216 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
23217
23218         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
23219         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
23220         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
23221         MIPS_GP_SAVE_AREA_SIZE.
23222         * config/mips/mips.c (struct mips_frame_info): Update comment
23223         before arg_pointer_offset and hard_frame_pointer_offset.
23224         (mips_compute_frame_info): Update diagram before function: to
23225         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
23226         indicate the position of frame_pointer_rtx with -fstack-protector and
23227         to show args_size.  Don't allocate cprestore area for leaf functions
23228         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
23229         cprestore_size.
23230         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
23231
23232 2009-04-30  Michael Matz  <matz@suse.de>
23233
23234         PR tree-optimization/39955
23235         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
23236
23237 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
23238
23239         * ira.c (setup_cover_and_important_classes):  Use safe macro
23240         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
23241         directly.
23242         * genpreds.c (write_tm_preds_h):  Output suitable definition of
23243         REG_CLASS_FOR_CONSTRAINT.
23244
23245 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
23246
23247         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
23248         instead of an int.
23249         * bitmap.c (bitmap_descriptor): Likewise.
23250         * ggc-common.c (loc_descriptor): Likewise.
23251         * varray.c (varray_descriptor): Likewise.
23252         * vec.c (vec_descriptor): Likewise.
23253
23254 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
23255
23256         * Makefile.in (dce.o): Add $(EXCEPT_H).
23257         * dce.c: Include except.h and delete redundant vector definitions.
23258         (deletable_insn_p): Return false for non-call insns that can throw
23259         if DF is running.
23260
23261 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
23262
23263         * gcse.c (ae_gen): Remove.
23264         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
23265         and make non-static function to make it available in store-motion.c.
23266         Update call sites with search-and-replace.
23267         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
23268         extract_mentioned_regs, extract_mentioned_regs_helper,
23269         find_moveable_store, compute_store_table, load_kills_store, find_loads,
23270         store_killed_in_insn, store_killed_after, store_killed_before,
23271         build_store_vectors, insert_insn_start_basic_block, insert-store,
23272         remove_reachable_equiv_notes, replace_store_insn, delete_store,
23273         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
23274         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
23275         * store-motion.c: ...new file.  Also copy data structures from gcse.c
23276         and clean up to remove parts not used by store motion.
23277         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
23278         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
23279
23280 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23281
23282         PR target/38571
23283         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
23284         when optimizing for size.
23285
23286 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
23287
23288         * gcse.c (gcse_constant_p): Fix typo in last change.
23289
23290 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
23291
23292         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
23293
23294 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
23295
23296         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
23297
23298 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
23299
23300         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
23301         CONST_HIGH_PART result.
23302
23303 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
23304
23305         * config/avr/avr.c (initial_elimination_offset): Rename to
23306         avr_initial_elimination_offset.
23307         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
23308         change return type to bool.
23309         (avr_can_eliminate): New function.
23310         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
23311         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
23312         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
23313         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
23314         avr_initial_elimination_offset.
23315         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
23316         (avr_initial_elimination_offset): Define.
23317
23318 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
23319             Steven Bosscher  <steven@gcc.gnu.org>
23320
23321         PR rtl-optimization/39938
23322         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
23323         * cfgrtl.c: Include insn-attr.h.
23324         (rest_of_pass_free_cfg): New function.
23325         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
23326         * resource.c (init_resource_info): Remove call to df_analyze.
23327
23328 2009-04-29  Richard Guenther  <rguenther@suse.de>
23329
23330         PR target/39943
23331         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
23332         allow conversion to signed integers.
23333
23334 2009-04-29  Richard Guenther  <rguenther@suse.de>
23335
23336         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
23337         shifts of floating point vectors if the shift amount is
23338         a constant multiple of the element size.
23339
23340 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
23341             Michael Matz  <matz@suse.de>
23342
23343         PR middle-end/39927
23344         PR bootstrap/39929
23345         * tree-outof-ssa.c (emit_partition_copy): New function.
23346         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
23347         insert_part_to_rtx_on_edge): Perform the partition base var
23348         copy using emit_partition_copy.
23349         (insert_value_copy_on_edge): Convert constants to the right mode.
23350         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
23351         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
23352
23353 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23354
23355         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
23356         scan backwards to try to find a constant to initialize it.
23357
23358         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
23359         insn before the loop_end instruction, don't look past labels.
23360
23361 2009-04-29  Richard Guenther  <rguenther@suse.de>
23362
23363         PR middle-end/39937
23364         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
23365         loose type conversions.
23366         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
23367         stmts only if there are no uses of its definition.
23368
23369 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23370
23371         * config/bfin/bfin.h (splitting_loops): Declare.
23372         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
23373         Reorder bit definitions to be ascending.
23374         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
23375         * config/bfin/bfin.c (splitting_loops): New variable.
23376         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
23377         (struct loop_info): Remove members INIT and LOOP_INIT.
23378         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
23379         the LSETUP sequence.  Allow LC to be loaded from any register, but
23380         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
23381         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
23382         set to 1.
23383         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
23384         of reload_completed.
23385
23386         From Jie Zhang:
23387         * config/bfin/bfin.md (movsi_insn): Refine constraints.
23388
23389 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
23390
23391         * Makefile.in (PLUGIN_VERSION_H): New.
23392         (OBJS-common): Remove plugin-version.o.
23393         (plugin.o): Depend on (PLUGIN_VERSION_H).
23394         (plugin-version.o): Remove.
23395         * configure: Regenerate
23396         * configure.ac: Create plugin-version.h.
23397         * gcc-plugin.h (plugin_gcc_version): Remove.
23398         (plugin_default_version_check): Change signature.
23399         * plugin-version.c: Remove.
23400         * plugin.c: Include plugin-version.h.
23401         (str_plugin_gcc_version_name): Remove.
23402         (try_init_one_plugin): Pass gcc version to plugin_init.
23403         (plugin_default_version_check): Both gcc and plugin versions are now
23404         arguments.
23405
23406 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23407
23408         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
23409         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
23410         Remove special case testing for last insn of inner loops. Don't fail
23411         if the loop ends with a jump, emit an extra nop instead.
23412
23413         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
23414         DREGS rather than comparing directly.  Remove code that tries to
23415         account for latencies.
23416
23417 2009-04-29  Richard Guenther  <rguenther@suse.de>
23418
23419         PR tree-optimization/39941
23420         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
23421         eliminating an indirect call.
23422
23423 2009-04-29  Richard Guenther  <rguenther@suse.de>
23424
23425         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
23426         parameter.  Allow invariants as base if !require_lvalue.
23427         (verify_gimple_assign_single): Adjust.
23428
23429 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23430
23431         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
23432         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
23433         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
23434         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
23435         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
23436         a VEC_SELECT.
23437         * config/bfin/bfin.c (bfin_expand_builtin,
23438         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
23439
23440 2009-04-28  Richard Guenther  <rguenther@suse.de>
23441
23442         * tree-vect-loop.c (get_initial_def_for_induction): Use
23443         correct types for pointer increment.
23444
23445 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23446
23447         * toplev.c (print_version): Update GMP version string calculation.
23448
23449 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
23450
23451         PR rtl-optimization/39938
23452         * resource.c (init_resource_info): Add call to df_analyze.
23453
23454 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
23455
23456         * config/alpha/alpha.md (usegp): Cast the result of
23457         alpha_find_lo_sum_using_gp to enum attr_usegp.
23458         * config/alpha/alpha.c (override_options): Remove end-of-structure
23459         marker element from cpu_table.  Use array size of cpu_table to handle
23460         -mcpu and -mtune options.
23461         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
23462
23463 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
23464
23465         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
23466         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
23467         tune_32 and tune_64.
23468         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
23469         support on PowerPC.
23470         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
23471         * config/rs6000/option-defaults.h: ... here.  New file.
23472         (OPT_64, OPT_32): Define.
23473         (MASK_64BIT): Define to 0 if not already defined.
23474         (OPT_ARCH64, OPT_ARCH32): Define.
23475         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
23476         and tune_64.
23477
23478 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23479
23480         * config/arm/arm.c (arm_override_options): Emit error on using
23481         fpa with AAPCS.
23482
23483 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
23484
23485         PR rtl-optimization/39914
23486         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
23487         registers for allocnos created from user-defined variables only
23488         when not optimizing.
23489
23490 2009-04-28  Richard Guenther  <rguenther@suse.de>
23491
23492         PR middle-end/39937
23493         * fold-const.c (fold_binary): Use distribute_real_division only
23494         on float types.
23495
23496 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
23497
23498         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
23499         add hpux-stdint.h to tm_file.
23500         (hppa[12]*-*-hpux11*): Ditto.
23501         (ia64*-*-hpux*): Ditto.
23502         * config/hpux-stdint.h: New.
23503         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
23504         __STDC_EXT__ for all compiles.
23505         * config/pa/pa-hpux.h: Ditto.
23506         * config/pa/pa-hpux10.h: Ditto.
23507         * config/pa/pa-hpux11.h: Ditto.
23508
23509 2009-04-28  Catherine Moore  <clm@codesourcery.com>
23510
23511         * debug.h (set_name): Add comment.
23512
23513 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
23514
23515         PR target/39929
23516         * config/darwin.c (machopic_gen_offset): Check
23517         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
23518         * config/arm/arm.c (require_pic_register): Likewise.
23519
23520 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
23521
23522         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
23523         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
23524         m32c_promote_prototypes): Delete.
23525
23526 2009-04-28  Michael Matz  <matz@suse.de>
23527
23528         PR middle-end/39922
23529         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
23530         constants.
23531
23532 2009-04-28  Richard Guenther  <rguenther@suse.de>
23533
23534         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
23535
23536 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23537
23538         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
23539         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
23540         * config/arm/arm-tune.md: Regenerate.
23541
23542 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
23543
23544         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
23545         block if there are complex incoming edges.
23546         (sel_merge_blocks): Remove useless assert.
23547         (sel_redirect_edge_and_branch): Check that edge was redirected.
23548         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
23549         (sel_find_rgns): Delete declaration.
23550         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
23551         the region when it is not a preheader.
23552
23553 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
23554
23555         PR c/39323
23556         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
23557
23558 2009-04-28  Richard Guenther  <rguenther@suse.de>
23559
23560         * tree.h (SSA_NAME_VALUE): Remove.
23561         (struct tree_ssa_name): Remove value_handle member.
23562         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
23563         array for jump threading.
23564         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
23565         SSA_NAME_VALUEs.
23566         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
23567         * tree-flow.h (threadedge_initialize_values): Declare.
23568         (threadedge_finalize_values): Likewise.
23569         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
23570         (SSA_NAME_VALUE): Define.
23571         (threadedge_initialize_values): New function.
23572         (threadedge_finalize_values): Likewise.
23573         * tree-ssa-dom.c (ssa_name_values): New global variable.
23574         (SSA_NAME_VALUE): Define.
23575         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
23576
23577 2009-04-28  Ira Rosen  <irar@il.ibm.com>
23578
23579         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
23580         Use REPORT_VECTORIZED_LOCATIONS instead
23581         REPORT_VECTORIZED_LOOPS.
23582         * tree-vectorizer.c (vect_verbosity_level): Make static.
23583         (vect_loop_location): Rename to vect_location.
23584         (vect_set_verbosity_level): Update comment.
23585         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
23586         and vect_location.
23587         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
23588         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
23589         instead REPORT_UNVECTORIZED_LOOPS.
23590         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
23591         and vect_loop_def to vect_external_def and vect_internal_def.
23592         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
23593         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
23594         REPORT_UNVECTORIZED_LOCATIONS.
23595         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
23596         and vect_used_in_loop and to vect_unused_in_scope and
23597         vect_used_in_scope.
23598         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
23599         (vect_verbosity_level): Remove declaration.
23600         (vect_analyze_operations): Likewise.
23601         (vect_analyze_stmt): Declare.
23602         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
23603         REPORT_UNVECTORIZED_LOCATIONS.
23604         (vect_get_loop_niters): Fix indentation.
23605         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
23606         (vect_analyze_loop_operations): New function.
23607         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
23608         vect_analyze_operations.
23609         (vect_is_simple_reduction): Use new names.
23610         (vectorizable_live_operation, vect_transform_loop): Likewise.
23611         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
23612         to specify whether the data references can be a part of interleaving
23613         chain.
23614         (vect_analyze_data_ref_dependence): Use new names.
23615         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
23616         (vect_create_addr_base_for_vector_ref): Remove redundant code.
23617         * tree-vect-patterns.c (widened_name_p): Use new names.
23618         (vect_recog_dot_prod_pattern): Likewise.
23619         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
23620         (process_use, vect_mark_stmts_to_be_vectorized,
23621         vect_model_simple_cost, vect_model_store_cost,
23622         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
23623         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
23624         vectorizable_operation, vectorizable_type_demotion,
23625         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
23626         vectorizable_condition): Likewise.
23627         (vect_analyze_operations): Split into vect_analyze_loop_operations
23628         and ...
23629         (vect_analyze_stmt): ... new function.
23630         (new_stmt_vec_info): Use new names.
23631         (vect_is_simple_use): Use new names and fix comment.
23632         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
23633         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
23634
23635 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
23636
23637         PR target/39911
23638         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
23639         and integer modes for x87 operands.  Do not ICE for unsupported size,
23640         generate error instead.  Generate error for unsupported operand types.
23641         ['z']: Do not handle HImode memory operands specially.  Warning
23642         for floating-point operands.  Fallthru to 'Z' for unsupported operand
23643         types.  Do not ICE for unsupported size, generate error instead.
23644         (output_387_binary_op): Use %Z to output operands.
23645         (output_fp_compare): Ditto.
23646         (output_387_reg_move): Ditto.
23647
23648 2009-04-28  Ben Elliston  <bje@au.ibm.com>
23649
23650         PR c++/35652
23651         Revert:
23652
23653         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23654
23655         * builtins.c (c_strlen): Do not warn here.
23656         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
23657         * c-common.c (pointer_int_sum): Take an explicit location.
23658         Warn about offsets out of bounds.
23659         * c-common.h (pointer_int_sum): Adjust declaration.
23660
23661 2009-04-27  Ian Lance Taylor  <iant@google.com>
23662
23663         * collect2.c (is_ctor_dtor): Change type of ret field in struct
23664         names to symkind.
23665         * dce.c (run_fast_df_dce): Change type of old_flags to int.
23666         * df-core.c (df_set_flags): Change return type to int.  Change
23667         type of old_flags to int.
23668         (df_clear_flags): Likewise.
23669         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
23670         (df_get_conditional_uses): Likewise.
23671         * df.h (df_set_flags, df_clear_flags): Update declarations.
23672         * dwarf2out.c (struct indirect_string_node): Change type of form
23673         field to enum dwarf_form.
23674         (AT_string_form): Change return type to enum dwarf_form.
23675         * fixed-value.c (fixed_compare): Add cast to enum type.
23676         * fwprop.c (update_df): Change 0 to VOIDmode.
23677         * gensupport.c: Change 0 to UNKNOWN.
23678         * gimple.h (gimple_cond_code): Add cast to enum type.
23679         * haifa-sched.c (reemit_notes): Add cast to enum type.
23680         * hooks.c (hook_int_void_no_regs): Remove function.
23681         * hooks.h (hook_int_void_no_regs): Remove declaration.
23682         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
23683         * predict.c (combine_predictions_for_insn): Add casts to enum type.
23684         * real.c (real_arithmetic): Add cast to enum type.
23685         (real_compare): Likewise.
23686         * target.h (struct gcc_target): Change return type of
23687         branch_target_register_class to enum reg_class.
23688         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
23689         default_branch_target_register_class.
23690         * targhooks.c (default_branch_target_register_class): New function.
23691         * targhooks.h (default_branch_target_register_class): Declare.
23692         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
23693         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
23694         cast to int.
23695         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
23696         ERROR_MARK.
23697         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
23698         vect_uninitialized_def.  Change 0 to ERROR_MARK.
23699         * tree-vect-stmts.c (supportable_widening_operation): Don't
23700         initialize icode1 and icode2.
23701         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
23702         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
23703         and to STD_C89.
23704         (cmn_err_flag_specs): Change 0 to STD_C89.
23705         (cmn_err_char_table): Likewise.
23706         * config/arm/arm.c (get_arm_condition_code): Change type of code
23707         to enum arm_cond_code.
23708         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
23709         (IWMMXT_BUILTIN2): Likewise.
23710         (neon_builtin_type_bits): Don't define typedef.
23711         (neon_builtin_datum): Change type of bits field to int.
23712         (arm_expand_neon_args): Add cast to enum type.
23713         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
23714         TLS_MODEL_NONE.
23715         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
23716         casts to enum type.
23717         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
23718         MIPS_FP_COND_f.
23719         * config/mips/mips.md (jal_macro): Return enum constant.
23720         (single_insn): Likewise.
23721         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
23722         CODE_FOR_nothing.
23723         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
23724         casts to enum type.
23725         * config/s390/s390.c (s390_tune_flags): Change type to int.
23726         (s390_arch_flags): Likewise.
23727         (s390_handle_arch_option): Change flags field of struct pta to int.
23728         * config/s390/s390.h (s390_tune_flags): Update declaration.
23729         (s390_arch_flags): Likewise.
23730         * config/sh/sh.c (prepare_move_operands): Compare
23731         tls_symbolic_operand result with enum constant.
23732         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
23733         (sh_expand_prologue): Add cast to enum type.
23734         (sh_expand_epilogue): Likewise.
23735         (tls_symbolic_operand): Change return type to enum tls_model.
23736         (fpscr_set_from_mem): Add cast to enum type.
23737         (legitimize_pic_address): Compare tls_symbolic_operand result with
23738         enum constant.
23739         (sh_target_reg_class): Change return type to enum reg_class.
23740         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
23741         PROCESSOR_xxx.
23742         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
23743         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
23744         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
23745         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
23746         (delayed_branch, tls_call_delay): Likewise.
23747         (eligible_for_sibcall_delay): Likewise.
23748         (eligible_for_return_delay): Likewise.
23749         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
23750         (spu_expand_builtin_1): Likewise.
23751
23752         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
23753         for all types of conversions.
23754         (output_init_element): Issue -Wc++-compat warning if needed when
23755         initializing a bitfield with enum type.
23756         * c-parser.c (c_parser_expression): Set original_type to
23757         original_type of right hand operand of comma operator.
23758
23759 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23760
23761         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
23762         grammar nits.
23763         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
23764         * doc/cpp.texi (Standard Predefined Macros)
23765         (Implementation-defined behavior): Likewise.
23766         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
23767         * doc/gimple.texi (GIMPLE Exception Handling)
23768         (@code{GIMPLE_ASSIGN}): Likewise.
23769         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
23770         * doc/invoke.texi (Warning Options, Optimize Options)
23771         (AVR Options, Darwin Options): Likewise.
23772         (Optimize Options): Reformulate -fwhole-program description.
23773         * doc/loop.texi (Lambda): Likewise.
23774         * doc/md.texi (Output Template, Define Constraints)
23775         (Standard Names, Insn Splitting): Likewise.
23776         * doc/options.texi (Option properties): Likewise.
23777         * doc/passes.texi (Tree-SSA passes): Likewise.
23778         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
23779         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
23780         (File Names and DBX): Likewise.
23781         * doc/trouble.texi (Incompatibilities): Likewise.
23782
23783 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
23784
23785         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
23786         instruction is correct.
23787
23788 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
23789
23790         Allow non-constant arguments to conversion intrinsics.
23791         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
23792         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
23793         * spu.c (print_operand): Handle 'v' and 'w'.
23794         (exp2_immediate_p, spu_gen_exp2): Define.
23795         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
23796         spu_convtf_1): Update parameter descriptions.
23797         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
23798         * constraints.md ('v', 'w'): New.
23799         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
23800         Remove.
23801         (i2f, I2F): New define_mode_attr.
23802         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
23803         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
23804         fixuns_truncv4sfv4si2):  Update to use mode attribute.
23805         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
23806         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
23807         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
23808         patterns for combine.
23809
23810 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
23811
23812         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
23813         (cprop, hoist, pre, store_motion): New debug counters.
23814         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
23815         is not an RTL pass anymore.
23816         (pass_profiling): Remove extern decl for pass removed in 2005.
23817         (pass_gcse, pass_jump_bypass): Remove.
23818         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
23819         to 0 for clean state.
23820         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
23821         * cse.c (gate_handle_cse_after_global_opts,
23822         rest_of_handle_cse_after_global_opts): New functions.
23823         (pass_cse_after_global_opts): New pass, does local CSE.
23824         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
23825         (TV_CPROP): New timevar.
23826         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
23827         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
23828         (gcse_main, recompute_all_luids): Remove.
23829         (compute_hash_table_work): Call max_reg_num instead of reading
23830         max_gcse_regno.
23831         (cprop_jump): Don't set run_jump_opt_after_gcse.
23832         (constprop_register): Always allow to alter jumps.
23833         (cprop_insn): Likewise.
23834         (do_local_cprop): Likewise.
23835         (local_cprop_pass): Likewise.  Return non-zero if something changed.
23836         (cprop): Remove function, fold interesting bits into one_cprop_pass.
23837         (find_implicit_sets): Add note about missed optimization opportunity.
23838         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
23839         pass_rtl_cprop execute function.
23840         Don't bother tracking the pass number, each pass gets its own dumpfile
23841         now anyway.
23842         Always allow to alter jumpsand bypass jumps.
23843         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
23844         will just find no suitable set.
23845         (pre_edge_insert): Fix dumping, this function is for PRE only.
23846         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
23847         pass_rtl_pre execute function.
23848         (hoist_code): Return non-zero if something changed.  Keep track of
23849         substitutions and insertions for statistics gathering similar to PRE.
23850         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
23851         called from the pass_rtl_hoist execute function.  Show pass statistics.
23852         (compute_store_table): Use max_reg_num directly instead of using the
23853         formerly global max_gcse_regno.
23854         (build_store_vectors): Likewise.
23855         (replace_store_insn): Fix dumping.
23856         (store_motion): Rename to ...
23857         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
23858         pass, called from the pass_rtl_store_motion execute function.  Keep
23859         track of substitutions and insertions for statistics gathering similar
23860         to PRE.
23861         (bypass_jumps): Remove, fold interesting bits into ...
23862         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
23863         from the pass_rtl_cprop execute function.
23864         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
23865         pass_jump_bypass): Remove.
23866         (gate_handle_gcse, rest_of_handle_gcse): Remove.
23867         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
23868         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
23869         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
23870         (gate_rtl_store_motion, execute_rtl_store_motion,
23871         pass_rtl_store_motion): New.
23872         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
23873         make it clear that -fcse-skip-blocks is a no-op for backward compat.
23874         * passes.c (init_optimization_passes): Remove pass_gcse and
23875         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
23876         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
23877         instead of pass_jump_bypass.
23878
23879 2009-04-27  Richard Guenther  <rguenther@suse.de>
23880
23881         PR middle-end/39928
23882         * gimplify.c (gimplify_expr): If we are required to create
23883         a temporary make sure it ends up as register.
23884
23885 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
23886
23887         PR target/39903
23888         * config/i386/i386.c (construct_container): Don't call
23889         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
23890         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
23891
23892 2009-04-27  Michael Matz  <matz@suse.de>
23893
23894         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
23895         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
23896         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
23897         (dump_replaceable_exprs): Take a bitmap.
23898         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
23899         array.
23900         (expand_gimple_basic_block): Likewise.
23901         * tree-ssa-ter.c (struct temp_expr_table_d): Make
23902         replaceable_expressions member a bitmap.
23903         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
23904         (mark_replaceable): Likewise.
23905         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
23906         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
23907
23908 2009-04-27  Richard Guenther  <rguenther@suse.de>
23909
23910         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
23911         (verify_stmts): Dispatch to gimple/type verification code.
23912         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
23913         issue with call argument types.
23914
23915 2009-04-27  Michael Matz  <matz@suse.de>
23916
23917         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
23918         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
23919         to above.
23920
23921 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
23922             Eric Botcazou  <ebotcazou@adacore.com>
23923
23924         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
23925         a label's basic block.
23926         (mark_target_live_regs): Tidy and rework obsolete comments.
23927         Change back DF problem to LIVE.  If a label starts a basic block,
23928         assume that all registers that used to be live then still are.
23929         (init_resource_info): If a label starts a basic block, set its
23930         BLOCK_FOR_INSN accordingly.
23931         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
23932
23933 2009-04-27  Richard Guenther  <rguenther@suse.de>
23934
23935         * tree-flow-inline.h (function_ann): Remove.
23936         (get_function_ann): Likewise.
23937         * tree-dfa.c (create_function_ann): Remove.
23938         * tree-flow.h (struct static_var_ann_d): Remove.
23939         (struct function_ann_d): Likewise.
23940         (union tree_ann_d): Remove fdecl member.
23941         (function_ann_t): Remove.
23942         (function_ann, get_function_ann, create_function_ann): Remove
23943         declarations.
23944
23945 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
23946
23947         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
23948
23949 2009-04-27  Jan Hubicka  <jh@suse.cz>
23950
23951         * ipa-pure-const.c (struct funct_state_d): New fields
23952         state_previously_known, looping_previously_known; remove
23953         state_set_in_source.
23954         (analyze_function): Use new fields.
23955         (propagate): Avoid assumption that state_set_in_source imply
23956         nonlooping.
23957
23958         * tree-ssa-loop-niter.c (finite_loop_p): New function.
23959         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
23960         * cfgloop.h (finite_loop_p): Declare.
23961
23962 2009-04-26  Michael Matz  <matz@suse.de>
23963
23964         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
23965
23966 2009-04-26  Michael Matz  <matz@suse.de>
23967
23968         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
23969         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
23970         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
23971         pass_mark_used_blocks): Remove.
23972         * tree-optimize.c (pass_free_datastructures,
23973         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
23974         * passes.c (init_optimization_passes): Don't call
23975         pass_mark_used_blocks, remove dead code.
23976
23977 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
23978
23979         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
23980         * tree-ssa-live.h (register_ssa_partition): Likewise.
23981
23982 2009-04-26  Michael Matz  <matz@suse.de>
23983
23984         Expand from SSA.
23985         * builtins.c (fold_builtin_next_arg): Handle SSA names.
23986         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
23987         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
23988         SSA names.
23989         (compare_pairs): Swap cost comparison.
23990         (coalesce_ssa_name): Don't use change_partition_var.
23991         * tree-nrv.c (struct nrv_data): Add modified member.
23992         (finalize_nrv_r): Set it.
23993         (tree_nrv): Use it to update statements.
23994         (pass_nrv): Require PROP_ssa.
23995         * tree-mudflap.c (mf_decl_cache_locals,
23996         mf_build_check_statement_for): Use make_rename_temp.
23997         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
23998         * alias.c (find_base_decl): Handle SSA names.
23999         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
24000         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
24001         * rtl.h (set_reg_attrs_for_parm): Declare.
24002         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
24003         to "optimized", remove unused locals at finish.
24004         (execute_free_datastructures): Make global, call
24005         delete_tree_cfg_annotations.
24006         (execute_free_cfg_annotations): Don't call
24007         delete_tree_cfg_annotations.
24008
24009         * ssaexpand.h: New file.
24010         * expr.c (toplevel): Include ssaexpand.h.
24011         (expand_assignment): Handle SSA names the same as register variables.
24012         (expand_expr_real_1): Expand SSA names.
24013         * cfgexpand.c (toplevel): Include ssaexpand.h.
24014         (SA): New global variable.
24015         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
24016         (SSAVAR): New macro.
24017         (set_rtl): New helper function.
24018         (add_stack_var): Deal with SSA names, use set_rtl.
24019         (expand_one_stack_var_at): Likewise.
24020         (expand_one_stack_var): Deal with SSA names.
24021         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
24022         before unique numbers.
24023         (expand_stack_vars): Use set_rtl.
24024         (expand_one_var): Accept SSA names, add asserts for them, feed them
24025         to above subroutines.
24026         (expand_used_vars): Expand all partitions (without default defs),
24027         then only the local decls (ignoring those expanded already).
24028         (expand_gimple_cond): Remove edges when jumpif() expands an
24029         unconditional jump.
24030         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
24031         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
24032         SSA name.
24033         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
24034         members of SA; deal with PARM_DECL partitions here; expand
24035         all PHI nodes, free tree datastructures and SA.  Commit instructions
24036         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
24037         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
24038         info and statements at start, collect garbage at finish.
24039         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
24040         (VAR_ANN_PARTITION) Remove.
24041         (change_partition_var): Don't declare.
24042         (partition_to_var): Always return SSA names.
24043         (var_to_partition): Only accept SSA names.
24044         (register_ssa_partition): Only check argument.
24045         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
24046         member.
24047         (delete_var_map): Don't free it.
24048         (var_union): Only accept SSA names, simplify.
24049         (partition_view_init): Mark only useful SSA names as used.
24050         (partition_view_fini): Only deal with SSA names.
24051         (change_partition_var): Remove.
24052         (dump_var_map): Use ssa_name instead of partition_to_var member.
24053         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
24054         basic blocks.
24055         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
24056         (struct _elim_graph): New member const_dests; nodes member vector of
24057         ints.
24058         (set_location_for_edge): New static helper.
24059         (create_temp): Remove.
24060         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
24061         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
24062         (new_elim_graph): Allocate const_dests member.
24063         (clean_elim_graph): Truncate const_dests member.
24064         (delete_elim_graph): Free const_dests member.
24065         (elim_graph_size): Adapt to new type of nodes member.
24066         (elim_graph_add_node): Likewise.
24067         (eliminate_name): Likewise.
24068         (eliminate_build): Don't take basic block argument, deal only with
24069         partition numbers, not variables.
24070         (get_temp_reg): New static helper.
24071         (elim_create): Use it, deal with RTL temporaries instead of trees.
24072         (eliminate_phi): Adjust all calls to new signature.
24073         (assign_vars, replace_use_variable, replace_def_variable): Remove.
24074         (rewrite_trees): Only do checking.
24075         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
24076         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
24077         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
24078         contains_tree_r, MAX_STMTS_IN_LATCH,
24079         process_single_block_loop_latch, analyze_edges_for_bb,
24080         perform_edge_inserts): Remove.
24081         (expand_phi_nodes): New global function.
24082         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
24083         functions, initialize new parameter, remember partitions having a
24084         default def.
24085         (finish_out_of_ssa): New global function.
24086         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
24087         don't reset in_ssa_p here, don't disable TER when mudflap.
24088         (pass_del_ssa): Remove.
24089         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
24090         partition members.
24091         (execute_free_datastructures): Declare.
24092         * Makefile.in (SSAEXPAND_H): New variable.
24093         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
24094         * basic-block.h (commit_one_edge_insertion): Declare.
24095         * passes.c (init_optimization_passes): Move pass_nrv and
24096         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
24097         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
24098         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
24099         (redirect_branch_edge): Deal with super block when expanding, split
24100         out jump patching itself into ...
24101         (patch_jump_insn): ... here, new static helper.
24102
24103 2009-04-26  Michael Matz  <matz@suse.de>
24104
24105         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
24106         beyond num_ssa_names.
24107         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
24108         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
24109
24110 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
24111
24112         PR inline-asm/39543
24113         * fwprop.c (forward_propagate_asm): New function.
24114         (forward_propagate_and_simplify): Propagate also into __asm, if it
24115         doesn't increase the number of referenced registers.
24116
24117         PR c/39889
24118         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
24119
24120 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
24121
24122         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
24123         note_nonlocal_vla_type for nonlocal VLAs.
24124         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
24125         contains_remapped_vars, remap_vla_decls): New functions.
24126         (convert_nonlocal_reference_stmt): If not optimizing, call
24127         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
24128         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
24129         if it wasn't found in var_map.
24130         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
24131         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
24132         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
24133         declare_vars.
24134         * gimplify.c (nonlocal_vlas): New variable.
24135         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
24136         referenced VLAs.
24137         (gimplify_body): Create and destroy nonlocal_vlas.
24138
24139         * dwarf2out.c (loc_descr_plus_const): New function.
24140         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
24141         mem_loc_descriptor, loc_descriptor_from_tree_1,
24142         descr_info_loc, gen_variable_die): Use it.
24143
24144         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
24145         !TREE_STATIC VAR_DECLs.
24146         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
24147         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
24148         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
24149         DECL_BY_REFERENCE is valid.
24150         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
24151         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
24152         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
24153         Copy DECL_BY_REFERENCE.
24154         (struct nesting_copy_body_data): New type.
24155         (nesting_copy_decl): New function.
24156         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
24157         if they have variable length.
24158
24159 2009-04-26  Michael Matz  <matz@suse.de>
24160
24161         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
24162         mark new temporaries for renaming.
24163
24164 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
24165
24166         PR c/39581
24167         * c-decl.c (global_bindings_p): Return negative value.
24168         (c_variable_size): New.  Based on variable_size from
24169         stor-layout.c.
24170         (grokdeclarator): Call c_variable_size not variable_size.
24171
24172 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
24173
24174         * config/i386/i386.c (print_operand) ['z']: Fix typo.
24175
24176 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
24177
24178         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
24179         Redefine it to just use mingw/include.
24180         (ASM_SPEC): Rules for -m32 and -m64.
24181         (LINK_SPEC): Use Likewise.
24182         (SPEC_32): New define.
24183         (SPEC_64): Likewise.
24184         (SUB_LINK_SPEC): Likewise.
24185         (MULTILIB_DEFAULTS): New define.
24186         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
24187         Add multilib options.
24188         (MULTILIB_DIRNAMES): Likewise.
24189         (MULTILIB_OSDIRNAMES): Likewise.
24190         (LIBGCC): Likewise.
24191         (INSTALL_LIBGCC): Likewise.
24192
24193 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
24194
24195         PR c/39556
24196         * c-tree.h (enum c_inline_static_type): New.
24197         (record_inline_static): Declare.
24198         * c-decl.c (struct c_inline_static, c_inline_statics,
24199         record_inline_static, check_inline_statics): New.
24200         (pop_file_scope): Call check_inline_statics.
24201         (start_decl): Call record_inline_static instead of pedwarning
24202         directly for static in inline function.
24203         * c-typeck.c (build_external_ref): Call record_inline_static
24204         instead of pedwarning directly for static referenced in inline
24205         function.
24206
24207 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
24208
24209         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
24210         not new but only being rescanned.
24211         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
24212         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
24213         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
24214         record_set_info, compute_set, grealloc): Remove.
24215         (recompute_all_luids): New function.
24216         (gcse_main): Don't compute sets, and don't do related memory
24217         allocations/free-ing.  If something changed before the end of the
24218         pass, update LUIDs using recompute_all_luids.
24219         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
24220         (free_gcse_mem): Don't free it either.
24221         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
24222         Use the df insn LUIDs.
24223         (load_killed_in_block): Likewise.
24224         (compute_hash_table_work): Don't compute reg_set_in_block.
24225         (compute_transp): Use DF_REG_DEF_CHAINs.
24226         (local_cprop_pass): Don't use compute_sets and related functions.
24227         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
24228         Use get_max_uid() instead of max_cuid.
24229         (insert_insn_end_basic_block, pre_insert_copy_insn,
24230         update_ld_motion_stores): Don't try to
24231         keep reg_set tables up to date.
24232         (pre_insert_copies): Use df insn LUIDs.
24233         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
24234         (reg_set_info): Don't use extra bitmap argument.
24235         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
24236         information to compute regs_set_in_block.
24237         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
24238         (bypass_jumps): Don't use compute_sets and friends.
24239
24240 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24241
24242         PR testsuite/39710
24243         * opts.c (undocumented_msg): Do not leave blank even with
24244         ENABLE_CHECKING.
24245
24246 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24247
24248         * c-decl.c (build_enumerator): Allow values folding to integer
24249         constants but not integer constant expressions with a pedwarn if
24250         pedantic.
24251
24252 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24253
24254         PR c/39582
24255         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
24256         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
24257         type is an integer constant.
24258
24259 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
24260
24261         PR target/39897
24262         * config/i386/i386.c (print_operand) ['z']: Revert handling of
24263         HImode operands.
24264
24265 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24266
24267         PR c/39564
24268         * c-decl.c (grokdeclarator): Diagnose declarations of functions
24269         with variably modified return type and no storage class
24270         specifiers, except for the case of nested functions.  Distinguish
24271         extern declarations of functions with variably modified return
24272         types from those of objects with variably modified types.
24273
24274 2009-04-25  Jan Hubicka  <jh@suse.cz>
24275
24276         * tree.c (list_equal_p): New function.
24277         * tree.h (list_equal_p): Declare.
24278         * coretypes.h (edge_def, edge, const_edge, basic_block_def
24279         basic_block_def, basic_block, const_basic_block): New.
24280         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
24281         (redirect_eh_edge): New function.
24282         (make_eh_edge_update_phi): EH edges are not abnormal.
24283         * except.c: Include tree-flow.h.
24284         (list_match): New function.
24285         (eh_region_replaceable_by_p): New function.
24286         (replace_region): New function.
24287         (hash_type_list): New function.
24288         (hash_eh_region): New function.
24289         (eh_regions_equal_p): New function.
24290         (merge_peers): New function.
24291         (remove_unreachable_regions): Verify EH tree when checking;
24292         merge peers.
24293         (copy_eh_region_1): New function.
24294         (copy_eh_region): New function.
24295         (push_reachable_handler): New function.
24296         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
24297         regions without label but with live RESX.
24298         * except.h (redirect_eh_edge_to_label): New.
24299         * tree-flow.h (redirect_eh_edge): New.
24300         * coretypes.h (edge_def, edge, const_edge, basic_block_def
24301         basic_block_def, basic_block, const_basic_block): Remove.
24302         * Makefile.in (except.o): Add dependency on tree-flow.h
24303         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
24304         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
24305         Remove.
24306
24307 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
24308
24309         PR bootstrap/39645
24310         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
24311         on the destination of memcpy.
24312
24313 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
24314
24315         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
24316         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
24317         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
24318
24319 2009-04-25  Jan Hubicka  <jh@suse.cz>
24320
24321         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
24322         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
24323         to be reached by different label than left.
24324         (update_eh_edges): Update comment; remove edge_to_remove if possible
24325         and return true if suceeded.
24326         (cleanup_empty_eh): Accept sharing map; handle shared regions.
24327         (cleanup_eh): Compute sharing map.
24328         * except.c (remove_eh_handler_and_replace): Add argument if we should
24329         update regions.
24330         (remove_unreachable_regions): Update for label sharing.
24331         (label_to_region_map): Likewise.
24332         (get_next_region_sharing_label): New function.
24333         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
24334         prev_try pointers.
24335         (remove_eh_handler): Update.
24336         (remove_eh_region_and_replace_by_outer_of): New function.
24337         * except.h (struct eh_region): Add next_region_sharing_label.
24338         (remove_eh_region_and_replace_by_outer_of,
24339         get_next_region_sharing_label): Declare.
24340         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
24341
24342 2009-04-25  Jan Hubicka  <jh@suse.cz>
24343
24344         * tree-cfg.c (split_critical_edges): Split also edges where we can't
24345         insert code even if they are not critical.
24346
24347 2009-04-25  Jan Hubicka  <jh@suse.cz>
24348
24349         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
24350         (gimple_can_remove_branch_p): EH edges won't remove branch by
24351         redirection.
24352         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
24353         updating of non-abnormal EH edges.
24354         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
24355         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
24356         (split_critical_edges): Split also edges where emitting code on them
24357         will lead to splitting later.
24358
24359 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
24360             H.J. Lu  <hongjiu.lu@intel.com>
24361
24362         PR target/39590
24363         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
24364         the configured assembler supports fildq and fistpq mnemonics.
24365         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
24366         * configure: Regenerated.
24367         * config.in: Ditto.
24368
24369         * config/i386/i386.c (print_operand): Handle 'Z'.
24370         ['z']: Remove handling of special fild/fist suffixes.
24371         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
24372         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
24373         suffix of fild insn.
24374         (*floatsi<mode>2_vector_mixed): Ditto.
24375         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
24376         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
24377         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
24378         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
24379         * config/i386/gas.h (GAS_MNEMONICS): Remove.
24380
24381 2009-04-25  Ben Elliston  <bje@au.ibm.com>
24382
24383         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
24384         the source of a set operation.
24385
24386 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
24387
24388         * target.h (struct gcc_target): Add case_values_threshold field.
24389         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
24390         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
24391         * targhooks.c (default_case_values_threshold): New function.
24392         * targhooks.h (default_case_values_threshold): Declare function.
24393         * stmt.c (expand_case): Use case_values_threshold target hook.
24394         * expr.h (case_values_threshold): Remove declartation.
24395         * expr.c (case_values_threshold): Remove function.
24396         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
24397
24398         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
24399         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
24400         (avr_case_values_threshold): Declare as static.
24401         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
24402
24403         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
24404         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
24405         (mn10300_case_values_threshold): New function.
24406
24407 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
24408
24409         * ira.c (setup_cover_and_important_classes): Add enum cast.
24410
24411 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
24412
24413         * genpreds.c (write_enum_constraint_num): Output definition of
24414         CONSTRAINT_NUM_DEFINED_P macro.
24415         * ira.c (setup_cover_and_important_classes): Use
24416         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
24417
24418 2009-04-24  DJ Delorie  <dj@redhat.com>
24419
24420         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
24421         __SH2A_SINGLE_ONLY__ also.
24422
24423 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
24424
24425         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
24426         (movdf_internal): Ditto.
24427         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
24428         SFmode and DFmode constants.
24429         (ia64_print_operand): Add 'G' format for printing
24430         floating point constants.
24431
24432 2009-04-24  Richard Guenther  <rguenther@suse.de>
24433
24434         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
24435         from unsigned additions.
24436
24437 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
24438
24439         * c-typeck.c (set_init_index): Allow array designators that are
24440         not integer constant expressions with a pedwarn if pedantic.
24441
24442 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
24443
24444         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
24445         zero if no overlap in nonzero bits between the operands.
24446
24447 2009-04-24  Ian Lance Taylor  <iant@google.com>
24448
24449         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
24450         (record_dead_and_set_regs): Likewise.
24451         * df.h (struct df_mw_hardreg): Change flags field to int.
24452         (struct df_base_ref): Likewise.
24453         (struct df): Change changeable_flags field to int.
24454         * df-scan.c (df_defs_record): Change clobber_flags to int.
24455         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
24456         constants rather than #define macros.
24457         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
24458         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
24459         (enum dwarf_calling_convention): Likewise.
24460         (enum dwarf_line_number_x_ops): Likewise.
24461         (enum dwarf_call_frame_info): Likewise.
24462         (enum dwarf_source_language): Likewise.
24463         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
24464         (add_calling_convention_attribute): Likewise.
24465         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
24466         (combine_comparisons): Change compcode to int.  Add cast to enum type.
24467         * genrecog.c (maybe_both_true_2): Change c to int.
24468         (write_switch): Likewise.  Add cast to enum type.
24469         * gimplify.c (gimplify_omp_for): Handle return values from
24470         gimplify_expr using MIN rather than bitwise or.
24471         (gimplify_expr): Add cast to enum type.
24472         * ipa-prop.c (update_jump_functions_after_inlining): Change
24473         IPA_BOTTOM to IPA_JF_UNKNOWN.
24474         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
24475         Add casts to enum type.
24476         (setup_cover_and_important_classes): Change cl to int.  Add casts
24477         to enum type.
24478         (setup_class_translate): Change cl and mode to int.
24479         (ira_init_once): Change mode to int.
24480         (free_register_move_costs): Likewise.
24481         (setup_prohibited_mode_move_regs): Add casts to enum type.
24482         * langhooks.c (add_builtin_function_common): Rework assertion that
24483         value fits bitfield.
24484         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
24485         * omega.c (omega_do_elimination): Avoid math on enum types.
24486         * optabs.c (expand_vec_shift_expr): Remove casts to int.
24487         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
24488         int local to handle integral_argment value.
24489         * regmove.c (try_auto_increment): Change PUT_MODE to
24490         PUT_REG_NOTE_KIND.
24491         * reload.c (push_secondary_reload): Add casts to enum type.
24492         (secondary_reload_class, find_valid_class): Likewise.
24493         * reload1.c (emit_input_reload_insns): Likewise.
24494         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
24495         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
24496         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
24497         constant.
24498         * tree.c (build_common_builtin_nodes): Add casts to enum type.
24499         * tree-complex.c (complex_lattice_t): Typedef to int rather than
24500         enum type.
24501         (expand_complex_libcall): Add casts to enum type.
24502         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
24503         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
24504         with ERROR_MARK, not NUM_TREE_CODES.
24505         (vect_create_epilog_for_reduction): Likewise.
24506         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
24507         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
24508         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
24509         enum machine_mode.
24510         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
24511         vect_unused_in_loop.  Change 0 to loop_vect.
24512         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
24513         * var-tracking.c (get_init_value): Change return type to enum
24514         var_init_status.
24515         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
24516         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
24517         arm_fp_model.
24518         (arm_override_options): Add casts to enum type.
24519         (arm_emit_tls_decoration): Likewise.
24520         * config/i386/i386.c (ix86_function_specific_restore): Add casts
24521         to enum type.
24522         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
24523         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
24524         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
24525         enum type.
24526         * config/s390/s390.c (code_for_builtin_64): Change to array of
24527         enum insn_code.
24528         (code_for_builtin_31): Likewise.
24529         (s390_expand_builtin): Change code_for_builtin to enum insn_code
24530         const *.
24531         * config/sparc/sparc.c (sparc_override_options): Change value
24532         field in struct code_model to enum cmodel.  In initializer change
24533         0 to NULL and add cast to enum type.
24534
24535         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
24536         Change all callers.  Issue a -Wc++-compat warning using
24537         lhs_origtype if necessary.
24538         (convert_for_assignment): Issue -Wc++-compat warnings about
24539         invalid conversions to enum type on assignment.
24540         * c-common.h (build_modify_expr): Update declaration.
24541
24542 2009-04-24  Nick Clifton  <nickc@redhat.com>
24543
24544         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
24545         (function_arg_advance): Likewise.
24546         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
24547         5th alternative.
24548
24549 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
24550
24551         * config/s390/constraints.md ('I', 'J'): Fix condition.
24552
24553 2009-04-24  Diego Novillo  <dnovillo@google.com>
24554
24555         * gengtype-parse.c (parse_error): Add newline after message.
24556
24557 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
24558
24559         * config/i386/sse.md (avxmodesuffixs): Removed.
24560         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
24561         (*avx_pinsr<ssevecsize>): This.
24562
24563 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
24564
24565         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
24566         follow chains of regs with a single definition, and allow expressions
24567         that are function_invariant_p.
24568         (simple_rhs_p): Allow expressions that are function_invariant_p.
24569
24570 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
24571
24572         PR middle-end/39867
24573         * fold-const.c (fold_cond_expr_with_comparison): When folding
24574         > and >= to MAX, make sure the MAX uses the same type as the
24575         comparison's operands.
24576
24577 2009-04-24  Nick Clifton  <nickc@redhat.com>
24578
24579         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
24580         addressing for DImode accesses.
24581         (frv_print_operand_address): Handle PLUS case.
24582         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
24583
24584 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
24585
24586         PR rtl-optimization/39794
24587         * alias.c (canon_true_dependence): Add x_addr argument.
24588         * rtl.h (canon_true_dependence): Adjust prototype.
24589         * cse.c (check_dependence): Adjust canon_true_dependence callers.
24590         * cselib.c (cselib_invalidate_mem): Likewise.
24591         * gcse.c (compute_transp): Likewise.
24592         * dse.c (scan_reads_nospill): Likewise.
24593         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
24594         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
24595         canon_base_addr of the group, plus optional offset.
24596         (struct group_info): Rename canon_base_mem to
24597         canon_base_addr.
24598         (get_group_info): Set canon_base_addr to canon_rtx of base, not
24599         canon_rtx of base_mem.
24600
24601 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
24602
24603         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
24604         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
24605
24606 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24607
24608         * config/spu/spu-builtins.h: Delete file.
24609
24610         * config/spu/spu.h (enum spu_builtin_type): Move here from
24611         spu-builtins.h.
24612         (struct spu_builtin_description): Likewise.  Add GTY marker.
24613         Do not use enum spu_function_code or enum insn_code.
24614         (spu_builtins): Add extern declaration.
24615
24616         * config/spu/spu.c: Do not include "spu-builtins.h".
24617         (enum spu_function_code, enum spu_builtin_type_index,
24618         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
24619         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
24620         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
24621         unsigned_V2DI_type_node): Move here from spu-builtins.h.
24622         (spu_builtin_types): Make static.  Add GTY marker.
24623         (spu_builtins): Add extern declaration with GTY marker.
24624         Include "gt-spu.h".
24625
24626         * config/spu/spu-c.c: Do not include "spu-builtins.h".
24627         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
24628         Check programmatically whether all parameters are scalar.
24629
24630         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
24631
24632 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
24633
24634         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
24635         assignment from the constructor either if the target is volatile.
24636
24637 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
24638
24639         * config/arm/arm.md (insv): Do not share operands[0].
24640
24641 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
24642
24643         * config/vxlib-tls.c (active_tls_threads): Delete.
24644         (delete_hook_installed): New.
24645         (tls_delete_hook): Don't delete the delete hook.
24646         (tls_destructor): Delete it here.
24647         (__gthread_set_specific): Adjust installing the delete hook.
24648         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
24649         __gthread_leave_tsd_dtor_context.
24650
24651 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
24652
24653         * c-format.c (gcc_tdiag_char_table): Add support for %E.
24654
24655 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
24656
24657         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
24658         enum type.
24659         (alpha_rtx_costs): Ditto.
24660         (emit_unlikely_jump): Use add_reg_note.
24661         (emit_frame_store_1): Ditto.
24662         (alpha_expand_prologue): Ditto.
24663         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24664         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
24665
24666 2009-04-23  Nick Clifton  <nickc@redhat.com>
24667
24668         * config/v850/v850.md (epilogue): Remove suppressed code.
24669         (return): Rename to return_simple and remove test of frame size.
24670         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
24671         to gen_return_simple.
24672
24673 2009-04-22  Jing Yu  <jingyu@google.com>
24674
24675         PR testsuite/39781
24676         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
24677
24678 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24679
24680         PR C/31499
24681         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
24682         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
24683         value is a VECTOR_CST, the element type is the element type of the
24684         vector.
24685
24686 2009-04-22  DJ Delorie  <dj@redhat.com>
24687
24688         * config/m32c/m32c.h: Update GTY annotations to new syntax.
24689
24690 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
24691
24692         * alias.c (find_base_term): Move around LO_SUM case, so that
24693         CONST falls through into PLUS/MINUS handling.
24694
24695         PR c/39855
24696         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
24697         into 0, use omit_one_operand.
24698
24699 2009-04-23  Ben Elliston  <bje@au.ibm.com>
24700
24701         * config/rs6000/linux-unwind.h (get_regs): Remove type
24702         puns. Change the type of `pc' to an array of unsigned ints and
24703         update all users.  Constify frame24.
24704
24705 2009-04-22  DJ Delorie  <dj@redhat.com>
24706
24707         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
24708         declarations before code.
24709         (current_function_special_page_vector): Likewise.
24710         (m32c_expand_insv): Silence a warning.
24711
24712 2009-04-21  Taras Glek  <tglek@mozilla.com>
24713
24714         * alias.c: Update GTY annotations to new syntax.
24715         * basic-block.h: Likewise.
24716         * bitmap.h: Likewise.
24717         * c-common.h: Likewise.
24718         * c-decl.c: Likewise.
24719         * c-parser.c: Likewise.
24720         * c-pragma.c: Likewise.
24721         * c-tree.h: Likewise.
24722         * cfgloop.h: Likewise.
24723         * cgraph.h: Likewise.
24724         * config/alpha/alpha.c: Likewise.
24725         * config/arm/arm.h: Likewise.
24726         * config/avr/avr.h: Likewise.
24727         * config/bfin/bfin.c: Likewise.
24728         * config/cris/cris.c: Likewise.
24729         * config/darwin.c: Likewise.
24730         * config/frv/frv.c: Likewise.
24731         * config/i386/i386.c: Likewise.
24732         * config/i386/i386.h: Likewise.
24733         * config/i386/winnt.c: Likewise.
24734         * config/ia64/ia64.h: Likewise.
24735         * config/iq2000/iq2000.c: Likewise.
24736         * config/mips/mips.c: Likewise.
24737         * config/mmix/mmix.h: Likewise.
24738         * config/pa/pa.c: Likewise.
24739         * config/pa/pa.h: Likewise.
24740         * config/rs6000/rs6000.c: Likewise.
24741         * config/s390/s390.c: Likewise.
24742         * config/sparc/sparc.c: Likewise.
24743         * config/xtensa/xtensa.c: Likewise.
24744         * cselib.h: Likewise.
24745         * dbxout.c: Likewise.
24746         * dwarf2out.c: Likewise.
24747         * except.c: Likewise.
24748         * except.h: Likewise.
24749         * fixed-value.h: Likewise.
24750         * function.c: Likewise.
24751         * function.h: Likewise.
24752         * gimple.h: Likewise.
24753         * integrate.c: Likewise.
24754         * optabs.c: Likewise.
24755         * output.h: Likewise.
24756         * real.h: Likewise.
24757         * rtl.h: Likewise.
24758         * stringpool.c: Likewise.
24759         * tree-data-ref.c: Likewise.
24760         * tree-flow.h: Likewise.
24761         * tree-scalar-evolution.c: Likewise.
24762         * tree-ssa-address.c: Likewise.
24763         * tree-ssa-alias.h: Likewise.
24764         * tree-ssa-operands.h: Likewise.
24765         * tree.c: Likewise.
24766         * tree.h: Likewise.
24767         * varasm.c: Likewise.
24768         * varray.h: Likewise.
24769         * vec.h: Likewise.
24770         * coretypes.h: Do not define GTY macro if it is already defined.
24771         * doc/gty.texi: Update GTY documentation to new syntax.
24772         * gengtype-lex.l: Enforce attribute-like syntax for GTY
24773         annotations on structs.
24774         * gengtype-parse.c: Likewise.
24775
24776 2009-04-22  Mark Heffernan  <meheff@google.com>
24777
24778         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
24779
24780 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
24781
24782         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
24783         where appropriate.
24784
24785 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
24786
24787         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
24788         the same as a PLUS without a shift.  Increase the cost of a
24789         CONST_INT in MULT.
24790
24791 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24792
24793         * Makefile.in: Update dependencies.
24794         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
24795         * errors.h: Remove bogus comment about compatibility.
24796         (warning): Update declaration.
24797         * genautomata.c: Update all calls to warning.
24798         * gimple.c: Do not include errors.h. Include toplev.h.
24799         * tree-ssa-structalias.c: Do not include errors.h.
24800         * omega.c: Likewise.
24801         * tree-ssa-reassoc.c: Likewise.
24802         * config/spu/spu-c.c: Likewise.
24803         * config/spu/t-spu-elf: Update dependencies.
24804
24805 2009-04-22  Richard Guenther  <rguenther@suse.de>
24806
24807         PR tree-optimization/39824
24808         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
24809         make sure the types are compatible.
24810
24811 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24812
24813         PR c++/14875
24814         * c-common.c (c_parse_error): Take a token_flags parameter.
24815         Use token_type for the token type instead.
24816         Pass token_flags to cpp_type2name.
24817         * c-common.h (c_parse_error): Update declaration.
24818         * c-parser.c (c_parser_error): Pass 0 as token flags.
24819
24820 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
24821
24822         PR rtl-optimization/39580
24823         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
24824
24825 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24826
24827         * function.c (expand_function_end): Do not emit a jump to the "naked"
24828         return label for fall-through returns.
24829         * except.c (sjlj_emit_function_exit): Always place the call to the
24830         unregister function at the location installed by expand_function_end.
24831
24832 2009-04-22  Richard Guenther  <rguenther@suse.de>
24833
24834         PR tree-optimization/39845
24835         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
24836         (gen_inbound_check): Likewise.
24837
24838 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
24839
24840         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
24841         padding for PPC.
24842         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
24843         * config/vxlib.c (__gthread_once): Add race guard for PPC.
24844
24845 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24846
24847         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
24848         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
24849         shift counts to avoid out-of-bounds array accesses.
24850
24851 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24852
24853         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
24854         (Pmode): Move above.
24855
24856 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
24857
24858         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
24859         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
24860         GET_CODE macro.  Use IN_RANGE macro where appropriate.
24861         * config/alpha/alpha.h: Ditto.
24862         * config/alpha/alpha.md: Ditto.
24863         * config/alpha/constraints.md: Ditto.
24864         * config/alpha/predicates.md: Ditto.
24865
24866 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24867
24868         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
24869         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24870         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24871         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24872         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24873         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24874         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24875         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24876         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24877         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24878         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24879         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24880         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24881         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24882         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24883         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24884         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24885         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24886         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24887         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24888         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24889         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24890         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24891         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24892         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24893         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24894         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24895
24896 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
24897
24898         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
24899         references from comments.
24900         * cfgbuild.c (count_basic_blocks): Delete.
24901         (find_basic_blocks_1): Delete.
24902         (find_basic_blocks): Delete.
24903         * except.c (finish_eh_generation): Make static.  Move comment from
24904         except.h here.  Remove find_basic_blocks references from comments.
24905         * except.h (finish_eh_generation): Delete.
24906         * basic-block.h (find_basic_blocks): Delete.
24907         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
24908
24909 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
24910
24911         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
24912         (sdbout_parms):  Likewise.
24913
24914 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
24915
24916         * config/sh/sh.c (prepare_cbranch_operands): Use
24917         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
24918         (expand_cbranchdi4): Likewise.
24919         (from_compare): Add cast to enum type.
24920         (expand_cbranchsi4): Use add_reg_note.
24921         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
24922         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
24923         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
24924         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24925         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
24926         instead of CODE_FOR_nothing.
24927         (cbranchdi4): Likewise.  Fix the order of arguments for
24928         gen_rtx_fmt_ee.
24929         (push_fpscr): Use add_reg_note.
24930         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
24931         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
24932
24933 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
24934
24935         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
24936         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
24937         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
24938         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
24939         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
24940         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
24941         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
24942         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
24943         config/alpha/x-vms, config/arc/t-arc,
24944         config/arm/README-interworking, config/arm/arm-c.c,
24945         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
24946         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
24947         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
24948         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
24949         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
24950         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
24951         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
24952         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
24953         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
24954         config/cris/t-elfmulti, config/crx/t-crx,
24955         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
24956         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
24957         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
24958         config/h8300/t-h8300, config/i386/athlon.md,
24959         config/i386/darwin-libgcc.10.4.ver,
24960         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
24961         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
24962         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
24963         config/i386/t-linux64, config/i386/t-nwld,
24964         config/i386/t-rtems-i386, config/i386/t-sol2-10,
24965         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
24966         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
24967         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
24968         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
24969         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
24970         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
24971         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
24972         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
24973         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
24974         config/m68k/t-uclinux, config/mcore/t-mcore,
24975         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
24976         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
24977         config/mips/crtn.asm, config/mips/irix-crti.asm,
24978         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
24979         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
24980         config/mips/mips-fixed.md, config/mips/sb1.md,
24981         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
24982         config/mips/t-iris6, config/mips/t-isa3264,
24983         config/mips/t-libgcc-mips16, config/mips/t-linux64,
24984         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
24985         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
24986         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
24987         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
24988         config/mn10300/t-linux, config/mn10300/t-mn10300,
24989         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
24990         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
24991         config/picochip/libgccExtras/clzsi2.asm,
24992         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
24993         config/rs6000/darwin-libgcc.10.4.ver,
24994         config/rs6000/darwin-libgcc.10.5.ver,
24995         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
24996         config/rs6000/t-aix43, config/rs6000/t-aix52,
24997         config/rs6000/t-darwin, config/rs6000/t-fprules,
24998         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
24999         config/rs6000/t-lynx, config/rs6000/t-netbsd,
25000         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
25001         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
25002         config/rs6000/t-rtems, config/rs6000/t-spe,
25003         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
25004         config/score/t-score-elf, config/sh/divcost-analysis,
25005         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
25006         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
25007         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
25008         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
25009         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
25010         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
25011         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
25012         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
25013         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
25014         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
25015         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
25016         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
25017         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
25018         limitx.h, version.c, xcoff.h: Add copyright and license notices.
25019         * config/h8300/genmova.sh: Include copyright and license notices
25020         in generated output.
25021         * config/h8300/mova.md: Regenerate.
25022         * doc/install.texi2html: Include word "Copyright" in copyright
25023         notice and use name "Free Software Foundation, Inc.".
25024         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
25025         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
25026         ChangeLog-2007, ChangeLog-2008: Correct dates.
25027
25028 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
25029
25030         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
25031         NE_EXPR operations as well.
25032         * c-parser.c (c_parser_condition): Do not set location information on
25033         the condition.
25034         (c_parser_conditional_expression): Likewise.
25035         (c_parser_binary_expression): Set location information on operators.
25036         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
25037         TRUTH_NOT_EXPR has been folded.
25038         * fold-const.c (fold_truth_not_expr): Copy location information from
25039         the incoming expression to the outgoing one.
25040         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
25041         recursive calls on the LHS of the operator but pass that of the
25042         operator to recursive calls on the RHS of the operator.  Set it
25043         on the COND_EXPR.
25044         (shortcut_cond_expr): Set the locus of the operator on the second
25045         COND_EXPR and that of the expression on the first in degenerate cases.
25046         Pass the locus of the expression to calls to shortcut_cond_r.
25047         Set the locus of the 'then' block on the associated jump, if any.
25048         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
25049         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
25050         expression to call to gimplify_boolean_expr.
25051
25052 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
25053
25054         * config.gcc: Add additional configuration for
25055         i686-w64-mingw* and x86_64-w64-mingw* triplet.
25056         * config/i386/mingw-w64.h: New mingw-w64 specific header.
25057         (CPP_SPEC): Redefine for allowing -municode option.
25058         (STARTFILE_SPEC): Likewise.
25059         * config/i386/t-mingw-w64: New.
25060         * config/i386/mingw-w64.opt: New.
25061         (municode): Add new target option.
25062         * doc/invoke.texi (municode): Add documentation for new option.
25063
25064 2009-04-21  Ian Lance Taylor  <iant@google.com>
25065
25066         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
25067         Correct test for number of arguments.
25068         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
25069
25070 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
25071
25072         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
25073         argument of emit_library_call.
25074
25075 2009-04-21  Richard Guenther  <rguenther@suse.de>
25076
25077         PR middle-end/39829
25078         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
25079         inside VIEW_CONVERT_EXPRs.
25080
25081 2009-04-21  Martin Jambor  <mjambor@suse.cz>
25082
25083         * tree-switch-conversion.c (build_constructors): Split a long line.
25084         (constructor_contains_same_values_p): New function.
25085         (build_one_array): Create assigns of constants if possible, do not
25086         call mark_sym_for_renaming, call update_stmt.
25087         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
25088         make_rename_temp.  Do not call mark_symbols_for_renaming, call
25089         update_stmt.
25090         (gen_def_assigns): Do not call mark_symbols_for_renaming or
25091         find_new_referenced_vars, call update_stmt.
25092         (gen_inbound_check): Use create_tmp_var and create ssa names manually
25093         instead of calling make_rename_temp.  Do not call
25094         find_new_referenced_vars or mark_symbols_for_renaming, call
25095         update_stmt.
25096
25097 2009-04-21  Richard Guenther  <rguenther@suse.de>
25098
25099         PR tree-optimization/39827
25100         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
25101         (tree_ssa_phiprop): Pass the correct array size.
25102
25103 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
25104
25105         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
25106
25107 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
25108
25109         PR 16202
25110         * c-typeck.c (lvalue_p): Move declaration ...
25111         * c-common.h (lvalue_p): ... to here.
25112         * c-common.c (candidate_equal_p): New.
25113         (add_tlist): Use it.
25114         (merge_tlist): Use it.
25115         (warn_for_collisions_1): Likewise.
25116         (warning_candidate_p): Accept more candidates.
25117         (verify_tree): A warning candidate can be an expression. Use
25118         candidate_equal_p.
25119
25120 2009-04-21  Ben Elliston  <bje@au.ibm.com>
25121
25122         PR target/5267
25123         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
25124         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
25125         options.  Remove -mcall-solaris documentation.
25126
25127 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25128
25129         PR c++/13358
25130         * doc/invoke.texi (-Wlong-long): Update description.
25131         * c-lex (interpret_integer): Only warn if there was no previous
25132         overflow and -Wlong-long is enabled.
25133         * c-decl.c (declspecs_add_type): Drop redundant flags.
25134         * c.opt (Wlong-long): Init to -1.
25135         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
25136         and front-end warn_long_long. Wlong-long only depends on other
25137         flags if it is uninitialized.
25138         * c-parser.c (disable_extension_diagnostics): warn_long_long is
25139         the same for CPP and FE.
25140         (restore_extension_diagnostics): Likewise.
25141
25142 2009-04-20  Ian Lance Taylor  <iant@google.com>
25143
25144         Fix enum conversions which are invalid in C++:
25145         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
25146         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
25147         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
25148         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
25149         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
25150         (dbxout_parms): Likewise.
25151         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
25152         (df_clear_flags): Likewise.
25153         * df-problems.c (df_rd_bb_local_compute_process_def): Change
25154         top_flag parameter to int.
25155         (df_chain_create_bb_process_use): Likewise.
25156         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
25157         Remove cast.
25158         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
25159         (df_ref_create_structure, df_def_record_1): Likewise.
25160         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
25161         (df_notes_rescan): Change 0 to VOIDmode in function call.
25162         (df_get_call_refs, df_insn_refs_collect): Likewise.
25163         (df_bb_regs_collect): Likewise.
25164         (df_entry_block_defs_collect): Likewise.
25165         (df_exit_block_uses_collect): Likewise.
25166         * df.h: Update declarations.
25167         * double-int.c (double_int_divmod): Add cast to enum type.
25168         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
25169         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
25170         (based_loc_descr): Likewise.
25171         (loc_descriptor_from_tree_1): Change first_op and second_op to
25172         enum dwarf_location_atom.  Add cast to enum type.
25173         * expmed.c (init_expmed): Change 0 to SET in function call.
25174         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
25175         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
25176         (do_store_flag): Likewise.
25177         * fixed-value.h (struct fixed_value): Change mode to enum
25178         machine_mode.
25179         * function.c (assign_parms): Change 0 to VOIDmode in function call.
25180         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
25181         function call.
25182         (insert_insn_decl, insert_decl, insert_state): Likewise.
25183         (automata_list_finish): Likewise.
25184         * genrecog.c (process_define_predicate): Add cast to enum type.
25185         * gensupport.c (init_predicate_table): Add cast to enum type.
25186         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
25187         function call.
25188         (gimple_build_call_1, gimple_build_label): Likewise.
25189         (gimple_build_goto, gimple_build_asm_1): Likewise.
25190         (gimple_build_switch_1, gimple_build_cdt): Likewise.
25191         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
25192         (enum fallback): Rename from enum fallback_t.
25193         (fallback_t): Typedef as int.
25194         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
25195         GSI_SAME_STMT in function call.
25196         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
25197         enum type.
25198         (setup_reg_class_relations): Likewise.
25199         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
25200         (setup_prohibited_class_mode_regs): Add cast to enum type.
25201         (setup_prohibited_mode_move_regs): Likewise.
25202         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
25203         (record_address_regs): Change i to enum reg_class.
25204         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
25205         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
25206         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
25207         (GET_MODE_2XWIDER_MODE): Likewise.
25208         (GET_CLASS_NARROWEST_MODE): Likewise.
25209         * omp-low.c (expand_omp_for): Add cast to enum type.
25210         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
25211         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
25212         * postreload.c (reload_cse_simplify_operands): Change rclass local
25213         to enum reg_class.
25214         * predict.c (combine_predictions_for_insn): Change best_predictor
25215         and predictor to enum br_predictor.
25216         (combine_predictions_for_bb): Likewise.
25217         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
25218         use SET_PREDICT_EXPR_OUTCOME.
25219         * real.c (real_arithmetic): Change icode to code in function call.
25220         * reginfo.c (init_move_cost): Add casts to enum type.
25221         (init_reg_sets_1, init_fake_stack_mems): Likewise.
25222         * regmove.c (regclass_compatible_p): Change class0 and class1 to
25223         enum reg_class.
25224         * reload.c (find_valid_class): Add casts to enum type.
25225         (push_reload): Change 0 to NO_REGS in function call.
25226         (find_reloads): Change this_alternative to array of enum
25227         reg_class.  Remove some now-unnecessary casts.
25228         (make_memloc): Change 0 to VOIDmode in function call.
25229         * reload1.c (reload): Change 0 to VOIDmode in function call.
25230         (eliminate_regs_1, elimination_effects): Likewise.
25231         (eliminate_regs_in_insn): Likewise.
25232         (emit_input_reload_insns): Add cast to enum type.
25233         (delete_output_reload): Change 0 to VOIDmode in function call.
25234         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
25235         to enum type in function call.
25236         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
25237         (SET_PREDICT_EXPR_OUTCOME): Define.
25238         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
25239         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
25240         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
25241         (dump_function): Likewise.
25242         * tree-dump.h: Update declarations.
25243         * tree-pass.h: Update declarations.
25244         * varasm.c (assemble_integer): Change mclass to enum mode_class.
25245         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
25246         enum type.
25247         (arm_rtx_costs_1): Correct parenthesization.
25248         (arm_rtx_costs): Add casts to enum type.
25249         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
25250         (vfp_emit_fstmd): Use add_rg_note.
25251         (emit_multi_reg_push, emit_sfm): Likewise.
25252         (thumb_set_frame_pointer): Likewise.
25253         (arm_expand_prologue): Likewise.
25254         (arm_regno_class): Change return type to enum reg_class.
25255         (thumb1_expand_prologue): Use add_reg_note.
25256         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
25257         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
25258         in function call.
25259         * config/arm/gentune.sh: Add cast to enum type.
25260         * config/arm/arm-tune.md: Rebuild.
25261         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
25262         (ix86_split_fp_branch, predict_jump): Likewise.
25263         (ix86_expand_multi_arg_builtin): Change sub_code from enum
25264         insn_code to enum rtx_code.
25265         (ix86_builtin_vectorized_function): Add cast to enum type.
25266         * config/i386/i386.md (truncdfsf2): Change slot to enum
25267         ix86_stack_slot.
25268         (truncxf<mode>2, isinf<mode>2): Likewise.
25269         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
25270         enum type.
25271         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
25272         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
25273         (insert_bundle_state): Change 1 to INSERT in function call.
25274         (ia64_add_bundle_selector_before): Likewise.
25275         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
25276         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
25277         (restore_stack_nonlocal): Likewise.
25278         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
25279         function call.
25280         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
25281         function call.
25282         (mips_rtx_costs): Likewise.
25283         (mips_override_options): Add casts to enum type.
25284         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
25285         in function call.
25286         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
25287         (store_reg, set_reg_plus_d): Likewise.
25288         (hppa_expand_prologue, hppa_profile_hook): Likewise.
25289         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
25290         cast to enum type.
25291         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
25292         function call.
25293         (emit_unlikely_jump): Use add_reg_note.
25294         (rs6000_emit_allocate_stack): Likewise.
25295         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
25296         (output_toc): Change 1 to INSERT in function call.
25297         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
25298         (rs6000_initialize_trampoline): Likewise.
25299         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
25300         function call.
25301         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
25302         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
25303         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
25304         (save_gprs): Use add_reg_note.
25305         (s390_emit_prologue): Likewise.
25306         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25307         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
25308         (sparc_fold_builtin): Add cast to enum type.
25309         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
25310         enum insn_code.
25311         (spu_expand_prologue): Use add_reg_note.
25312         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
25313
25314 2009-04-20  Ian Lance Taylor  <iant@google.com>
25315
25316         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
25317         (c_parser_postfix_expression_after_primary): Get VEC for list of
25318         arguments.  Get original types of arguments.  Call
25319         build_function_call_vec.
25320         (cached_expr_list_1, cached_expr_list_2): New static variables.
25321         (c_parser_expr_list): Change return type to VEC *.  Add
25322         p_orig_types parameter.  Change all callers.
25323         (c_parser_release_expr): New static function.
25324         (c_parser_vec_to_tree_list): New static function.
25325         * c-typeck.c (build_function_call): Rewrite to build a VEC and
25326         call build_function_call_vec.
25327         (build_function_call_vec): New function, based on old
25328         build_function_call.
25329         (convert_arguments): Remove nargs and argarray parameters.  Change
25330         values to a VEC.  Add origtypes parameter.
25331         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
25332         (convert_for_assignment): Add origtype parameter.  Change all
25333         callers.  If warn_cxx_compat, check for conversion to an enum
25334         type when calling a function.
25335         (store_init_value): Add origtype parameter.  Change all callers.
25336         (digest_init): Likewise.
25337         (struct init_node): Add origtype field.
25338         (add_pending_init): Add origtype parameter.  Change all callers.
25339         (output_init_element): Likewise.
25340         (output_pending_init_elements): Pass origtype from init_node to
25341         output_init_element.
25342         (process_init_element): Pass origtype from c_expr to
25343         output_init_element.
25344         (c_finish_return): Add origtype parameter.  Change all callers.
25345         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
25346         caller.
25347         (sync_resolve_params): Likewise.
25348         (sync_resolve_return): Change params to first_param.  Change caller.
25349         (resolve_overloaded_builtins): Change params to VEC *.  Change
25350         callers.  Save first parameter around call to build_function_call_vec.
25351         * c-decl.c (finish_decl): Add origtype parameter.  Change all
25352         callers.  Call build_function_call_vec rather than
25353         build_function_call for cleanup.
25354         * c-tree.h: Update declarations.
25355         * c-common.h: Update declarations.
25356         * stub-objc.c (objc_rewrite_function_call): Change parameter from
25357         params to first_param.
25358         * target.h (struct gcc_target): Change resolve_overloaded_builtin
25359         params parameter from tree to void *.
25360         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
25361         Change arglist parameter to have type void *, and to be a pointer
25362         to a VEC.
25363         * config/rs6000/rs6000-protos.h
25364         (altivec_resolve_overloaded_builtin): Update declaration.
25365         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
25366         fnargs parameter to have type void *, and to be a pointer to a
25367         VEC.  Call build_function_call_vec instead of
25368         build_function_call.
25369         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
25370
25371 2009-04-20  Joey Ye  <joey.ye@intel.com>
25372             Xuepeng Guo  <xuepeng.guo@intel.com>
25373             H.J. Lu  <hongjiu.lu@intel.com>
25374
25375         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
25376
25377         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
25378         (IX86_LEA_PRIORITY): Likewise.
25379         (distance_non_agu_define): New function.
25380         (distance_agu_use): Likewise.
25381         (ix86_lea_for_add_ok): Likewise.
25382         (ix86_dep_by_shift_count): Likewise.
25383
25384         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
25385         should split for LEA.
25386
25387         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
25388         function.
25389         (ix86_dep_by_shift_count): Likewise.
25390
25391 2009-04-20  Richard Guenther  <rguenther@suse.de>
25392
25393         * expr.c (handled_component_p): Move ...
25394         * tree.h (handled_component_p): ... here.
25395         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
25396         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
25397         and REALPART_EXPR to be in one group.
25398
25399 2009-04-20  Richard Guenther  <rguenther@suse.de>
25400
25401         * basic-block.h (get_all_dominated_blocks): Declare.
25402         * dominance.c (get_all_dominated_blocks): New function.
25403         * tree-cfg.c (get_all_dominated_blocks): Remove.
25404         (remove_edge_and_dominated_blocks): Adjust.
25405         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
25406         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
25407         instead of recursing.
25408
25409 2009-04-20  Doug Kwan  <dougkwan@google.com>
25410
25411         * cgraph.h (cgraph_node_ptr): New type for vector functions.
25412         (struct cgraph_node_set_def): New type.
25413         (cgraph_node_set) New type. Also declare vector functions.
25414         (struct cgraph_node_set_element_def): New type.
25415         (cgraph_node_set_element): Ditto.
25416         (cgraph_node_set_iterator): New iterator type.
25417         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
25418         cgraph_node_set_remove, dump_cgraph_node_set,
25419         debug_cgraph_node_set): New prototypes.
25420         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
25421         cgraph_node_set_size): New inlines.
25422         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
25423         including cgraph.h.
25424         (struct ipa_opt_pass): Add struct cgraph_node_set_def
25425         argument to function 'write_summary'.
25426         * ipa.c: Include ggc.h.
25427         (hash_cgraph_node_set_element,
25428         eq_cgraph_node_set_element, cgraph_node_set_new,
25429         cgraph_node_set_add, cgraph_node_set_remove,
25430         cgraph_node_set_find, dump_cgraph_node_set,
25431         debug_cgraph_node_set): New functions.
25432         * Makefile.in (ipa.o): Add dependency on GGC_H.
25433
25434 2009-04-20  Ira Rosen  <irar@il.ibm.com>
25435
25436         PR tree-optimization/39675
25437         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
25438         check of the return code of vect_schedule_slp. Check that
25439         stmt_vec_info still exists for the statement, before checking its
25440         vectorization type.
25441
25442 2009-04-20  Michael Matz  <matz@suse.de>
25443
25444         * Makefile.in (generated_files): Take out $(simple_generated_c).
25445
25446 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
25447
25448         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
25449         (UINTPTR_TYPE):  Likewise.
25450
25451 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
25452
25453         PR c/37481
25454         * c-typeck.c (digest_init): Check for initializing an array with a
25455         string literal.
25456
25457 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
25458
25459         PR c/19771
25460         * c-semantics.c (pop_stmt_list): Propagate
25461         STATEMENT_LIST_HAS_LABEL to parent statement list.
25462
25463 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
25464
25465         * config/mips/mips.h (mips_tune_attr): New macro.
25466         * config/mips/mips.md (cpu): Use it.
25467
25468 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
25469
25470         PR c/38243
25471         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
25472         declaring a tag.
25473
25474 2009-04-19  Diego Novillo  <dnovillo@google.com>
25475
25476         * toplev.c (compile_file): Move call to coverage_finish ...
25477         * cgraphunit.c (ipa_passes): ... here.
25478         Call cgraph_process_new_functions.
25479         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
25480         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
25481
25482 2009-04-19  Jan Hubicka  <jh@suse.cz>
25483
25484         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
25485         cfun.
25486         (dump_cgraph_node): Dump can throw external flag.
25487         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
25488
25489 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
25490
25491         PR c/32061
25492         PR c++/36954
25493         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
25494         * common.opt (Wlogical-op): Move from here...
25495         * c.opt (Wlogical-op): ... to here.
25496         * c-typeck.c (parser_build_binary_op): Update call to
25497         warn_logical_operator.
25498         * c-opts.c (c_common_post_options): Enable warn_logical_op with
25499         extra_warnings.
25500         * c-common.c (warn_logical_op): Update.
25501         * c-common.h (warn_logical_op): Update declaration.
25502
25503 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
25504
25505         * tree.c (protected_set_expr_location): Fix formatting.
25506
25507 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
25508
25509         PR c/27676
25510         * c-typeck.c (readonly_warning): new.
25511         (build_unary_op, build_modify_expr): Use readonly_warning for
25512         storing into something readonly but not const-qualified.
25513
25514 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
25515
25516         PR c/22367
25517         * c-typeck.c (build_unary_op): Check for taking address of
25518         expression of type void.
25519
25520 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
25521
25522         PR c/35210
25523         * c-typeck.c (build_function_call): Check for calling a function
25524         with qualified void return types.  Call require_complete_type when
25525         generating a trap.
25526
25527 2009-04-18  Jan Hubicka  <jh@suse.cz>
25528
25529         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
25530         Set nothrow flag.
25531         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
25532         can_throw_external flag.
25533         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
25534         * ipa-pure-const.c (ignore_edge): New function.
25535         (propagate): Compute order for NOTHROW computation; set NOTHROWs
25536         only over can_throw_external edges.
25537         (local_pure_const): Add nothrow flag.
25538         * ipa-utils.c (searchc): Add ignore_edge callback.
25539         (ipa_utils_reduced_inorder): Add ignore_edge callback.
25540         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
25541         (set_nothrow_function_flags): Update cgraph.
25542         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
25543
25544 2009-04-18  Richard Guenther  <rguenther@suse.de>
25545
25546         PR middle-end/39804
25547         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
25548         (fold_stmt): ... this and ...
25549         (fold_stmt_inplace): ... this.
25550         (fold_stmt_1): Fold references in calls and asms.
25551         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
25552
25553 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25554
25555         * tree-vrp.c (ssa_name_nonzero_p): Remove.
25556         * tree.h: Remove the prototype for ssa_name_nonzero_p.
25557
25558 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25559
25560         * tree.c (function_args_count): Remove.
25561         * tree.h: Remove the prototype for function_args_count.
25562
25563 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25564
25565         * tree-iterator.c (expr_only): Remove.
25566         * tree.h: Remove the prototype for expr_only.
25567
25568 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25569
25570         * reginfo.c (cannot_change_mode_set_regs): Remove.
25571         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
25572
25573 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
25574
25575         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
25576         whether operands 0 and 1 overlaps.
25577
25578 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
25579
25580         PR middle-end/36902
25581         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
25582         pointer. Use warning_at instead of warning.
25583         (search_for_addr_array): Likewise.
25584         (check_array_bounds): Likewise.
25585         (check_all_array_refs): Check that the incoming edge is not in the
25586         list of edges to be removed.
25587         (check_all_array_refs): Avoid the temporal pointer.
25588         (vrp_visit_cond_stmt): Fix typo.
25589         (simplify_switch_using_ranges): Handle the case where the switch
25590         index is an integer constant.
25591
25592 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
25593
25594         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
25595
25596 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25597
25598         * doc/extend.texi, doc/invoke.texi: Fix typos.
25599
25600 2009-04-17  Cary Coutant  <ccoutant@google.com>
25601
25602         * tree-flow-inline.h (get_lineno): Fix inverted test.
25603
25604 2009-04-17  Diego Novillo  <dnovillo@google.com>
25605
25606         * tree-ssa-pre.c (create_expression_by_pieces): Remove
25607         assertion for AVAIL_OUT.
25608
25609 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
25610
25611         PR target/38627
25612         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
25613         * config/sh/linux-atomic.asm: Likewise.
25614
25615 2009-04-17  Diego Novillo  <dnovillo@google.com>
25616
25617         * except.c (debug_eh_tree): New.
25618         (struct eh_region, struct eh_status): Move ...
25619         * except.h: ... here.
25620         (add_type_for_runtime): Declare extern.
25621         (lookup_type_for_runtime): Likewise.
25622         (debug_eh_tree): Declare.
25623         * Makefile.in (GTFILES): List except.h before except.c
25624
25625 2009-04-17  Diego Novillo  <dnovillo@google.com>
25626
25627         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
25628         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
25629         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
25630         (find_vars_r): ... here.
25631         * tree-flow.h (find_referenced_vars_in): Declare.
25632         * tree-ssa-pre.c (create_expression_by_pieces): Assert
25633         that AVAIL_OUT exists for BLOCK.
25634         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
25635         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
25636         (tree-parloops.o): Likewise.
25637
25638 2009-04-17  Simon Baldwin  <simonb@google.com>
25639
25640         * toplev.c (default_tree_printer): Add handling for %E format.
25641
25642 2009-04-17  Diego Novillo  <dnovillo@google.com>
25643
25644         * tree-pretty-print.c (dump_generic_node): Add break after
25645         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
25646         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
25647         FUNCTION_TYPE together.  Call print_struct_decl when printing
25648         structures and TDF_SLIM is not given.
25649         (print_struct_decl): Fix logic for detecting recursion.
25650
25651 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
25652
25653         PR 31567
25654         * gcc.c (create_at_file): New.
25655         (compile_input_file_p): New.
25656         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
25657         * main.c (main): Update call to toplev_main.
25658         * toplev.c (toplev_main): Change signature. Call expandargv.
25659         * toplev.h (toplev_main): Change signature.
25660
25661 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
25662
25663         * dwarf2out.c (field_byte_offset): Use the type size as the field size
25664         if the latter is not constant.
25665
25666 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
25667
25668         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
25669
25670 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
25671
25672         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
25673         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
25674
25675 2009-04-17  Richard Guenther  <rguenther@suse.de>
25676
25677         * tree-ssa-structalias.c (get_constraint_for_component_ref):
25678         Handle component references view-converting an invariant address.
25679
25680 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
25681
25682         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
25683         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
25684         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
25685         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
25686         Use @deftypevr rather than @deftypevar.
25687
25688 2009-04-17  Richard Guenther  <rguenther@suse.de>
25689
25690         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
25691         (get_prop_source_stmt): Likewise.
25692         (can_propagate_from): Likewise.
25693
25694 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
25695
25696         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
25697         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
25698         (--with-multilib-list): Add default value.
25699         * configure: Regenerate.
25700         * Makefile.in (TM_ENDIAN_CONFIG): Define.
25701         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
25702         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
25703         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
25704         Don't add default cpu to multilib list unnecessarily, but do enable
25705         the relevant compiler option..
25706         Add support for --with-multilib-list=<blank> and
25707         --with-multilib-list=!<somelib> to supress unwanted multilibs.
25708         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
25709         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
25710         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
25711         TM_MULTILIB_CONFIG.
25712         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
25713         (MULTILIB_OSDIRNAMES): New variable.
25714         * config/sh/t-1e: Delete file.
25715         * config/sh/t-mlib-sh1: Delete file.
25716         * config/sh/t-mlib-sh2: Delete file.
25717         * config/sh/t-mlib-sh2a: Delete file.
25718         * config/sh/t-mlib-sh2a-nofpu: Delete file.
25719         * config/sh/t-mlib-sh2a-single: Delete file.
25720         * config/sh/t-mlib-sh2a-single-only: Delete file.
25721         * config/sh/t-mlib-sh2e: Delete file.
25722         * config/sh/t-mlib-sh3e: Delete file.
25723         * config/sh/t-mlib-sh4: Delete file.
25724         * config/sh/t-mlib-sh4-nofpu: Delete file.
25725         * config/sh/t-mlib-sh4-single: Delete file.
25726         * config/sh/t-mlib-sh4-single-only: Delete file.
25727         * config/sh/t-mlib-sh4a: Delete file.
25728         * config/sh/t-mlib-sh4a-nofpu: Delete file.
25729         * config/sh/t-mlib-sh4a-single: Delete file.
25730         * config/sh/t-mlib-sh4a-single-only: Delete file.
25731         * config/sh/t-mlib-sh4al: Delete file.
25732         * config/sh/t-mlib-sh5-32media: Delete file.
25733         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
25734         * config/sh/t-mlib-sh5-64media: Delete file.
25735         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
25736         * config/sh/t-mlib-sh5-compact: Delete file.
25737         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
25738         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
25739         * doc/install.texi (Options specification): Add
25740         --with-multilib-list and --with-endian.
25741
25742 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
25743
25744         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
25745         REVISION_c.
25746         (OBJS-common): Add plugin-version.o.
25747         (plugin-version.o): New.
25748         * gcc-plugin.h (plugin_gcc_version): New.
25749         (plugin_default_version_check): New.
25750         (plugin_init_func, plugin_init): Add version argument.
25751         * plugin-version.c: New.
25752         * plugin.c (str_plugin_gcc_version_name): New.
25753         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
25754         pass it to the init function.
25755         (plugin_default_version_check): New.
25756
25757 2009-04-17  Richard Guenther  <rguenther@suse.de>
25758
25759         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
25760         for decl-vs-decl disambiguation.
25761
25762 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
25763
25764         * config/s390/s390.h (s390_tune_attr): New macro definition.
25765         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
25766
25767 2009-04-17  Richard Guenther  <rguenther@suse.de>
25768
25769         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
25770         (fold_stmt_r): Likewise.
25771         (maybe_fold_reference): New function.
25772         (fold_gimple_assign): Handle cases fold_stmt_r did.
25773         (fold_stmt): Do not use fold_stmt_r.
25774         (fold_stmt_inplace): Likewise.
25775
25776 2009-04-17  Richard Guenther  <rguenther@suse.de>
25777
25778         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
25779         (record_equivalences_from_stmt): Remove useless checks and
25780         simplifications.
25781         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
25782         the type is already suitable.
25783
25784 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
25785
25786         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
25787
25788 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
25789
25790         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
25791         (CMPtype): Define as __gcc_CMPtype.
25792
25793 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
25794
25795         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
25796         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
25797
25798 2009-04-17  Richard Guenther  <rguenther@suse.de>
25799
25800         PR tree-optimization/39746
25801         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
25802         special-casing for builtins and static variable use/def.
25803         (call_may_clobber_ref_p_1): Likewise.
25804
25805 2009-04-16  Ian Lance Taylor  <iant@google.com>
25806
25807         * df.h: Include "timevar.h".
25808         (struct df_problem): Change tv_id field to timevar_id_t.
25809         * tree-pass.h: Include "timevar.h".
25810         (struct opt_pass): Change tv_id field to timevar_id_t.
25811         * timevar.h (timevar_id_t): Define TV_NONE.
25812         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
25813         TV_NONE rather than tv_id != 0.
25814         (execute_one_pass): Likewise.
25815         * Makefile.in (DF_H): Add $(TIMEVAR_H).
25816         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
25817         dependencies to $(TREE_PASS_H).
25818         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
25819         to TV_NONE.
25820         (pass_branch_target_load_optimize2): Likewise.
25821         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
25822         (pass_outof_cfg_layout_mode): Likewise.
25823         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
25824         (pass_rebuild_cgraph_edges): Likewise.
25825         (pass_remove_cgraph_callee_edges): Likewise.
25826         * df-core.c (pass_df_initialize_opt): Likewise.
25827         (pass_df_initialize_no_opt): Likewise.
25828         (pass_df_finish): Likewise.
25829         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
25830         * except.c (pass_set_nothrow_function_flags): Likewise.
25831         (pass_convert_to_eh_region_ranges): Likewise.
25832         * final.c (pass_compute_alignments): Likewise.
25833         * function.c (pass_instantiate_virtual_regs): Likewise.
25834         (pass_init_function): Likewise.
25835         (pass_leaf_regs): Likewise.
25836         (pass_match_asm_constraints): Likewise.
25837         * gimple-low.c (pass_lower_cf): Likewise.
25838         (pass_mark_used_blocks): Likewise.
25839         * init-regs.c (pass_initialize_regs): Likewise.
25840         * integrate.c (pass_initial_value_sets): Likewise.
25841         * ira.c (pass_ira): Likewise.
25842         * jump.c (pass_cleanup_barriers): Likewise.
25843         * omp-low.c (pass_expand_omp): Likewise.
25844         (pass_lower_omp): Likewise.
25845         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
25846         * recog.c (pass_split_all_insns): Likewise.
25847         (pass_split_after_reload): Likewise.
25848         (pass_split_before_regstack): Likewise.
25849         (pass_split_before_sched2): Likewise.
25850         (pass_split_for_shorten_branches): Likewise.
25851         * reginfo.c (pass_reginfo_init): Likewise.
25852         (pass_subregs_of_mode_init): Likewise.
25853         (pass_subregs_of_mode_finish): Likewise.
25854         * passes.c (pass_postreload): Likewise.
25855         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
25856         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
25857         (pass_warn_function_return): Likewise.
25858         (pass_warn_function_noreturn): Likewise.
25859         * tree-complex.c (pass_lower_complex): Likewise.
25860         (pass_lower_complex_O0): Likewise.
25861         * tree-if-conv.c (pass_if_conversion): Likewise.
25862         * tree-into-ssa.c (pass_build_ssa): Likewise.
25863         * tree-mudflap.c (pass_mudflap_1): Likewise.
25864         (pass_mudflap_2): Likewise.
25865         * tree-nomudflap.c (pass_mudflap_1): Likewise.
25866         (pass_mudflap_2): Likewise.
25867         * tree-nrv.c (pass_return_slot): Likewise.
25868         * tree-object-size.c (pass_object_sizes): Likewise.
25869         * tree-optimize.c (pass_all_optimizations): Likewise.
25870         (pass_early_local_passes): Likewise.
25871         (pass_all_early_optimizations): Likewise.
25872         (pass_cleanup_cfg): Likewise.
25873         (pass_cleanup_cfg_post_optimizing): Likewise.
25874         (pass_free_datastructures): Likewise.
25875         (pass_free_cfg_annotations): Likewise.
25876         (pass_fixup_cfg): Likewise.
25877         (pass_init_datastructures): Likewise.
25878         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
25879         (pass_late_warn_uninitialized): Likewise.
25880         (pass_update_address_taken): Likewise.
25881         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
25882         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
25883         (pass_cse_sincos): Likewise.
25884         (pass_convert_to_rsqrt): Likewise.
25885         * tree-ssa-structalias.c (pass_build_alias): Likewise.
25886         * tree-stdarg.c (pass_stdarg): Likewise.
25887         * tree-tailcall.c (pass_tail_recursion): Likewise.
25888         (pass_tail_calls): Likewise.
25889         * tree-vect-generic.c (pass_lower_vector): Likewise.
25890         (pass_lower_vector_ssa): Likewise.
25891         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
25892
25893 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
25894
25895         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
25896         XLR entry.
25897         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
25898         Handle -march=xlr.
25899         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
25900         logical and signext.
25901
25902 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
25903
25904         PR target/39767
25905         * config/sh/predicates.md (arith_operand): Check if the operand
25906         of TRUNCATE is a REG.
25907
25908 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25909
25910         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
25911         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
25912
25913 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25914
25915         * tree-iterator.c (tsi_split_statement_list_after,
25916         tsi_split_statement_list_before): Remove.
25917         * tree-iterator.h: Remove the prototypes for
25918         tsi_split_statement_list_after and tsi_split_statement_list_before.
25919
25920 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25921
25922         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
25923         * tree-ssa-propagate.h: Remove the prototype for
25924         stmt_makes_single_load.
25925
25926 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25927
25928         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
25929         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
25930
25931 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25932
25933         * tree-iterator.c (EXPR_LAST_BODY): Remove.
25934
25935 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25936
25937         * except.c (eh_region_outer_p): Remove.
25938         * except.h: Remove the prototype for eh_region_outer_p.
25939
25940 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25941
25942         * function.c (current_function_assembler_name): Remove.
25943         * function.h: Remove the prototype for
25944         current_function_assembler_name.
25945
25946 2009-04-16  Ian Lance Taylor  <iant@google.com>
25947
25948         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
25949         (add_reg_note): Call alloc_reg_note.
25950         * rtl.h (alloc_reg_note): Declare.
25951         * combine.c (try_combine): Use alloc_reg_note.
25952         (recog_for_combine, move_deaths): Likewise.
25953         (distribute_notes): Use alloc_reg_note and add_reg_note.
25954         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
25955         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
25956         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
25957
25958 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
25959
25960         PR rtl-optimization/39762
25961         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
25962         ira_may_move_out_cost): Add comments about way of their usage.
25963         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
25964
25965         * ira-conflicts.c (process_regs_for_copy): Use function
25966         ira_get_register_move_cost instead of global
25967         ira_register_move_cost.
25968
25969         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
25970         color_pass, move_spill_restore, update_curr_costs): Ditto.
25971
25972         * ira-lives.c (process_single_reg_class_operands): Ditto.
25973
25974         * ira-emit.c (emit_move_list): Ditto.
25975
25976         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
25977         (record_reg_classes): Ditto.  Use functions
25978         ira_get_register_move_cost and ira_get_may_move_cost instead of
25979         global vars ira_register_move_cost, ira_may_move_out_cost and
25980         ira_may_move_in_cost.
25981         (record_address_regs): Don't call ira_init_register_move_cost.
25982         Use function ira_get_may_move_cost instead of global
25983         ira_may_move_in_cost.
25984         (process_bb_node_for_hard_reg_moves): Use function
25985         ira_get_register_move_cost instead of global ira_register_move_cost.
25986         (ira_costs): Don't call ira_init_register_move_cost.
25987
25988 2009-04-16  Richard Guenther  <rguenther@suse.de>
25989
25990         * tree-cfg.c (verify_gimple_assign_binary):
25991         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
25992         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
25993         (create_general_new_stmt): Note that this function is broken.
25994
25995 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
25996
25997         * common.opt (fhelp): Add Var(help_flag).
25998         * gcc-plugin.h (plugin_info): Add help.
25999         * plugin.c (plugin_name_args): Add help.
26000         (register_plugin_info): Set plugin->help.
26001         (print_help_one_plugin): New.
26002         (print_plugins_help): New.
26003         * plugin.h (print_plugins_help): New.
26004         * toplev.c (toplev_main): Call print_plugins_help if needed.
26005
26006 2009-04-16  Richard Guenther  <rguenther@suse.de>
26007
26008         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
26009         (gimple_ior_addresses_taken_1): New function.
26010         (gimple_ior_addresses_taken): Likewise.
26011         * gimple.h (struct gimple_statement_with_ops_base): Remove
26012         addresses_taken member.
26013         (gimple_ior_addresses_taken): Declare.
26014         (gimple_addresses_taken, gimple_addresses_taken_ptr,
26015         gimple_set_addresses_taken): Remove.
26016         * ipa-reference.c (mark_address): New function.
26017         (scan_stmt_for_static_refs): Use it for marking addresses taken.
26018         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
26019         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
26020         (gimple_add_to_addresses_taken): Remove.
26021         (get_tmr_operands): Call mark_address_taken.
26022         (get_asm_expr_operands): Likewise.
26023         (get_expr_operands): Likewise.
26024         (build_ssa_operands): Do not clear the addresses_taken bitmap.
26025         (free_stmt_operands): Do not free it.
26026         * tree-ssa.c (delete_tree_ssa): Likewise.
26027         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
26028
26029 2009-04-16  Richard Guenther  <rguenther@suse.de>
26030
26031         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
26032         (walk_stmt_load_store_ops): Likewise.
26033         * gimple.c (get_base_loadstore): New function.
26034         (walk_stmt_load_store_addr_ops): Likewise.
26035         (walk_stmt_load_store_ops): Likewise.
26036         * ipa-pure-const.c (check_op): Simplify.
26037         (check_load, check_store): New functions.
26038         (check_stmt): Use walk_stmt_load_store_ops.
26039         * ipa-reference.c (mark_load): Adjust signature.
26040         (mark_store): Likewise.
26041         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
26042
26043 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26044
26045         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
26046         (plugin_info): New.
26047         * opts.c (common_handle_option): Don't call print_version.
26048         * plugin.c (plugin_name_args): Add version.
26049         (register_plugin_info): New.
26050         (register_callback): Handle PLUGIN_INFO.
26051         (try_init_one_plugin): New.
26052         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
26053         if failed to init.
26054         (finalize_one_plugin): New.
26055         (finalize_plugins): New.
26056         (print_one_plugin): New.
26057         (print_plugins_versions): New.
26058         * plugin.h (print_plugins_versions): New.
26059         (finalize_plugins): New.
26060         * toplev.c (compile_file): Don't call initialize_plugins.
26061         (print_version): Call print_plugins_versions.
26062         (toplev_main): Call initialize_plugins. Print version if needed.
26063         Call finalize_plugins.
26064
26065 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26066
26067         * common.opt (fversion): New.
26068         * gcc.c (print_version): New.
26069         (process_command): Don't print the version. Just set print_version.
26070         (main): Print version. Call subprocesses if print_version and
26071         verbose_flag are set.
26072         * opts.c (common_handle_option): Handle OPT_fversion.
26073
26074 2009-04-16  Richard Guenther  <rguenther@suse.de>
26075             Ira Rosen  <irar@il.ibm.com>
26076
26077         PR tree-optimization/39698
26078         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
26079         type of the reduction variable.  Only generate the def if
26080         it is needed.
26081
26082         * omp-low.c (expand_omp_for_generic): When converting to a pointer
26083         make sure to first convert to an integer of the same precision.
26084         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
26085         the type of the evolution correctly in computing the new
26086         induction variable base.
26087
26088 2009-04-16  Richard Guenther  <rguenther@suse.de>
26089
26090         PR middle-end/39625
26091         * tree-cfg.c (make_blocks): Split statements with to-be
26092         abnormal SSA names on the lhs.
26093
26094 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
26095
26096         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
26097         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
26098         * c-typeck.c (really_start_incremental_init): Likewise.
26099         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
26100         (TARGET_INITIALIZER): Remove it.
26101         * target.h (struct target): Remove vector_opaque_p.
26102         * tree.c (build_opaque_vector_type): New.
26103         * tree.h (TYPE_VECTOR_OPAQUE): New.
26104         (build_opaque_vector_type): Declare.
26105         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
26106         * config/rs6000/rs6000.c (build_opaque_vector_type,
26107         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
26108         (rs6000_init_builtins): Use build_opaque_vector_type for
26109         opaque_V4SI_type_node.
26110
26111 2009-04-15  Catherine Moore  <clm@codesourcery.com>
26112
26113         * debug.h (set_name):  Declare.
26114         * dwarf2out.c (dwarf2out_set_name): Declare.
26115         (dwarf2_debug_hooks): Add set_name.
26116         (find_AT_string): New.
26117         (add_AT_string): Call find_AT_string.
26118         (dwarf2out_set_name): New.
26119         * cp/decl.c (grokdeclarator): Call set_name.
26120         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
26121         * debug.c (do_nothing_debug_hooks):  Likewise.
26122         * dbxout.c (dbx_debug_hooks): Likewise.
26123         * sdbout.c (sdb_debug_hooks): Likewise.
26124
26125 2009-04-15  Michael Eager  <eager@eagercon.com>
26126
26127         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
26128         reg for single-precision FPU.
26129         * config/rs6000/rs6000.md (movsi_internal1): Only for
26130         !TARGET_SINGLE_FPU.
26131         (movsi_internal1_single): New. Add pattern to move SI values to/from
26132         single-precision FP regs.
26133
26134 2009-04-15  Richard Guenther  <rguenther@suse.de>
26135
26136         * omp-low.c (lower_rec_input_clauses): Build correct address
26137         expressions.
26138         (expand_omp_for_generic): Fix multiplication type.
26139         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
26140         (generate_memset_zero): Fix types.
26141         * tree-profile.c (prepare_instrumented_value): Correctly
26142         widen a pointer.
26143
26144 2009-04-15  Ian Lance Taylor  <iant@google.com>
26145
26146         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
26147         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
26148         for -Wall and for -Wc++-compat.
26149         (c_common_post_options): For C++, set warn_enum_compare if not
26150         already set.
26151         * c-tree.h (struct c_expr): Add field original_type.
26152         (build_external_ref): Update declaration.
26153         * c-parser.c (c_parser_braced_init): Set original_type.
26154         (c_parser_initelt): Likewise.
26155         (c_parser_expr_no_commas): Likewise.
26156         (c_parser_conditional_expression): Likewise.
26157         (c_parser_cast_expression): Likewise.
26158         (c_parser_unary_expression): Likewise.  Pull setting of
26159         original_code to top of function.
26160         (c_parser_sizeof_expression): Set original_type.
26161         (c_parser_alignof_expression): Likewise.
26162         (c_parser_postfix_expression): Likewise.  Pull setting of
26163         original_code to top of function.
26164         (c_parser_postfix_expression_after_paren_type): Set original_type.
26165         (c_parser_postfix_expression_after_primary): Likewise.
26166         (c_parser_expression): Likewise.
26167         * c-typeck.c (build_external_ref): Add type parameter.  Change all
26168         callers.
26169         (c_expr_sizeof_expr): Set original_type field.
26170         (parser_build_unary_op): Likewise.
26171         (parser_build_binary_op): Likewise.  Optionally warn about
26172         comparisons of enums of different types.
26173         (digest_init): Set original_type field.
26174         (really_start_incremental_init): Likewise.
26175         (push_init_level, pop_init_level): Likewise.
26176         * doc/invoke.texi (Warning Options): -Wenum-compare now
26177         supported in C.
26178
26179 2009-04-15  Richard Guenther  <rguenther@suse.de>
26180
26181         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
26182         out a necessary conversion.
26183         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
26184         names we didn't value number.
26185         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
26186
26187 2009-04-15  Richard Guenther  <rguenther@suse.de>
26188
26189         PR tree-optimization/39764
26190         * tree-ssa-ccp.c (get_value): Canonicalize value with
26191         canonicalize_float_value.
26192
26193 2009-04-15  Jan Hubicka  <jh@suse.cz>
26194
26195         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
26196         Wrong version of patch.
26197
26198 2009-04-15  Jan Hubicka  <jh@suse.cz>
26199
26200         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
26201
26202 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
26203
26204         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
26205         our distinct integral and vector types.
26206
26207 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
26208
26209         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
26210         * init.c (build_vtbl_address): Remove call to assemble_external.
26211
26212 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
26213
26214         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
26215         output for other floating point modes.
26216
26217 2009-04-14  Diego Novillo  <dnovillo@google.com>
26218
26219         * diagnostic.c (diagnostic_report_diagnostic): Do not
26220         warn about loaded plugins for DK_ERROR and DK_WARNING.
26221         * c-decl.c (declspecs_add_type): Move call to
26222         invoke_plugin_callbacks ...
26223         * c-parser.c (c_parser_declspecs): ... here.
26224         * plugin.c (dump_active_plugins): Tidy output.
26225
26226 2009-04-14  Diego Novillo  <dnovillo@google.com>
26227             Le-Chun Wu  <lcwu@google.com>
26228
26229         * configure.ac: Add --enable-plugin support.
26230         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
26231         * Makefile.in (PLUGIN_H): Define.
26232         Export ENABLE_PLUGIN and GMPINC to site.exp.
26233         Add PLUGINLIBS to link command.
26234         Add/modify dependencies for plugin.o and files including plugin.h.
26235         (plugin.o): New.
26236         * config.in: Regenerate.
26237
26238         * opts.c (common_handle_option): Handle OPT_fplugin_ and
26239         OPT_fplugin_arg_.
26240
26241 2009-04-14  Le-Chun Wu  <lcwu@google.com>
26242
26243         * tree-pass.h (register_one_dump_file): Add a prototype for
26244         register_one_dump_file.
26245         * toplev.c (compile_file): Call initialize_plugins.
26246         (do_compile): Call invoke_plugin_callbacks.
26247         (toplev_main): Call invoke_plugin_callbacks.
26248         * common.opt: Add -fplugin= and -fplugin-arg-.
26249         * gcc-plugin.h: New public header file for plugins to include.
26250         * plugin.c: New source file.
26251         * plugin.h: New internal header file.
26252         * passes.c (register_one_dump_file): Make it external.
26253
26254         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
26255
26256 2009-04-14  Diego Novillo  <dnovillo@google.com>
26257
26258         * doc/plugins.texi: New.
26259         * doc/gccint.texi: Add reference to Plugins chapter.
26260         * doc/invoke.texi: Document -fplugin and -fplugin-arg
26261         * diagnostic.c (diagnostic_report_diagnostic): Warn about
26262         loaded plugins, if any.
26263         * timevar.def (TV_PLUGIN_INIT): Define.
26264         (TV_PLUGIN_RUN): Define.
26265         * plugin.c: Include timevar.h
26266         (plugins_active_p): New.
26267         (dump_active_plugins): New.
26268         (debug_active_plugins): New.
26269
26270 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
26271
26272         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
26273         library paths.
26274         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
26275
26276 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
26277
26278         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
26279         the same as a minus without a shift.
26280
26281 2009-04-14  Nick Clifton  <nickc@redhat.com>
26282
26283         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
26284         comparisons with small integers will always produce a short
26285         branch.
26286
26287 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
26288
26289         Merge:
26290         2008-12-19  Diego Novillo  <dnovillo@google.com>
26291
26292         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
26293
26294 2009-04-14  Richard Guenther  <rguenther@suse.de>
26295
26296         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
26297         verification.
26298         (verify_gimple_assign_binary): Likewise.  Handle shifts and
26299         rotates correctly.
26300         (verify_gimple_phi): Print the mismatched argument position.
26301         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
26302         Fix types.
26303         (vect_update_init_of_dr): Likewise.
26304         * matrix-reorg.c (transform_access_sites): Do what the
26305         comment suggests.
26306         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
26307
26308 2009-04-13  Michael Eager  <eager@eagercon.com>
26309
26310         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
26311         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
26312         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
26313         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
26314         remove duplicate config
26315
26316 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
26317
26318         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
26319         file_name:line_number type locator of the call site.
26320
26321 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
26322
26323         * genautomata.c: Put blank after comma.
26324         (automaton_decls): New.
26325         (struct unit_usage): Add comments to member next.
26326         (store_alt_unit_usage): Keep the list ordered.
26327         (unit_present_on_list_p, equal_alternatives_p): New.
26328         (check_regexp_units_distribution): Check units distribution
26329         correctness correctly.
26330         (main): Don't write automata if error is found.  Return correct
26331         exit code.
26332
26333         * config/m68k/cf.md (cfv4_ds): Remove.
26334         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
26335         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
26336
26337         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
26338         power4-load-ext, power4-store, power4-store-update,
26339         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
26340         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
26341         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
26342         power4-sqrt, power4-isync): Modify reservation to make correct
26343         unit distribution to automata.
26344
26345         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
26346         power5-store-update, power5-two, power5-three, power5-lmul,
26347         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
26348
26349 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
26350
26351         * except.c (pass_set_nothrow_function_flags): Set name and add
26352         TODO_dump_func.
26353         (set_nothrow_function_flags): Mention in the dump file when
26354         changing a function to nothrow.
26355
26356 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
26357
26358         PR/39066
26359         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
26360         instead of unsigned long.
26361
26362 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
26363
26364         * config/arm/arm.c (return_used_this_function): Remove.
26365         (arm_output_function_prologue): Remove use of
26366         return_used_this_function.
26367         (output_return_instruction): Replace use of
26368         return_used_this_function
26369         by cfun->machine->return_used_this_function.
26370         (arm_output_epilogue): Likewise.
26371         (arm_output_function_epilogue): Likewise.
26372         (thumb_unexpanded_epilogue): Likewise.
26373         * config/arm/arm.h (struct machine_function):
26374         New member return_used_this_function.
26375
26376 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
26377
26378         * doc/install.texi: Correct description of default directory for
26379         --with-gxx-include-dir.
26380
26381 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
26382
26383         * fold-const.c (build_range_check): Properly deal with enumeral and
26384         boolean base types.
26385
26386 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
26387
26388         * doc/invoke.texi (max_gcse_passes): Remove documentation.
26389         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
26390         * params.h (MAX_GCSE_PASSES): Remove.
26391         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
26392         in sequence.  Remove ability to run multiple passes.
26393         (bypass_jumps): Report run as third CPROP pass.
26394
26395 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
26396
26397         PR middle-end/39651
26398         * except.c (can_throw_external): Look at each insn in a SEQUENCE
26399         when deciding whether the whole SEQUENCE can throw.
26400
26401 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
26402
26403         PR target/39740
26404         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
26405         offseted label references.
26406
26407 2009-04-11  Jan Hubicka  <jh@suse.cz>
26408
26409         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
26410
26411 2009-04-11  Richard Guenther  <rguenther@suse.de>
26412
26413         PR middle-end/39732
26414         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
26415         return variables as TREE_ADDRESSABLE.
26416
26417 2009-04-11  Richard Guenther  <rguenther@suse.de>
26418
26419         PR tree-optimization/39713
26420         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
26421         reference trees have SSA_NAME operands.
26422
26423 2009-04-11  Richard Guenther  <rguenther@suse.de>
26424
26425         PR c/39712
26426         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
26427         address expressions.
26428
26429 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
26430
26431         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
26432         match changes in Cygwin 1.7
26433         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
26434         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
26435
26436 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
26437
26438         PR tree-optimization/39701
26439         * doc/invoke.texi (Optimization Options): Document change in
26440         meaning and initialization of -fdelete-null-pointer-checks.
26441
26442 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
26443
26444         PR middle-end/39701
26445         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
26446
26447         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
26448         here.
26449
26450         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
26451
26452 2009-04-10  Chao-ying Fu  <fu@mips.com>
26453
26454         * doc/tm.texi (Instruction Output): Document
26455         TARGET_ASM_FINAL_POSTSCAN_INSN.
26456         * target.h (final_postscan_insn): New field in asm_out.
26457         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
26458         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
26459         * final.c (final_scan_insn): Call
26460         targetm.asm_out.final_postscan_insn after outputting
26461         an asm macro and a normal instruction.
26462
26463         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
26464         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
26465         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
26466         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
26467         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
26468
26469 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
26470
26471         PR middle-end/39701
26472         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
26473         variables as non-NULL even with -fdelete-null-pointer-checks.
26474
26475 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
26476
26477         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
26478
26479 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
26480
26481         PR target/39678
26482         * config/i386/i386.c (classify_argument): Handle SCmode with
26483         (bit_offset % 64) != 0.
26484
26485 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
26486
26487         * doc/invoke.texi (Optimize Options): Add cross-reference to
26488         -Q --help=optimizers examples.
26489
26490 2009-04-10  Ben Elliston  <bje@au.ibm.com>
26491
26492         PR target/36800
26493         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
26494         regalign for the reg == fpr and TDmode case.
26495
26496 2009-04-09  David Ayers  <ayers@fsfe.org>
26497
26498         PR objc/29200
26499         * objc/objc-act.c (warn_with_method): Remove helper function.
26500         (check_duplicates): Call warning and inform directly.
26501         (really_start_method): Likewise.
26502
26503 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
26504
26505         * expmed.c (expand_divmod): Always use a comparison for a division
26506         by a large unsigned integer.
26507
26508         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
26509         for things others than variables or functions as nonzero.
26510
26511 2009-04-09  Nick Clifton  <nickc@redhat.com>
26512
26513         * unwind-compat.c: Change copyright header to refer to version
26514         3 of the GNU General Public License with version 3.1 of the
26515         GCC Runtime Library Exception and to point readers at the
26516         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
26517         * config/alpha/crtfastmath.c: Likewise.
26518         * config/alpha/linux-unwind.h: Likewise.
26519         * config/alpha/qrnnd.asm: Likewise.
26520         * config/alpha/vms-crt0-64.c: Likewise.
26521         * config/alpha/vms-crt0.c: Likewise.
26522         * config/alpha/vms-dwarf2.asm: Likewise.
26523         * config/alpha/vms-dwarf2eh.asm: Likewise.
26524         * config/alpha/vms-psxcrt0-64.c: Likewise.
26525         * config/alpha/vms-psxcrt0.c: Likewise.
26526         * config/alpha/vms_tramp.asm: Likewise.
26527         * config/arc/initfini.c: Likewise.
26528         * config/arc/lib1funcs.asm: Likewise.
26529         * config/arm/bpabi-v6m.S: Likewise.
26530         * config/arm/bpabi.S: Likewise.
26531         * config/arm/bpabi.c: Likewise.
26532         * config/arm/crti.asm: Likewise.
26533         * config/arm/crtn.asm: Likewise.
26534         * config/arm/ieee754-df.S: Likewise.
26535         * config/arm/ieee754-sf.S: Likewise.
26536         * config/arm/lib1funcs.asm: Likewise.
26537         * config/arm/libunwind.S: Likewise.
26538         * config/arm/linux-atomic.c: Likewise.
26539         * config/arm/mmintrin.h: Likewise.
26540         * config/arm/pr-support.c: Likewise.
26541         * config/arm/unaligned-funcs.c: Likewise.
26542         * config/arm/unwind-arm.c: Likewise.
26543         * config/arm/unwind-arm.h: Likewise.
26544         * config/avr/libgcc.S: Likewise.
26545         * config/bfin/crti.s: Likewise.
26546         * config/bfin/crtlibid.s: Likewise.
26547         * config/bfin/crtn.s: Likewise.
26548         * config/bfin/lib1funcs.asm: Likewise.
26549         * config/bfin/linux-unwind.h: Likewise.
26550         * config/cris/arit.c: Likewise.
26551         * config/cris/cris_abi_symbol.c: Likewise.
26552         * config/darwin-64.c: Likewise.
26553         * config/darwin-crt2.c: Likewise.
26554         * config/darwin-crt3.c: Likewise.
26555         * config/darwin.h: Likewise.
26556         * config/dbxelf.h: Likewise.
26557         * config/dfp-bit.c: Likewise.
26558         * config/dfp-bit.h: Likewise.
26559         * config/elfos.h: Likewise.
26560         * config/fixed-bit.c: Likewise.
26561         * config/fixed-bit.h: Likewise.
26562         * config/fp-bit.c: Likewise.
26563         * config/fp-bit.h: Likewise.
26564         * config/fr30/crti.asm: Likewise.
26565         * config/fr30/crtn.asm: Likewise.
26566         * config/fr30/lib1funcs.asm: Likewise.
26567         * config/freebsd-spec.h: Likewise.
26568         * config/frv/cmovd.c: Likewise.
26569         * config/frv/cmovh.c: Likewise.
26570         * config/frv/cmovw.c: Likewise.
26571         * config/frv/frvbegin.c: Likewise.
26572         * config/frv/frvend.c: Likewise.
26573         * config/frv/lib1funcs.asm: Likewise.
26574         * config/glibc-stdint.h: Likewise.
26575         * config/h8300/clzhi2.c: Likewise.
26576         * config/h8300/crti.asm: Likewise.
26577         * config/h8300/crtn.asm: Likewise.
26578         * config/h8300/ctzhi2.c: Likewise.
26579         * config/h8300/fixunssfsi.c: Likewise.
26580         * config/h8300/lib1funcs.asm: Likewise.
26581         * config/h8300/parityhi2.c: Likewise.
26582         * config/h8300/popcounthi2.c: Likewise.
26583         * config/i386/ammintrin.h: Likewise.
26584         * config/i386/att.h: Likewise.
26585         * config/i386/avxintrin.h: Likewise.
26586         * config/i386/biarch64.h: Likewise.
26587         * config/i386/bmmintrin.h: Likewise.
26588         * config/i386/cpuid.h: Likewise.
26589         * config/i386/cross-stdarg.h: Likewise.
26590         * config/i386/crtfastmath.c: Likewise.
26591         * config/i386/crtprec.c: Likewise.
26592         * config/i386/cygming-crtbegin.c: Likewise.
26593         * config/i386/cygming-crtend.c: Likewise.
26594         * config/i386/cygwin.asm: Likewise.
26595         * config/i386/emmintrin.h: Likewise.
26596         * config/i386/gmm_malloc.h: Likewise.
26597         * config/i386/gthr-win32.c: Likewise.
26598         * config/i386/i386.h: Likewise.
26599         * config/i386/immintrin.h: Likewise.
26600         * config/i386/linux-unwind.h: Likewise.
26601         * config/i386/linux64.h: Likewise.
26602         * config/i386/mm3dnow.h: Likewise.
26603         * config/i386/mmintrin-common.h: Likewise.
26604         * config/i386/mmintrin.h: Likewise.
26605         * config/i386/nmmintrin.h: Likewise.
26606         * config/i386/pmm_malloc.h: Likewise.
26607         * config/i386/pmmintrin.h: Likewise.
26608         * config/i386/smmintrin.h: Likewise.
26609         * config/i386/sol2-c1.asm: Likewise.
26610         * config/i386/sol2-ci.asm: Likewise.
26611         * config/i386/sol2-cn.asm: Likewise.
26612         * config/i386/sol2-gc1.asm: Likewise.
26613         * config/i386/tmmintrin.h: Likewise.
26614         * config/i386/unix.h: Likewise.
26615         * config/i386/w32-unwind.h: Likewise.
26616         * config/i386/wmmintrin.h: Likewise.
26617         * config/i386/x86-64.h: Likewise.
26618         * config/i386/x86intrin.h: Likewise.
26619         * config/i386/xmmintrin.h: Likewise.
26620         * config/ia64/crtbegin.asm: Likewise.
26621         * config/ia64/crtend.asm: Likewise.
26622         * config/ia64/crtfastmath.c: Likewise.
26623         * config/ia64/crti.asm: Likewise.
26624         * config/ia64/crtn.asm: Likewise.
26625         * config/ia64/fde-glibc.c: Likewise.
26626         * config/ia64/lib1funcs.asm: Likewise.
26627         * config/ia64/linux-unwind.h: Likewise.
26628         * config/ia64/quadlib.c: Likewise.
26629         * config/ia64/unwind-ia64.c: Likewise.
26630         * config/linux.h: Likewise.
26631         * config/m32c/m32c-lib1.S: Likewise.
26632         * config/m32c/m32c-lib2-trapv.c: Likewise.
26633         * config/m32c/m32c-lib2.c: Likewise.
26634         * config/m32r/initfini.c: Likewise.
26635         * config/m68hc11/larith.asm: Likewise.
26636         * config/m68hc11/m68hc11-crt0.S: Likewise.
26637         * config/m68k/cf.md: Likewise.
26638         * config/m68k/crti.s: Likewise.
26639         * config/m68k/crtn.s: Likewise.
26640         * config/m68k/lb1sf68.asm: Likewise.
26641         * config/m68k/linux-unwind.h: Likewise.
26642         * config/mcore/crti.asm: Likewise.
26643         * config/mcore/crtn.asm: Likewise.
26644         * config/mcore/lib1.asm: Likewise.
26645         * config/mips/linux-unwind.h: Likewise.
26646         * config/mips/loongson.h: Likewise.
26647         * config/mips/mips16.S: Likewise.
26648         * config/mmix/crti.asm: Likewise.
26649         * config/mmix/crtn.asm: Likewise.
26650         * config/pa/fptr.c: Likewise.
26651         * config/pa/hpux-unwind.h: Likewise.
26652         * config/pa/lib2funcs.asm: Likewise.
26653         * config/pa/linux-atomic.c: Likewise.
26654         * config/pa/linux-unwind.h: Likewise.
26655         * config/pa/milli64.S: Likewise.
26656         * config/pa/quadlib.c: Likewise.
26657         * config/pa/stublib.c: Likewise.
26658         * config/picochip/libgccExtras/adddi3.asm: Likewise.
26659         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
26660         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
26661         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
26662         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
26663         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
26664         * config/picochip/libgccExtras/divmod15.asm: Likewise.
26665         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
26666         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
26667         * config/picochip/libgccExtras/longjmp.asm: Likewise.
26668         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
26669         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
26670         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
26671         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
26672         * config/picochip/libgccExtras/setjmp.asm: Likewise.
26673         * config/picochip/libgccExtras/subdi3.asm: Likewise.
26674         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
26675         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
26676         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
26677         * config/rs6000/750cl.h: Likewise.
26678         * config/rs6000/altivec.h: Likewise.
26679         * config/rs6000/biarch64.h: Likewise.
26680         * config/rs6000/crtresfpr.asm: Likewise.
26681         * config/rs6000/crtresgpr.asm: Likewise.
26682         * config/rs6000/crtresxfpr.asm: Likewise.
26683         * config/rs6000/crtresxgpr.asm: Likewise.
26684         * config/rs6000/crtsavfpr.asm: Likewise.
26685         * config/rs6000/crtsavgpr.asm: Likewise.
26686         * config/rs6000/darwin-asm.h: Likewise.
26687         * config/rs6000/darwin-fallback.c: Likewise.
26688         * config/rs6000/darwin-fpsave.asm: Likewise.
26689         * config/rs6000/darwin-ldouble.c: Likewise.
26690         * config/rs6000/darwin-tramp.asm: Likewise.
26691         * config/rs6000/darwin-unwind.h: Likewise.
26692         * config/rs6000/darwin-vecsave.asm: Likewise.
26693         * config/rs6000/darwin-world.asm: Likewise.
26694         * config/rs6000/e500crtres32gpr.asm: Likewise.
26695         * config/rs6000/e500crtres64gpr.asm: Likewise.
26696         * config/rs6000/e500crtres64gprctr.asm: Likewise.
26697         * config/rs6000/e500crtrest32gpr.asm: Likewise.
26698         * config/rs6000/e500crtrest64gpr.asm: Likewise.
26699         * config/rs6000/e500crtresx32gpr.asm: Likewise.
26700         * config/rs6000/e500crtresx64gpr.asm: Likewise.
26701         * config/rs6000/e500crtsav32gpr.asm: Likewise.
26702         * config/rs6000/e500crtsav64gpr.asm: Likewise.
26703         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
26704         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
26705         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
26706         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
26707         * config/rs6000/eabi-ci.asm: Likewise.
26708         * config/rs6000/eabi-cn.asm: Likewise.
26709         * config/rs6000/eabi.asm: Likewise.
26710         * config/rs6000/linux-unwind.h: Likewise.
26711         * config/rs6000/linux64.h: Likewise.
26712         * config/rs6000/paired.h: Likewise.
26713         * config/rs6000/paired.md: Likewise.
26714         * config/rs6000/ppc64-fp.c: Likewise.
26715         * config/rs6000/ppu_intrinsics.h: Likewise.
26716         * config/rs6000/rs6000.h: Likewise.
26717         * config/rs6000/si2vmx.h: Likewise.
26718         * config/rs6000/sol-ci.asm: Likewise.
26719         * config/rs6000/sol-cn.asm: Likewise.
26720         * config/rs6000/spe.h: Likewise.
26721         * config/rs6000/spu2vmx.h: Likewise.
26722         * config/rs6000/sysv4.h: Likewise.
26723         * config/rs6000/tramp.asm: Likewise.
26724         * config/rs6000/vec_types.h: Likewise.
26725         * config/s390/linux-unwind.h: Likewise.
26726         * config/s390/tpf-unwind.h: Likewise.
26727         * config/score/crti.asm: Likewise.
26728         * config/score/crtn.asm: Likewise.
26729         * config/sh/crt1.asm: Likewise.
26730         * config/sh/crti.asm: Likewise.
26731         * config/sh/crtn.asm: Likewise.
26732         * config/sh/divtab-sh4-300.c: Likewise.
26733         * config/sh/divtab-sh4.c: Likewise.
26734         * config/sh/divtab.c: Likewise.
26735         * config/sh/lib1funcs-4-300.asm: Likewise.
26736         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
26737         * config/sh/lib1funcs.asm: Likewise.
26738         * config/sh/lib1funcs.h: Likewise.
26739         * config/sh/linux-atomic.asm: Likewise.
26740         * config/sh/linux-unwind.h: Likewise.
26741         * config/sh/shmedia.h: Likewise.
26742         * config/sh/sshmedia.h: Likewise.
26743         * config/sh/ushmedia.h: Likewise.
26744         * config/sparc/crtfastmath.c: Likewise.
26745         * config/sparc/linux-unwind.h: Likewise.
26746         * config/sparc/sol2-c1.asm: Likewise.
26747         * config/sparc/sol2-ci.asm: Likewise.
26748         * config/sparc/sol2-cn.asm: Likewise.
26749         * config/spu/divmodti4.c: Likewise.
26750         * config/spu/divv2df3.c: Likewise.
26751         * config/spu/float_disf.c: Likewise.
26752         * config/spu/float_unsdidf.c: Likewise.
26753         * config/spu/float_unsdisf.c: Likewise.
26754         * config/spu/float_unssidf.c: Likewise.
26755         * config/spu/mfc_multi_tag_release.c: Likewise.
26756         * config/spu/mfc_multi_tag_reserve.c: Likewise.
26757         * config/spu/mfc_tag_release.c: Likewise.
26758         * config/spu/mfc_tag_reserve.c: Likewise.
26759         * config/spu/mfc_tag_table.c: Likewise.
26760         * config/spu/multi3.c: Likewise.
26761         * config/spu/spu_internals.h: Likewise.
26762         * config/spu/spu_intrinsics.h: Likewise.
26763         * config/spu/spu_mfcio.h: Likewise.
26764         * config/spu/vec_types.h: Likewise.
26765         * config/spu/vmx2spu.h: Likewise.
26766         * config/stormy16/stormy16-lib2.c: Likewise.
26767         * config/svr4.h: Likewise.
26768         * config/sync.c: Likewise.
26769         * config/v850/lib1funcs.asm: Likewise.
26770         * config/vxlib-tls.c: Likewise.
26771         * config/vxlib.c: Likewise.
26772         * config/vxworks-dummy.h: Likewise.
26773         * config/xtensa/crti.asm: Likewise.
26774         * config/xtensa/crtn.asm: Likewise.
26775         * config/xtensa/ieee754-df.S: Likewise.
26776         * config/xtensa/ieee754-sf.S: Likewise.
26777         * config/xtensa/lib1funcs.asm: Likewise.
26778         * config/xtensa/lib2funcs.S: Likewise.
26779         * config/xtensa/linux-unwind.h: Likewise.
26780         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
26781         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
26782         * coretypes.h: Likewise.
26783         * crtstuff.c: Likewise.
26784         * defaults.h: Likewise.
26785         * dwarf2.h: Likewise.
26786         * emutls.c: Likewise.
26787         * gbl-ctors.h: Likewise.
26788         * gcov-io.h: Likewise.
26789         * ginclude/float.h: Likewise.
26790         * ginclude/iso646.h: Likewise.
26791         * ginclude/stdarg.h: Likewise.
26792         * ginclude/stdbool.h: Likewise.
26793         * ginclude/stddef.h: Likewise.
26794         * ginclude/stdfix.h: Likewise.
26795         * ginclude/stdint-gcc.h: Likewise.
26796         * ginclude/tgmath.h: Likewise.
26797         * gthr-aix.h: Likewise.
26798         * gthr-dce.h: Likewise.
26799         * gthr-gnat.c: Likewise.
26800         * gthr-gnat.h: Likewise.
26801         * gthr-lynx.h: Likewise.
26802         * gthr-mipssde.h: Likewise.
26803         * gthr-nks.h: Likewise.
26804         * gthr-posix.c: Likewise.
26805         * gthr-posix.h: Likewise.
26806         * gthr-posix95.h: Likewise.
26807         * gthr-rtems.h: Likewise.
26808         * gthr-single.h: Likewise.
26809         * gthr-solaris.h: Likewise.
26810         * gthr-tpf.h: Likewise.
26811         * gthr-vxworks.h: Likewise.
26812         * gthr-win32.h: Likewise.
26813         * gthr.h: Likewise.
26814         * libgcc2.c: Likewise.
26815         * libgcc2.h: Likewise.
26816         * libgcov.c: Likewise.
26817         * tsystem.h: Likewise.
26818         * typeclass.h: Likewise.
26819         * unwind-c.c: Likewise.
26820         * unwind-compat.h: Likewise.
26821         * unwind-dw2-fde-compat.c: Likewise.
26822         * unwind-dw2-fde-darwin.c: Likewise.
26823         * unwind-dw2-fde-glibc.c: Likewise.
26824         * unwind-dw2-fde.c: Likewise.
26825         * unwind-dw2-fde.h: Likewise.
26826         * unwind-dw2.c: Likewise.
26827         * unwind-dw2.h: Likewise.
26828         * unwind-generic.h: Likewise.
26829         * unwind-pe.h: Likewise.
26830         * unwind-sjlj.c: Likewise.
26831         * unwind.inc: Likewise.
26832         * config/arm/neon-gen.ml: Change generated copyright header to
26833         refer to version 3 of the GNU General Public License with
26834         version 3.1 of the GCC Runtime Library Exception and to point
26835         readers at the COPYING3 and COPYING3.RUNTIME files and the
26836         FSF's license web page.
26837         * config/arm/arm_neon.h: Regenerate.
26838
26839 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
26840
26841         * config/cris/cris.md: Change copyright header to refer to version
26842         3 of the GNU General Public License.
26843         * doc/install.texi2html: Change copyright header to refer to version
26844         3 of the GNU General Public License and to point readers at the
26845         COPYING3 file and the FSF's license web page.
26846         * config/vax/linux.h: Likewise.
26847
26848 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
26849
26850         * config/i386/i386.md (cmpcc): New.
26851         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
26852         (sync_compare_and_swap_cc*): Delete.
26853
26854         * config/s390/s390.c (s390_compare_emitted): Remove.
26855         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
26856         s390_compare_emitted used to be handled.  Assert that modes match.
26857         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
26858         refer to sync_compare_and_swap_ccsi.
26859         * config/s390/s390.h (s390_compare_emitted): Remove.
26860         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
26861         instead of s390_compare_emitted.
26862         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
26863         instead of s390_compare_emitted.
26864         * config/s390/s390.md (cmpcc): New.
26865         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
26866         CC_REGNUM, do not pretend it's set.
26867         (sync_compare_and_swap_cc*): Delete.
26868         * config/s390/predicates.md (cc_reg_operand): New.
26869
26870         * expr.c (sync_compare_and_swap_cc): Delete.
26871         * optabs.h (sync_compare_and_swap_cc): Delete.
26872         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
26873         is being used with can_compare_p.
26874         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
26875         (find_cc_set): New.
26876         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
26877         look for a MODE_CC set instead.  Use emit_store_flag.
26878         (expand_compare_and_swap_loop): Likewise, with some additional
26879         complication to avoid a force_reg when useless.  Use
26880         emit_cmp_and_jump_insns.
26881         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
26882         * doc/md.texi (sync_compare_and_swap_cc): Merge with
26883         sync_compare_and_swap documentation.
26884
26885 2009-04-09  Jan Hubicka  <jh@suse.cz>
26886
26887         * except.c (find_prev_try): Break out from ....
26888         (duplicate_eh_regions): ... here; properly update prev_try pointers
26889         when duplication part of tree.
26890         (dump_eh_tree): Improve dumping.
26891         (verify_eh_region): New.
26892         (verify_eh_tree): Use it.
26893
26894 2009-04-06  Richard Guenther  <rguenther@suse.de>
26895
26896         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
26897         &ARRAY addresses by adjusting their types and prepending
26898         a conversion.
26899         * tree-cfg.c (verify_gimple_assign_single): Verify that
26900         addresses are correct.
26901
26902 2009-04-09  Richard Guenther  <rguenther@suse.de>
26903
26904         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
26905         indices into an array reference if possible.
26906         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
26907         Fold POINTER_PLUS_EXPR statements with invariant address.
26908
26909 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
26910
26911         PR target/39634
26912         * config.gcc (powerpc64-*-linux*): Always build biarch.
26913
26914 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
26915
26916         PR c/39613
26917         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
26918         it and pedwarn if this results in an INTEGER_CST.
26919
26920 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26921
26922         * doc/install.texi: Update minimum GMP version.  Remove obsolete
26923         text in MPFR section.
26924
26925 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
26926
26927         * dwarf2out.c (class_scope_p): New static inline.
26928         (class_or_namespace_scope_p): Use it.
26929         (gen_variable_die): Use DW_TAG_member tag for static data member
26930         declarations instead of DW_TAG_variable.
26931
26932         PR middle-end/39573
26933         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
26934         variables.
26935
26936 2009-04-08  Richard Guenther  <rguenther@suse.de>
26937
26938         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
26939         valueize random data.
26940
26941 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
26942
26943         * config.gcc (aix tm_file):  Add aix-stdint.h.
26944         (aix tm clause use_gcc_stdint):  Set to wrap.
26945         * config/rs6000/aix-stdint.h:  New file.
26946
26947 2009-04-08  Richard Guenther  <rguenther@suse.de>
26948
26949         PR middle-end/36291
26950         * tree-dfa.c (add_referenced_var): Do not recurse into
26951         global initializers.
26952         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
26953         exposed variables.
26954         (fold_const_aggregate_ref): Likewise.
26955
26956 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
26957
26958         * recog.c (ordered_comparison_operator): New.
26959         * gensupport.c (std_preds): Add it.
26960         * doc/md.texi (Machine-Independent Predicates): Document it.
26961
26962 2009-04-08  Jan Hubicka  <jh@suse.cz>
26963
26964         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
26965         * function.h (rtl_eh): Remove exception_handler_label_map.
26966         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
26967         remove_exception_handler_label, for_each_eh_label_1): Remove.
26968         (rtl_remove_unreachable_regions): Remove.
26969         (convert_from_eh_region_ranges): Do not remove unreachable regions.
26970         (find_exception_handler_labels): Don't build the hashtable.
26971         (maybe_remove_eh_handler): Remove.
26972         (for_each_eh_label): Rewrite to walk the tree.
26973         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
26974         * except.h (maybe_remove_eh_handler): Remove.
26975         * passes.c (init_optimization_passes): Schedule second EH cleanup
26976         before out-of-ssa.
26977         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
26978         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
26979
26980 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
26981
26982         * genoutput.c (validate_optab_operands): New.
26983         (gen_insn, gen_expand): Call it.
26984
26985         * genflags.c (gen_insn): Detect misused iterators.
26986         (main): Pass line_no to gen_insn, exit with status 1 on error.
26987
26988         * genextract.c (line_no): Make global.
26989         (VEC_safe_set_locstr): Change assertion to error message.
26990         (main): Exit with status 1 on error.
26991
26992 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
26993
26994         PR c/39614
26995         PR c/39673
26996         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
26997         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
26998         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
26999         * c-convert.c (convert): Do not call fold on results of conversion
27000         functions when the result is a C_MAYBE_CONST_EXPR.
27001         * c-parser.c (c_parser_postfix_expression): Do not fold condition
27002         of __builtin_choose_expr.
27003         * c-typeck.c (remove_c_maybe_const_expr): New.
27004         (build_unary_op, build_conditional_expr, build_compound_expr,
27005         build_binary_op, c_objc_common_truthvalue_conversion): Call
27006         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
27007         integer operands.
27008
27009 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
27010
27011         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
27012         CODE to produce a new one. Add a prototype to use fold_convert_const
27013
27014 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
27015
27016         PR bootstrap/39660
27017         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
27018         mix declarations and code.
27019
27020 2009-04-08  Ben Elliston  <bje@au.ibm.com>
27021
27022         * gcc.c: Replace `CC' with `GCC' throughout.
27023
27024 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
27025
27026         * doc/invoke.texi: Document Atom support.
27027
27028 2009-04-07  Jason Merrill  <jason@redhat.com>
27029
27030         PR c++/25185
27031         * c-common.h, c-common.c: Add flag_pretty_templates.
27032         * c-opts.c (c_common_handle_option): Set it.
27033         * c.opt: Add -fno-pretty-templates.
27034         * doc/invoke.texi (C++ Dialect Options): Likewise.
27035
27036 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
27037
27038         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
27039         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
27040         (ia64_expand_builtin): Likewise.
27041
27042 2009-04-07  Martin Jambor  <mjambor@suse.cz>
27043
27044         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
27045         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
27046         ADDR_EXPRS are include too.
27047
27048 2009-04-07  Richard Guenther  <rguenther@suse.de>
27049
27050         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
27051         decls are only used if passes as parameters or if they are
27052         local statics and the call is not to a builtin.
27053         (call_may_clobber_ref_p_1): Likewise.
27054
27055 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27056
27057         * expr.c (do_store_flag): Remove last argument.  Simplify code
27058         to avoid duplication of tests already done by can_compare_p.
27059         (expand_expr_real_1): Adjust caller.
27060
27061 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27062
27063         * optabs.c (can_compare_p): Test the predicate of a
27064         cbranch and cstore pattern.
27065
27066 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27067
27068         * expr.c (convert_move): Use emit_store_flag instead of
27069         "emulating" it.
27070
27071 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27072
27073         * config/i386/i386.c (ix86_compare_emitted): Remove.
27074         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
27075         ix86_compare_op0 like ix86_compare_emitted used to be handled.
27076         * config/i386/i386.h (ix86_compare_emitted): Remove.
27077         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
27078         instead of ix86_compare_emitted.
27079         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
27080
27081 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
27082
27083         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
27084         Add t-sysroot-suffix to tmake_file.
27085         * config/print-sysroot-suffix.sh: New file.
27086         * config/t-sysroot-suffix: New file.
27087
27088 2009-04-07  Ben Elliston  <bje@au.ibm.com>
27089
27090         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
27091         as the latter produces a warning when the target does not support
27092         infinity.
27093
27094 2009-04-07  Ben Elliston  <bje@au.ibm.com>
27095
27096         * dfp.c: Replace type punning assignments with memcpy throughout.
27097         * Makefile.in (dfp.o-warn): Remove.
27098
27099 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
27100
27101         PR target/39634
27102         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
27103         Include soft-fp/t-softfp after rs6000/t-linux64.
27104
27105 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
27106
27107         * stor-layout.c (set_sizetype): Use the full precision of their
27108         machine mode for bitsize types.
27109
27110 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
27111
27112         * config/i386/i386.md: Revert 2 accidental checkins.
27113
27114 2009-04-06  Joey Ye  <joey.ye@intel.com>
27115             Xuepeng Guo  <xuepeng.guo@intel.com>
27116             H.J. Lu  <hongjiu.lu@intel.com>
27117
27118         Atom pipeline model, tuning and insn selection.
27119         * config.gcc (atom): Add atom config options and target.
27120
27121         * config/i386/atom.md: New.
27122
27123         * config/i386/i386.c (atom_cost): New cost.
27124         (m_ATOM): New macro flag.
27125         (initial_ix86_tune_features): Set m_ATOM.
27126         (x86_accumulate_outgoing_args): Likewise.
27127         (x86_arch_always_fancy_math_387): Likewise.
27128         (processor_target): Add Atom cost.
27129         (cpu_names): Add Atom cpu name.
27130         (override_options): Set Atom ISA.
27131         (ix86_issue_rate): New case PROCESSOR_ATOM.
27132         (ix86_adjust_cost): Likewise.
27133
27134         * config/i386/i386.h (TARGET_ATOM): New target macro.
27135         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
27136         (TARGET_OPT_AGU): New target option.
27137         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
27138         (processor_type): Add PROCESSOR_ATOM.
27139
27140         * config/i386/i386.md (cpu): Add new value "atom".
27141         (use_carry, movu): New attr.
27142         (atom.md): Include atom.md.
27143         (adddi3_carry_rex64): Set attr "use_carry".
27144         (addqi3_carry): Likewise.
27145         (addhi3_carry): Likewise.
27146         (addsi3_carry): Likewise.
27147         (*addsi3_carry_zext): Likewise.
27148         (subdi3_carry_rex64): Likewise.
27149         (subqi3_carry): Likewise.
27150         (subhi3_carry): Likewise.
27151         (subsi3_carry): Likewise.
27152         (x86_movdicc_0_m1_rex64): Likewise.
27153         (*x86_movdicc_0_m1_se): Likewise.
27154         (x86_movsicc_0_m1): Likewise.
27155         (*x86_movsicc_0_m1_se): Likewise.
27156         (*adddi_1_rex64): Emit add insn as much as possible.
27157         (*addsi_1): Likewise.
27158         (return_internal): Set atom_unit.
27159         (return_internal_long): Likewise.
27160         (return_pop_internal): Likewise.
27161         (*rcpsf2_sse): Set atom_sse_attr attr.
27162         (*qrt<mode>2_sse): Likewise.
27163         (*prefetch_sse): Likewise.
27164
27165         * config/i386/i386-c.c (ix86_target_macros_internal): New case
27166         PROCESSOR_ATOM.
27167         (ix86_target_macros_internal): Likewise.
27168
27169         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
27170         (*prefetch_sse_rex): Likewise.
27171         (sse_rcpv4sf2): Likewise.
27172         (sse_vmrcpv4sf2): Likewise.
27173         (sse_sqrtv4sf2): Likewise.
27174         (<sse>_vmsqrt<mode>2): Likewise.
27175         (sse_ldmxcsr): Likewise.
27176         (sse_stmxcsr): Likewise.
27177         (*sse_sfence): Likewise.
27178         (sse2_clflush): Likewise.
27179         (*sse2_mfence): Likewise.
27180         (*sse2_lfence): Likewise.
27181         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
27182         (<sse>_movup<ssemodesuffixf2c>): Likewise.
27183         (avx_movdqu<avxmodesuffix>): Likewise.
27184         (avx_lddqu<avxmodesuffix>): Likewise.
27185         (sse2_movntv2di): Change attr "type" to "ssemov".
27186         (sse2_movntsi): Likewise.
27187         (rsqrtv8sf2): Change attr "type" to "sseadd".
27188         (sse3_addsubv2df3): Set attr "atom_unit".
27189         (sse3_h<plusminus_insn>v4sf3): Likewise.
27190         (*sse2_pmaddwd): Likewise.
27191         (*vec_extractv2di_1_rex64): Likewise.
27192         (*vec_extractv2di_1_avx): Likewise.
27193         (sse2_psadbw): Likewise.
27194         (ssse3_phaddwv8hi3): Likewise.
27195         (ssse3_phaddwv4hi3): Likewise.
27196         (ssse3_phadddv4si3): Likewise.
27197         (ssse3_phadddv2si3): Likewise.
27198         (ssse3_phaddswv8hi3): Likewise.
27199         (ssse3_phaddswv4hi3): Likewise.
27200         (ssse3_phsubwv8hi3): Likewise.
27201         (ssse3_phsubwv4hi3): Likewise.
27202         (ssse3_phsubdv4si3): Likewise.
27203         (ssse3_phsubdv2si3): Likewise.
27204         (ssse3_phsubswv8hi3): Likewise.
27205         (ssse3_phsubswv4hi3): Likewise.
27206         (ssse3_pmaddubsw128): Likewise.
27207         (sse3_pmaddubsw: Likewise.
27208         (ssse3_palignrti): Likewise.
27209         (ssse3_palignrdi): Likewise.
27210
27211 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
27212
27213         * doc/install.texi (Specific): Fix two cross-references to MinGW.
27214
27215 2009-04-06  Richard Guenther  <rguenther@suse.de>
27216
27217         PR tree-optimization/28868
27218         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
27219         of which PHI results we inserted.
27220         (insert_into_preds_of_block): Record inserted PHIs.
27221         (eliminate): Eliminate redundant PHI nodes.
27222         (init_pre): Init inserted_phi_names.
27223
27224 2009-04-06  Richard Guenther  <rguenther@suse.de>
27225
27226         PR tree-optimization/39643
27227         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
27228         IMAGPART_EXPRs of complex constants.
27229         (execute_fold_all_builtins): If we folded a call queue
27230         TODO_update_address_taken.
27231
27232 2009-04-06  Jan Hubicka  <jh@suse.cz>
27233
27234         PR middle-end/39659
27235         * except.c (remove_unreachable_regions): Propagate may_contain_throw
27236         flag.
27237
27238 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
27239
27240         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
27241         delay slot.
27242         (ic_invalidate_array): Likewise.
27243
27244 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
27245
27246         * calls.c (emit_library_call_value_1): Fix a problem with parameter
27247         alignment for library calls.
27248
27249 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
27250
27251         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
27252         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
27253         * config/i386/mingw-stdint.h:  New file.
27254
27255 2009-04-05  Richard Guenther  <rguenther@suse.de>
27256
27257         PR tree-optimization/39648
27258         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
27259         our &A vs. &A[0] IL deficiencies.
27260
27261 2009-04-04  Jan Hubicka  <jh@suse.cz>
27262
27263         * except.c (sjlj_find_directly_reachable_regions): Be ready for
27264         removed toplevel regions.
27265         (sjlj_mark_call_sites): Likewise.
27266
27267 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
27268
27269         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
27270         (cygwin tm clause use_gcc_stdint):  Set to wrap.
27271         * config/i386/cygwin-stdint.h:  New file.
27272
27273 2009-04-04  Richard Guenther  <rguenther@suse.de>
27274
27275         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
27276         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
27277         single-argument PHIs if we are in loop-closed SSA form.
27278         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
27279         for the pre-condition.
27280         (slpeel_tree_peel_loop_to_edge): Likewise.
27281         (vect_build_loop_niters): Take an optional sequence to append stmts.
27282         (vect_generate_tmps_on_preheader): Likewise.
27283         (vect_do_peeling_for_loop_bound): Take extra guards for the
27284         pre-condition.
27285         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
27286         the cost model check.
27287         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
27288         guards if we are going to peel.  Do not apply versioning in that case.
27289         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
27290         (vect_do_peeling_for_loop_bound): Likewise.
27291         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
27292         loop bound only record extra pre-conditions, do not apply loop
27293         versioning.
27294
27295 2009-04-04  Richard Guenther  <rguenther@suse.de>
27296
27297         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
27298         renaming code.
27299
27300 2009-04-04  Jan Hubicka  <jh@suse.cz>
27301
27302         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
27303         last_basic_block for size of bb->index indexed array.
27304         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
27305         compute_out, link_btr_uses, build_btr_def_use_webs,
27306         build_btr_def_use_webs, migrate_btr_defs): Likewise.
27307
27308 2009-04-04  Jan Hubicka  <jh@suse.cz>
27309
27310         * except.c (remove_eh_handler_and_replace): Break out from ...
27311         (remove_eh_handler): ... here.
27312         (bring_to_root): New function.
27313         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
27314         handled ones, bring others to root of tree.
27315
27316 2009-04-04  Jan Hubicka  <jh@suse.cz>
27317
27318         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
27319         (all_phis_safe_to_merge): New function.
27320         (update_info): New structure.
27321         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
27322         (cleanup_empty_eh): Update SSA if possible.
27323
27324 2009-04-04  Richard Guenther  <rguenther@suse.de>
27325
27326         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
27327         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
27328         (append_vuse): Likewise.
27329
27330 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
27331
27332         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
27333         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
27334         instead of REG_UNSAVED for DW_CFA_undefined.
27335         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
27336         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
27337         outermost frame.
27338
27339 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
27340
27341         PR target/39501
27342         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
27343
27344 2009-04-04  Richard Guenther  <rguenther@suse.de>
27345
27346         PR tree-optimization/8781
27347         PR tree-optimization/37892
27348         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
27349         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
27350         (valueize_refs): Call it for *& valueizations.
27351         (shared_reference_ops_from_ref): Rename to ...
27352         (valueize_shared_reference_ops_from_ref): ... this and valueize.
27353         (shared_reference_ops_from_call): Rename to ...
27354         (valueize_shared_reference_ops_from_call): ... this and valueize.
27355         (vn_reference_lookup): Update.
27356         (visit_reference_op_call): Likewise.
27357         * tree-ssa-pre.c (phi_translate_1): Fold *&.
27358         (eliminate): Value-replace the call address in call statements.
27359
27360 2009-04-04  Richard Guenther  <rguenther@suse.de>
27361
27362         PR tree-optimization/39636
27363         * tree-ssa-forwprop.c
27364         (forward_propagate_addr_into_variable_array_index): Check for
27365         GIMPLE_ASSIGN before accessing the rhs code.
27366
27367 2009-04-03  Jason Merrill  <jason@redhat.com>
27368
27369         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
27370
27371 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
27372
27373         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
27374         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
27375         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
27376         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
27377         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
27378         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
27379         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
27380         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
27381         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
27382         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
27383         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
27384         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
27385         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
27386         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
27387         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
27388         Use fr_reg_or_fp01_operand instead of fr_register_operand
27389
27390         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
27391         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
27392         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
27393
27394 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
27395
27396         PR rtl-optimization/39607
27397         PR rtl-optimization/39631
27398
27399         Revert:
27400
27401         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
27402         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
27403         instead of DF_LR_OUT.
27404         * ira-lives.c (process_bb_node_lives): Ditto.
27405         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
27406         instead of DF_LR_{OUT,IN}.
27407         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
27408         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
27409
27410 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
27411
27412         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
27413         (execute_lower_omp): Always run but take the short way out if -fopenmp
27414         is not given.
27415         (gate_lower_omp): Remove, forcing the pass manager to always run the
27416         pass and always set PROP_gimple_lomp.
27417         (pass_lower_omp): Remove gate function.
27418         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
27419         PROP_trees.  Instead, require it.
27420         * ipa-cp.c (pass_ipa_cp): Likewise.
27421         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
27422         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
27423         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
27424         and PROP_gimple_leh.
27425
27426 2009-04-03  Richard Guenther  <rguenther@suse.de>
27427
27428         PR middle-end/13146
27429         PR tree-optimization/23940
27430         PR tree-optimization/33237
27431         PR middle-end/33974
27432         PR middle-end/34093
27433         PR tree-optimization/36201
27434         PR tree-optimization/36230
27435         PR tree-optimization/38049
27436         PR tree-optimization/38207
27437         PR tree-optimization/38230
27438         PR tree-optimization/38301
27439         PR tree-optimization/38585
27440         PR middle-end/38895
27441         PR tree-optimization/38985
27442         PR tree-optimization/39299
27443         * tree-ssa-structalias.h: Remove.
27444         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
27445         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
27446         (struct vuse_element_d): Remove.
27447         (struct vuse_vec_d): Likewise.
27448         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
27449         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
27450         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
27451         VUSE_ELEMENT_VAR): Likewise.
27452         (struct voptype_d): Likewise.
27453         (NUM_VOP_FREE_BUCKETS): Likewise.
27454         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
27455         (struct stmt_operands_d): Remove.
27456         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
27457         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
27458         VDEF_NUM, VDEF_VECT): Likewise.
27459         (copy_virtual_operands): Remove.
27460         (operand_build_cmp): Likewise.
27461         (create_ssa_artificial_load_stmt): Likewise.
27462         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
27463         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
27464         vuse_index and mayuse_index members.  Pack and move done and iter_type
27465         members to the front.
27466         (SSA_OP_VMAYUSE): Remove.
27467         (SSA_OP_VIRTUAL_USES): Adjust.
27468         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
27469         (unlink_stmt_vdef): Declare.
27470         (add_to_addressable_set): Remove.
27471         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
27472         (vrp_visit_stmt): Likewise.
27473         * doc/tree-ssa.texi (Alias analysis): Update.
27474         * doc/invoke.texi (max-aliased-vops): Remove docs.
27475         (avg-aliased-vops): Likewise.
27476         * tree-into-ssa.c (syms_to_rename): Remove.
27477         (need_to_update_vops_p): Likewise.
27478         (need_to_initialize_update_ssa_p): Rename to ...
27479         (update_ssa_initialized_fn): ... this.  Track function we are
27480         initialized for.
27481         (symbol_marked_for_renaming): Simplify.
27482         (add_new_name_mapping): Do not set need_to_update_vops_p.
27483         (dump_currdefs): Use SYMS_TO_RENAME.
27484         (rewrite_update_stmt): Always walk all uses/defs.
27485         (dump_update_ssa): Adjust.
27486         (init_update_ssa): Take function argument.  Track what we are
27487         initialized for.
27488         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
27489         (create_new_def_for): Initialize for cfun, assert we are initialized
27490         for cfun.
27491         (mark_sym_for_renaming): Simplify.
27492         (mark_set_for_renaming): Do not initialize update-ssa.
27493         (need_ssa_update_p): Simplify.  Take function argument.
27494         (name_mappings_registered_p): Assert we ask for the correct function.
27495         (name_registered_for_update_p): Likewise.
27496         (ssa_names_to_replace): Likewise.
27497         (release_ssa_name_after_update_ssa): Likewise.
27498         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
27499         (dump_decl_set): Do not print a newline.
27500         (debug_decl_set): Do it here.
27501         (dump_update_ssa): And here.
27502         * tree-ssa-loop-im.c (move_computations): Adjust.
27503         (movement_possibility): Likewise.
27504         (determine_max_movement): Likewise.
27505         (gather_mem_refs_stmt): Likewise.
27506         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
27507         or NAME_MEMORY_TAG.
27508         * tree-complex.c (update_all_vops): Remove.
27509         (expand_complex_move): Adjust.
27510         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
27511         Simplify test for memory referencing statement.  Exclude
27512         non-invariant ADDR_EXPRs.
27513         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
27514         * tree-loop-distribution.c (generate_memset_zero): Adjust.
27515         (rdg_flag_uses): Likewise.
27516         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
27517         related code.
27518         (tree_optimize_tail_calls_1): Also split the
27519         edge from the entry block if we have degenerate PHI nodes in
27520         the first basic block.
27521         * tree.c (init_ttree): Remove memory-tag related code.
27522         (tree_code_size): Likewise.
27523         (tree_node_structure): Likewise.
27524         (build7_stat): Re-write to be build6_stat.
27525         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
27526         (SSA_VAR_P): Adjust.
27527         (struct tree_memory_tag): Remove.
27528         (struct tree_memory_partition_tag): Likewise.
27529         (union tree_node): Adjust.
27530         (build7): Re-write to be build6.
27531         * tree-pass.h (pass_reset_cc_flags): Remove.
27532         (TODO_update_address_taken): New flag.
27533         (pass_simple_dse): Remove.
27534         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
27535         * params.h (MAX_ALIASED_VOPS): Remove.
27536         (AVG_ALIASED_VOPS): Likewise.
27537         * omp-low.c (expand_omp_taskreg): Update SSA form.
27538         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
27539         aliases the lhs in a copy stmt.
27540         * tree-ssa-dse.c (struct address_walk_data): Remove.
27541         (memory_ssa_name_same): Likewise.
27542         (memory_address_same): Likewise.
27543         (get_kill_of_stmt_lhs): Likewise.
27544         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
27545         unused stores.  Look through PHI nodes into post-dominated regions.
27546         (dse_optimize_stmt): Simplify.  Properly remove stores.
27547         (tree_ssa_dse): Compute dominators.
27548         (execute_simple_dse): Remove.
27549         (pass_simple_dse): Likewise.
27550         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
27551         gimple_loaded_syms and gimple_stored_syms computation.
27552         * toplev.c (dump_memory_report): Dump alias and pta stats.
27553         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
27554         (vn_reference_eq): Likewise.
27555         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
27556         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
27557         valueize_vuses): Remove.
27558         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
27559         (get_def_ref_stmt_vuse): ... this.
27560         (vn_reference_lookup_2): New function.
27561         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
27562         walking equivalent vuses.  Simplify.
27563         (vn_reference_lookup): Likewise.
27564         (vn_reference_insert): Likewise.
27565         (vn_reference_insert_pieces): Likewise.
27566         (visit_reference_op_call): Simplify.
27567         (visit_reference_op_load): Likewise.
27568         (visit_reference_op_store): Likewise.
27569         (init_scc_vn): Remove shared_lookup_vuses initialization.
27570         (free_scc_vn): Remove shared_lookup_vuses freeing.
27571         (sort_vuses, sort_vuses_heap): Remove.
27572         (get_ref_from_reference_ops): Export.
27573         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
27574         vector with single vuse pointer.
27575         (vn_reference_lookup_pieces, vn_reference_lookup,
27576         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
27577         (shared_vuses_from_stmt): Remove.
27578         (get_ref_from_reference_ops): Declare.
27579         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
27580         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
27581         memory-tag related code.
27582         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
27583         (likely_value): Add comment, skip static-chain of call statements.
27584         (surely_varying_stmt_p): Adjust.
27585         (gimplify_and_update_call_from_tree): Likewise.
27586         (execute_fold_all_builtins): Do not rebuild alias info.
27587         (gimplify_and_update_call_from_tree): Properly update VOPs.
27588         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
27589         (copy_ref_info): Remove memory-tag related code.
27590         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
27591         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
27592         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
27593         computation.
27594         * tree-ssa-dom.c (gimple_p): Remove typedef.
27595         (eliminate_redundant_computations): Adjust.
27596         (record_equivalences_from_stmt): Likewise.
27597         (avail_expr_hash): Likewise.
27598         (avail_expr_eq): Likewise.
27599         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
27600         (stmt_makes_single_load): Likewise.
27601         (stmt_makes_single_store): Likewise.
27602         * tree-ssa-alias.c: Rewrite completely.
27603         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
27604         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
27605         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
27606         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
27607         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
27608         Remove public functions.
27609         (pass_reset_cc_flags): Remove.
27610         (pass_build_alias): Move ...
27611         * tree-ssa-structalias.c (pass_build_alias): ... here.
27612         * tree-ssa-alias.c (may_be_aliased): Move ...
27613         * tree-flow-inline.h (may_be_aliased): ... here.
27614         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
27615         count_uses_and_derefs): Move ...
27616         * gimple.c: ... here.
27617         * gimple.h (count_uses_and_derefs): Declare.
27618         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
27619         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
27620         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
27621         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
27622         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
27623         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
27624         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
27625         New functions.
27626         * tree-dfa.c (refs_may_alias_p): Move ...
27627         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
27628         * tree-ssa-alias.h: New file.
27629         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
27630         (statement_sink_location): Likewise.
27631         * opts.c (decode_options): Do not adjust max-aliased-vops or
27632         avg-aliased-vops values.
27633         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
27634         (TV_CALL_CLOBBER): Likewise.
27635         (TV_FLOW_SENSITIVE): Likewise.
27636         (TV_FLOW_INSENSITIVE): Likewise.
27637         (TV_MEMORY_PARTITIONING): Likewise.
27638         (TV_ALIAS_STMT_WALK): New timevar.
27639         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
27640         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
27641         (get_address_description): Remove memory-tag related code.
27642         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
27643         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
27644         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
27645         and immediate uses in statements.  Document.
27646         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
27647         (dump_symbols): Remove.
27648         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
27649         * alias.c (get_deref_alias_set): New function split out from ...
27650         (get_alias_set): ... here.
27651         * alias.h (get_deref_alias_set): Declare.
27652         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
27653         type parameter.  Remove restrict pointer handling.  Create a
27654         ref-all pointer in case type-based alias sets do not conflict.
27655         (vect_analyze_data_refs): Remove SMT related code.
27656         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
27657         (vectorizable_load): Likewise.
27658         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
27659         (DR_SYMBOL_TAG, DR_VOPS): Remove.
27660         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
27661         Ignore vops and SMTs.
27662         (dr_analyze_alias): Likewise..
27663         (free_data_ref): Likewise.
27664         (create_data_ref): Likewise.
27665         (analyze_all_data_dependences): Likewise.
27666         (get_references_in_stmt): Adjust.
27667         * tree-flow-inline.h (gimple_aliases_computed_p,
27668         gimple_addressable_vars, gimple_call_clobbered_vars,
27669         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
27670         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
27671         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
27672         gimple_mem_ref_stats): Remove.
27673         (gimple_vop): New function.
27674         (op_iter_next_use): Remove vuses and mayuses cases.
27675         (op_iter_next_def): Remove vdefs case.
27676         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
27677         (clear_and_done_ssa_iter): Do not set removed fields.
27678         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
27679         Assert we are not iterating over vuses or vdefs if not also
27680         iterating over uses or defs.
27681         (op_iter_init_use): Likewise.
27682         (op_iter_init_def): Likewise.
27683         (op_iter_next_vdef): Remove.
27684         (op_iter_next_mustdef): Likewise.
27685         (op_iter_init_vdef): Likewise.
27686         (compare_ssa_operands_equal): Likewise.
27687         (link_use_stmts_after): Handle vuse operand.
27688         (is_call_used): Use is_call_clobbered.
27689         (is_call_clobbered): Global variables are always call clobbered,
27690         query the call-clobbers bitmap.
27691         (mark_call_clobbered): Ignore global variables.
27692         (clear_call_clobbered): Likewise.
27693         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
27694         virtual operands sanity check.
27695         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
27696         Remove.
27697         (TARGET_MEM_REF): Remove TMR_TAG operand.
27698         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
27699         Remove call-clobber related code.
27700         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
27701         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
27702         partitions or escape reason.
27703         (get_single_def_stmt, get_single_def_stmt_from_phi,
27704         get_single_def_stmt_with_phi): Remove.
27705         (dump_referenced_vars): Tidy.
27706         (get_ref_base_and_extent): Allow bare decls.
27707         (collect_dfa_stats): Adjust.
27708         * graphite.c (rename_variables_in_stmt): Adjust.
27709         (graphite_copy_stmts_from_block): Likewise.
27710         (translate_clast): Likewise.
27711         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
27712         (EXPR_DIES): New.
27713         (translate_vuse_through_block): Use the oracle.
27714         (phi_translate_1): Adjust.
27715         (value_dies_in_block_x): Use the oracle.  Cache the outcome
27716         in EXPR_DIES.
27717         (valid_in_sets): Check if the VUSE for
27718         a REFERENCE is available.
27719         (eliminate): Do not remove stmts during elimination,
27720         instead queue and remove them afterwards.
27721         (do_pre): Do not rebuild alias info.
27722         (pass_pre): Run TODO_rebuild_alias before PRE.
27723         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
27724         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
27725         (mark_all_v_defs_stmt): Remove.
27726         (mark_all_v_defs_seq): Adjust.
27727         (sra_replace): Likewise.
27728         (scalarize_use): Likewise.
27729         (scalarize_copy): Likewise.
27730         (scalarize_init): Likewise.
27731         (scalarize_ldst): Likewise.
27732         (todoflags): Remove.
27733         (tree_sra): Do not rebuild alias info.
27734         (tree_sra_early): Adjust.
27735         (pass_sra): Run TODO_update_address_taken before SRA.
27736         * tree-predcom.c (set_alias_info): Remove.
27737         (prepare_initializers_chain): Do not call it.
27738         (mark_virtual_ops_for_renaming): Adjust.
27739         (mark_virtual_ops_for_renaming_list): Remove.
27740         (initialize_root_vars): Adjust.
27741         (initialize_root_vars_lm): Likewise.
27742         (prepare_initializers_chain): Likewise.
27743         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
27744         (may_propagate_copy_into_stmt): Likewise.
27745         (merge_alias_info): Do nothing for now.
27746         (propagate_tree_value_into_stmt): Adjust.
27747         (stmt_may_generate_copy): Likewise.
27748         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
27749         not mark symbols for renaming.
27750         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
27751         with the same statement, make sure to update the new pointed-to one.
27752         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
27753         call statements, do not mark symbols for renaming.
27754         (mark_operand_necessary): Dump something.
27755         (ref_may_be_aliased): New function.
27756         (mark_aliased_reaching_defs_necessary_1): New helper function.
27757         (mark_aliased_reaching_defs_necessary): Likewise.
27758         (mark_all_reaching_defs_necessary_1): Likewise.
27759         (mark_all_reaching_defs_necessary): Likewise.
27760         (propagate_necessity): Do not process virtual PHIs.  For
27761         non-aliased loads mark all reaching definitions as necessary.
27762         For aliased loads and stores mark the immediate dominating
27763         aliased clobbers as necessary.
27764         (visited): New global static.
27765         (perform_tree_ssa_dce): Free visited bitmap after propagating
27766         necessity.
27767         (remove_dead_phis): Perform simple dead virtual PHI removal.
27768         (remove_dead_stmt): Properly unlink virtual operands when
27769         removing stores.
27770         (eliminate_unnecessary_stmts): Schedule PHI removal after
27771         stmt removal.
27772         * tree-ssa-ter.c (is_replaceable_p): Adjust.
27773         (process_replaceable): Likewise.
27774         (find_replaceable_in_bb): Likewise.
27775         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
27776         based on the single gimple vop.
27777         (verify_flow_insensitive_alias_info): Remove.
27778         (verify_flow_sensitive_alias_info): Likewise.
27779         (verify_call_clobbering): Likewise.
27780         (verify_memory_partitions): Likewise.
27781         (verify_alias_info): Likewise.
27782         (verify_ssa): Adjust..
27783         (execute_update_addresses_taken): Export.  Update SSA
27784         manually.  Optimize only when optimizing.  Use a local bitmap.
27785         (pass_update_address_taken): Remove TODO_update_ssa, add
27786         TODO_dump_func.
27787         (pass_update_address_taken): Just use TODO_update_address_taken.
27788         (init_tree_ssa): Do not initialize addressable_vars.
27789         (verify_ssa): Verify new VUSE / VDEF properties.
27790         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
27791         Do not call verify_alias_info.
27792         (delete_tree_ssa): Clear the VUSE, VDEF operands.
27793         Do not free the loaded and stored syms bitmaps.  Reset the escaped
27794         and callused solutions.  Do not free addressable_vars.
27795         Remove memory-tag related code.
27796         (warn_uninitialized_var): Aliases are always available.
27797         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
27798         * lambda-code.c (can_put_in_inner_loop): Adjust.
27799         (can_put_after_inner_loop): Likewise.
27800         (perfect_nestify): Likewise.
27801         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
27802         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
27803         (vectorizable_conversion): Do not mark symbols for renaming.
27804         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
27805         (expand_call_inline): Unlink the calls virtual operands before
27806         replacing it.
27807         (tree_function_versioning): Do not call update_ssa if we are not
27808         updating clones.  Simplify.
27809         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
27810         (propagate_with_phi): Likewise..
27811         * tree-outof-ssa.c (create_temp): Remove memory tag and call
27812         clobber code.  Assert we are not aliased or global.
27813         * tree-flow.h: Include tree-ssa-alias.h
27814         (enum escape_type): Remove.
27815         (struct mem_sym_stats_d): Likewise.
27816         (struct mem_ref_stats_d): Likewise.
27817         (struct gimple_df): Add vop member.  Remove global_var,
27818         call_clobbered_vars, call_used_vars, addressable_vars,
27819         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
27820         escaped and callused members.
27821         (struct ptr_info_def): Remove all members, add points-to solution
27822         member pt.
27823         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
27824         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
27825         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
27826         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
27827         (tree-ssa-alias.o): Likewise.
27828         (toplev.o): Add tree-ssa-alias.h
27829         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
27830         * gimple.c (gimple_set_bb): Fix off-by-one error.
27831         (is_gimple_reg): Do not handle memory tags.
27832         (gimple_copy): Also copy virtual operands.
27833         Delay updating the statement.  Do not reset loaded and stored syms.
27834         (gimple_set_stored_syms): Remove.
27835         (gimple_set_loaded_syms): Likewise.
27836         (gimple_call_copy_skip_args): Copy the virtual operands
27837         and mark the new statement modified.
27838         * tree-ssa-structalias.c (may_alias_p): Remove.
27839         (set_uids_in_ptset): Take the alias set to prune with as
27840         parameter.  Fold in the alias test of may_alias_p.
27841         (compute_points_to_sets): Compute whether a ptr is dereferenced
27842         in a local sbitmap.
27843         (process_constraint): Deal with &ANYTHING on the lhs, reject all
27844         other ADDRESSOF constraints on the lhs.
27845         (get_constraint_for_component_ref): Assert that we don't get
27846         ADDRESSOF constraints from the base of the reference.
27847         Properly generate UNKNOWN_OFFSET for DEREF if needed.
27848         (struct variable_info): Remove collapsed_to member.
27849         (get_varinfo_fc): Remove.
27850         (new_var_info): Do not set collapsed_to.
27851         (dump_constraint): Do not follow cycles.
27852         (dump_constraint_graph): Likewise.
27853         (build_pred_graph): Likewise.
27854         (build_succ_graph): Likewise.
27855         (rewrite_constraints): Likewise.
27856         (do_simple_structure_copy): Remove.
27857         (do_rhs_deref_structure_copy): Remove.
27858         (do_lhs_deref_structure_copy): Remove.
27859         (collapse_rest_of_var): Remove.
27860         (do_structure_copy): Re-implement.
27861         (pta_stats): New global variable.
27862         (dump_pta_stats): New function.
27863         (struct constraint_expr): Make offset signed.
27864         (UNKNOWN_OFFSET): Define special value.
27865         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
27866         (solution_set_expand): New helper function split out from ...
27867         (do_sd_constraint): ... here.
27868         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
27869         (do_ds_constraint): Likewise.
27870         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
27871         and CALLUSED = *CALLUSED.
27872         (set_union_with_increment): Make inc argument signed.
27873         (type_safe): Remove.
27874         (get_constraint_for_ptr_offset): Handle unknown and negative
27875         constant offsets.
27876         (first_vi_for_offset): Handle offsets before start.  Bail
27877         out early for offsets beyond the variable extent.
27878         (first_or_preceding_vi_for_offset): New function.
27879         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
27880         Together with ESCAPED = *ESCAPED this properly computes reachability.
27881         (find_what_var_points_to): New function.
27882         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
27883         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
27884         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
27885         pt_solutions_intersect): New functions.
27886         (compute_call_used_vars): Remove.
27887         (compute_may_aliases): New main entry into PTA computation.
27888         * gimple.h (gimple_p): New typedef.
27889         (struct gimple_statement_base): Remove references_memory_p.
27890         (struct gimple_statement_with_memory_ops_base): Remove
27891         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
27892         members.
27893         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
27894         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
27895         gimple_set_references_memory): Remove.
27896         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
27897         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
27898         New functions.
27899         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
27900         (verify_expr): Allow RESULT_DECL.
27901         (gimple_duplicate_bb): Do not copy virtual operands.
27902         (gimple_duplicate_sese_region): Adjust.
27903         (gimple_duplicate_sese_tail): Likewise.
27904         (mark_virtual_ops_in_region): Remove.
27905         (move_sese_region_to_fn): Do not call it.
27906         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
27907         and pass_simple_dse.
27908         (execute_function_todo): Handle TODO_update_address_taken,
27909         call execute_update_addresses_taken for TODO_rebuild_alias.
27910         (execute_todo): Adjust.
27911         (execute_one_pass): Init dump files early.
27912         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
27913         call-clobbered.
27914         (create_general_new_stmt): Clear vops.
27915         * tree-ssa-reassoc.c (get_rank): Adjust.
27916         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
27917         symbols for renaming.
27918         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
27919         (PARAM_AVG_ALIASED_VOPS): Likewise.
27920         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
27921         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
27922         * tree-ssa-operands.c: Simplify for new virtual operand representation.
27923         (operand_build_cmp, copy_virtual_operands,
27924         create_ssa_artificial_load_stmt, add_to_addressable_set,
27925         gimple_add_to_addresses_taken): Remove public functions.
27926         (unlink_stmt_vdef): New function.
27927
27928 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
27929
27930         * config.gcc (powerpc-*-linux*): Merge variants.
27931
27932 2009-04-02  Chao-ying Fu  <fu@mips.com>
27933             James Grosbach  <james.grosbach@microchip.com>
27934
27935         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
27936         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
27937         cop0_sp_offset.
27938         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
27939         keep_interrupts_masked_p, use_debug_exception_return_p.
27940         (mips_attribute_table): Add interrupt, use_shadow_register_set,
27941         keep_interrupts_masked, use_debug_exception_return.
27942         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
27943         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
27944         New functions.
27945         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
27946         (mips_print_operand): Process COP0 registers to print $0 .. $31
27947         correctly for GAS to process.
27948         (mips_interrupt_extra_call_saved_reg_p): New function.
27949         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
27950         extra registers.
27951         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
27952         (mips_compute_frame_info): Add supports for interrupt context that
27953         includes doubleword accumulators and COP0 registers.
27954         (mips_for_each_saved_acc): New function.
27955         (mips_for_each_saved_gpr_and_fpr): Change the function name from
27956         mips_for_each_saved_reg.
27957         (mips_save_reg): Save accumulators.
27958         (mips_kernel_reg_p): A new for_each_rtx callback.
27959         (mips_expand_prologue): Support interrupt handlers.
27960         (mips_restore_reg): Restore accumulators.
27961         (mips_expand_epilogue): Support interrupt handlers.
27962         (mips_can_use_return_insn): Return false for interrupt handlers.
27963         (mips_epilogue_uses): New function.
27964         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
27965         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
27966         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
27967         cop0_move): New instructions.
27968         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
27969         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
27970         defines.
27971         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
27972         New defines.
27973         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
27974         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
27975         interrupt handlers, we use K0 as the temporary register.
27976         (EPILOGUE_USES): Change to a function call.
27977         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
27978         handlers, we use K0 as the temporary register.
27979
27980         * doc/extend.texi (Function Attributes): Document interrupt,
27981         use_shadow_register_set, keep_interrupts_masked,
27982         use_debug_exception_return for MIPS attributes.
27983
27984 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
27985
27986         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
27987         Remove a number of t-files from tmake_file.
27988         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
27989         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
27990         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
27991         target_prototype, not TARGET_PROTOTYPE.
27992         (LINK_OS_GNU_SPEC): Define.
27993         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
27994         and darwin-ldoubdle.c.
27995
27996 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
27997
27998         PR driver/39293
27999         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
28000         (cpp_options): Ditto.
28001         (default_compilers): Ditto.
28002         (display_help): Ditto.
28003         (process_command): Ditto.
28004         (do_spec_1): Ditto.
28005         (set_input): Use lbasename instead of duplicate code.
28006         (save_temps_prefix): New static for -save-temps=obj.
28007         (save_temps_length): Ditto.
28008
28009         * doc/invoke.texi (-save-temps=obj): Document new variant to
28010         -save-temps switch.
28011
28012 2009-04-02  Jeff Law  <law@redhat.com>
28013
28014         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
28015         variable.
28016
28017 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
28018
28019         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
28020         * configure: Regenerated.
28021
28022 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28023
28024         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
28025         share the argument list.
28026
28027 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28028
28029         Merge
28030
28031         2009-02-12  Diego Novillo  <dnovillo@google.com>
28032
28033         * varpool.c (debug_varpool): New.
28034         * cgraph.h (debug_varpool): Declare.
28035
28036 2009-04-02  Jan Hubicka  <jh@suse.cz>
28037
28038         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
28039         pass.
28040
28041 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
28042
28043         * config/i386/i386.c (ix86_abi): Move initialization to ...
28044         (override_options): Here.
28045
28046 2009-04-02  Christian Bruel  <christian.bruel@st.com>
28047
28048         * config/sh/sh.c (sh_dwarf_register_span): New function.
28049         (TARGET_DWARF_REGISTER_SPAN): Define.
28050         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
28051
28052 2009-04-02  Ira Rosen  <irar@il.ibm.com>
28053
28054         PR tree-optimization/39595
28055         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
28056         interleaved loads group is not  greater than the SLP group size.
28057
28058 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28059
28060         * builtins.c (is_builtin_name): New.
28061         (called_as_built_in): Use is_builtin_name.
28062         * tree.h (is_builtin_name): New.
28063         * varasm.c (incorporeal_function_p): Use is_builtin_name
28064
28065 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
28066
28067         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
28068
28069 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
28070
28071         PR c++/26693
28072         * c-decl.c (clone_underlying_type): Move this ...
28073         * c-common.c (set_underlying_type): ... here.
28074         Also, make sure the function properly sets TYPE_STUB_DECL() on
28075         the newly created typedef variant type.
28076         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
28077         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
28078         points.
28079
28080 2009-04-02  Richard Guenther  <rguenther@suse.de>
28081
28082         PR tree-optimization/37221
28083         * tree-flow.h (degenerate_phi_result): Declare.
28084         * tree-ssa-dom.c (degenerate_phi_result): Export.
28085         * tree-scalar-evolution.c (analyze_initial_condition): If
28086         the initial condition is defined by a degenerate PHI node
28087         use the degenerate value.
28088
28089 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
28090
28091         PR rtl-optimization/39588
28092         * combine.c (merge_outer_ops): Do not set the constant when this
28093         is not necessary.
28094         (simplify_shift_const_1): Do not modify it either in this case.
28095
28096 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
28097
28098         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
28099         tuning is deprecated if -mtune value is set to an Itanium1 variant.
28100
28101 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
28102
28103         PR c/29027
28104         * c-lex.c (interpret_float): Default (no suffix) is double.
28105
28106 2009-04-1  Xinliang David Li  <davidxl@google.com>
28107
28108         * config/i386/i386.c (legitimate_constant_p): Recognize
28109         all one vector constant.
28110
28111 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28112
28113         * config/vax/vax.c: Add #includes to silence warnings.
28114         Change #include order to silence two warnings.
28115
28116 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28117
28118         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
28119         (ASM_SPEC): Pass -k to the assembler for PIC code.
28120
28121 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28122
28123         * config.gcc: Add vax-*-linux* to the switch.
28124         * config/vax/linux.h: New file. (TARGET_VERSION,
28125         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
28126
28127 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28128
28129         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
28130         Use predicate macros instead of GET_CODE() == foo.
28131         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
28132         ashlsi3, rotrsi3, <unnamed>): Likewise.
28133
28134 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28135
28136         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
28137         jbbccihi, jbbccisi): Remova trailing whitespace.
28138         * config/vax/constraints.md: Likewise.
28139         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
28140         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
28141         * config/vax/predicates.md: Likewise.
28142         * config/vax/vax.c (print_operand_address, vax_output_int_move,
28143         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
28144         * config/vax/vax.h: Likewise.
28145         * config/vax/vax.md (nonlocal_goto): Likewise.
28146
28147 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28148
28149         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
28150         (indirectable_address_p, adjacent_operands_p): Add spaces around
28151         braces.
28152         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
28153
28154 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28155
28156         * config/vax/vax.c (legitimate_constant_address_p,
28157         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
28158         index_term_p, reg_plus_index_p, legitimate_address_p,
28159         vax_mode_dependent_address_p): Update comments to match functions
28160         modified by the recent int->bool conversion.
28161
28162 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28163
28164         * config/vax/builtins.md: Update copyright message.
28165         * config/vax/constraints.md: Likewise.
28166         * config/vax/netbsd-elf.h: Likewise.
28167         * config/vax/predicates.md: Likewise.
28168         * config/vax/vax-protos.h: Likewise.
28169         * config/vax/vax.c: Likewise.
28170         * config/vax/vax.h: Likewise.
28171         * config/vax/vax.md: Likewise.
28172         * config/vax/vax.opt: Likewise.
28173
28174 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28175
28176         * config/vax/builtins.md (ffssi2, ffssi2_internal,
28177         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
28178         * config/vax/constraints.md (B, R): Likewise.
28179         * config/vax/predicates.md (external_memory_operand,
28180         nonimmediate_addsub_di_operand): Likewise.
28181         * config/vax/vax.c (vax_output_int_add): Likewise.
28182         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
28183         untyped_call): Likewise.
28184
28185 2009-04-01  Matt Thomas  <matt@3am-software.com>
28186
28187         * config/vax/predicates.md: New file.
28188         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
28189         external_const_operand, nonsymbolic_operand, external_memory_operand,
28190         indirect_memory_operand, indexed_memory_operand,
28191         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
28192         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
28193         predicate.
28194         * config/vax/constraints.md: New file.
28195         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
28196         New constraint.
28197         * config/vax/builtins.md: New file.
28198         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
28199         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
28200         jbbccisi): Define.
28201         * config/vax/vax.opt (mqmath): Add option.
28202         * config/vax/vax.md (isfx): Extend with DI.
28203         (VAXintQH, VAXintQHSD): Define.
28204         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
28205         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
28206         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
28207         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
28208         (movdi): Update constraints and use vax_output_int_move().
28209         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
28210         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
28211         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
28212         nonlocal_goto): New.
28213         (mov<mode>): Extend accepted operand types.
28214         (subdi3_old): Rename from subdi3, change update constraints and use
28215         a new implementation.
28216         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
28217         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
28218         MOVE_RATIO, CLEAR_RATIO): Define.
28219         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
28220         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
28221         (PRINT_OPERAND): Redefine using a function instead of inlined code.
28222         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
28223         (split_quadword_operands): Make static and really allow variable
28224         splitting.
28225         (print_operand_address): Update for PIC generation.
28226         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
28227         indexable_address_p, fixup_mathdi_operand,
28228         vax_expand_addsub_di_operands, adjacent_operands_p): New.
28229         (vax_float_literal, legitimate_constant_p,
28230         indirectable_constant_address_p, index_term_p,
28231         reg_plus_index_p): Return bool instead of int.
28232         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
28233         where needed.
28234         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
28235         generation.
28236         (vax_output_conditional_branch): Indent.
28237         (legitimate_constant_address_p, indirectable_constant_address_p,
28238         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
28239         vax_mode_dependent_address_p): Return bool instead of int, update for
28240         PIC generation.
28241         * config/vax/vax-protos.h (legitimate_constant_address_p,
28242         legitimate_constant_p, legitimate_address_p,
28243         vax_mode_dependent_address_p): Change declaration to bool.
28244         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
28245         vax_expand_addsub_di_operands, vax_output_int_subtract,
28246         vax_output_movmemsi): Declare.
28247         (split_quadword_operands, vax_float_literal): Delete declaration.
28248         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
28249         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
28250         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
28251         ASM_OUTPUT_DWARF_PCREL): Define.
28252         (ASM_SPEC): Change definition to allow PIC generation.
28253
28254 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
28255
28256         * doc/sourcebuild.texi: Update front-end requirements.
28257
28258 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28259
28260         PR target/39226
28261         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
28262         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
28263         (booldi3_internal3): Use boolean_or_operator instead of
28264         boolean_operator.
28265
28266 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
28267
28268         PR c/39605
28269         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
28270         declarator whose size is not an integer constant expression but
28271         folds to an integer constant, then treat it as a constant
28272         subsequently.
28273
28274 2009-04-01  Richard Guenther  <rguenther@suse.de>
28275
28276         * fold-const.c (fold_plusminus_mult_expr): Do not fold
28277         i * 4 + 2 to (i * 2 + 1) * 2.
28278
28279 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28280
28281         PR c/37772
28282         * c-parser.c (c_parser_asm_statement): Skip until close paren and
28283         return if c_parser_asm_string_literal returned NULL.
28284
28285 2009-04-01  Nick Clifton  <nickc@redhat.com>
28286
28287         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
28288         already defined.
28289         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
28290         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
28291         other typedefs to avoid conflicts with libgcc2.c.  Define labels
28292         to gain 16-bit bit-manipulation functions from libgcc2.c and then
28293         include it.
28294         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
28295         to gain 16-bit trapping arithmetic functions from libgcc2.c and
28296         then include it.
28297
28298 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
28299
28300         * varasm.c (default_function_rodata_section): Declare DOT as
28301         const char*.
28302
28303 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
28304             Andrey Galkin  <agalkin@hypercom.com>
28305
28306         PR/39492
28307         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
28308         Make object_name unique for each process.
28309
28310 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28311
28312         PR other/39591
28313         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
28314         addressable variables in the parallel that could go out of scope while
28315         running queued tasks.
28316
28317 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
28318
28319         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
28320         (CASE_VALUES_THRESHOLD): Redefine.
28321         * config/avr/avr.c (avr_override_options): Remove initialization of
28322         avr_case_values_threshold variable.
28323         (avr_case_values_threshold): Remove variable. Add new function.
28324         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
28325         * config/avr/avr.opt (mno-tablejump): Remove option.
28326         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
28327
28328 2009-04-01  DJ Delorie  <dj@redhat.com>
28329
28330         * varasm.c (default_function_rodata_section): Don't assume
28331         anything about where the first '.' in the section name is.
28332
28333 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
28334
28335         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
28336         rs6000_emit_stack_tie.
28337
28338 2009-03-31  Ian Lance Taylor  <iant@google.com>
28339
28340         * tree-eh.c (tree_remove_unreachable_handlers): Compare
28341         gimple_code with GIMPLE_RESX, not RESX.
28342
28343 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28344
28345         * c-common.c (c_get_ident): New.
28346         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
28347
28348 2009-04-01  Ben Elliston  <bje@au.ibm.com>
28349
28350         * config/rs6000/sysv4.opt (msdata): Improve option description.
28351
28352 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
28353
28354         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
28355         (divdf3_internal_lat): Remove.
28356         (divxf3_internal_lat): Remove.
28357         (divxf3_internal_thr): Remove.
28358         (divxf): Use divxf3_internal.
28359         * config/ia64/div.md (divsf3_internal_lat): New.
28360         (divdf3_internal_lat): New.
28361         (divxf3_internal): New.
28362
28363 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28364
28365         PR c/448
28366         * Makefile.in (USE_GCC_STDINT): Define.
28367         (stmp-int-hdrs): Install stdint.h if applicable.
28368         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
28369         if known.
28370         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
28371         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
28372         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
28373         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
28374         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
28375         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
28376         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
28377         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
28378         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
28379         (c_common_nodes_and_builtins): Initialize
28380         underlying_wchar_type_node.  Do not initialize
28381         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
28382         nodes for new types.
28383         (c_stddef_cpp_builtins): Define macros for new types.
28384         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
28385         Remove.
28386         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
28387         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
28388         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
28389         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
28390         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
28391         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
28392         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
28393         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
28394         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
28395         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
28396         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
28397         int16_type_node, int32_type_node, int64_type_node,
28398         uint8_type_node, uint16_type_node, c_uint32_type_node,
28399         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
28400         int_least32_type_node, int_least64_type_node,
28401         uint_least8_type_node, uint_least16_type_node,
28402         uint_least32_type_node, uint_least64_type_node,
28403         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
28404         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
28405         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
28406         uintptr_type_node): Define.
28407         * c-cppbuiltin.c (builtin_define_constants,
28408         builtin_define_type_minmax): New.
28409         (builtin_define_stdint_macros): Define more macros.
28410         (c_cpp_builtins): Define more limit macros.
28411         (type_suffix): New.
28412         (builtin_define_type_max): Define in terms of
28413         builtin_define_type_minmax.  Remove is_long parameter.  All
28414         callers changed.
28415         * config.gcc (use_gcc_stdint): Define.
28416         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
28417         Add newlib-stdint.h for generic targets.
28418         * config/glibc-stdint.h, config/newlib-stdint.h,
28419         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
28420         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
28421         * config/score/score.h (UINTPTR_TYPE): Define.
28422         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
28423         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
28424         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
28425         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
28426         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
28427         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
28428         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
28429         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
28430         * config/spu/spu.h (STDINT_LONG32): Define.
28431         * configure.ac (use_gcc_stdint): Substitute.
28432         * configure: Regenerate.
28433         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
28434         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
28435         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
28436         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
28437         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
28438         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
28439         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
28440         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
28441         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
28442         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
28443         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
28444         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
28445         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
28446         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
28447         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
28448         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
28449         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
28450         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
28451         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
28452         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
28453         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
28454         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
28455         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
28456         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
28457         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
28458         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
28459         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
28460         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
28461         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
28462
28463 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
28464
28465         * loop-iv.c (suitable_set_for_replacement): Renamed from
28466         simplify_using_assignment; changed to return bool and to accept new
28467         args DEST and SRC.  Return true iff we find a source/destination pair
28468         that can be used to make a replacement, and fill SRC and DEST if so.
28469         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
28470         changed.
28471         (simplify_using_initial_values): Deal with altered regs here and track
28472         more precisely the effect they have on the validity of our expression.
28473
28474         * loop-iv.c (simplify_using_condition): A condition of the form
28475         (EQ REG CONST) can be used to simply make a substitution.
28476         (simplify_using_initial_values): Keep track of conditions we have seen
28477         and keep using them to simplify new expressions, while applying the
28478         same substitutions to them as to the expression.
28479
28480         * simplify-rtx.c (simplify_relational_operation_1): Simplify
28481         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
28482         GEU/LTU reversed.
28483
28484         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
28485         changed.  Use this when trying to improve the upper bound.
28486         Generate the comparison by using simplify_gen_relational.
28487
28488         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
28489
28490         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
28491         functions.
28492         (simplify_using_assignment, simplify_using_initial_values): Call
28493         replace_in_expr to make replacements.  Call replace_single_def_regs
28494         once on the initial version of the expression.
28495
28496 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
28497
28498         PR target/27237
28499         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
28500
28501 2009-03-31  Richard Guenther  <rguenther@suse.de>
28502
28503         PR middle-end/31029
28504         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
28505         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
28506
28507 2009-03-31  Richard Guenther  <rguenther@suse.de>
28508
28509         * tree.h (div_if_zero_remainder): Declare.
28510         * fold-const.c (div_if_zero_remainder): Export.
28511         * tree-ssa-forwprop.c
28512         (forward_propagate_addr_into_variable_array_index): Handle
28513         constant array index addition outside of the variable index.
28514
28515 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28516
28517         PR target/39592
28518         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
28519         define_splits, floatunssi<mode>2): Require x87 conversions from
28520         DImode to be permitted.
28521
28522 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28523
28524         PR preprocessor/15638
28525         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
28526
28527 2009-03-31  Richard Guenther  <rguenther@suse.de>
28528
28529         PR middle-end/23401
28530         PR middle-end/27810
28531         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
28532         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
28533         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
28534         a separate statement.
28535         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
28536         (lookup_tmp_var): Likewise.
28537         (is_gimple_formal_tmp_or_call_rhs): Remove.
28538         (is_gimple_reg_or_call_rhs): Rename to ...
28539         (is_gimple_reg_rhs_or_call): ... this.
28540         (is_gimple_mem_or_call_rhs): Rename to ...
28541         (is_gimple_mem_rhs_or_call): ... this.
28542         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
28543         DECL_GIMPLE_REG_P only if is_formal is true.
28544         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
28545         for non-proper post-modify expression gimplification.
28546         (gimplify_self_mod_expr): For post-modify expressions gimplify
28547         the lvalue to a minimal lvalue.
28548         (rhs_predicate_for): Remove formal temp case.
28549         (gimplify_modify_expr_rhs): Likewise.
28550         (gimplify_addr_expr): Use is_gimple_reg.
28551         (gimplify_expr): Remove formal temp cases.
28552         (gimple_regimplify_operands): Likewise.
28553         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
28554         and FILTER_EXPR like constants.
28555         * gimple.c (walk_gimple_op): Fix val_only initialization, use
28556         is_gimple_reg.
28557         (is_gimple_formal_tmp_rhs): Remove.
28558         (is_gimple_reg_rhs): Remove special casing.
28559         (is_gimple_mem_rhs): Fix.
28560         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
28561         (is_gimple_formal_tmp_var): Remove.
28562         (is_gimple_formal_tmp_reg): Likewise.
28563         (is_gimple_min_lval): Allow invariant component ref parts.
28564         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
28565         is_gimple_formal_tmp_reg): Remove declarations.
28566         * tree-cfg.c (verify_expr): Verify that variables with address
28567         taken do not have DECL_GIMPLE_REG_P set.
28568         * tree-mudflap.c (mf_build_check_statement_for): Use
28569         force_gimple_operand instead of gimplify_expr.
28570
28571 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
28572
28573         * modulo-sched.c (sms_schedule_by_order): Pass the actual
28574         schedulable rows to compute_split_row.
28575
28576 2009-03-31  Ben Elliston  <bje@au.ibm.com>
28577
28578         PR target/31635
28579         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
28580         OPT_mvrsave.
28581
28582 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
28583
28584         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
28585         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
28586         * configure: Regenerate.
28587         * config.in: Regenerate.
28588         * config/rs6000/rs6000.opt (mtls-markers): Add.
28589         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
28590         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
28591         (tls_ld_aix, tls_ld_sysv): Likewise.
28592         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
28593         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
28594
28595 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
28596
28597         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
28598
28599 2009-03-30  Jan Hubicka  <jh@suse.cz>
28600
28601         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
28602         out of RESX.
28603         (tree_remove_unreachable_handlers): Cleanup EH predecestor
28604         detection and label handling.
28605
28606 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28607
28608         * ira-int.h (ira_allocno): Rename left_conflicts_num to
28609         left_conflicts_size.
28610         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
28611         ALLOCNO_LEFT_CONFLICTS_SIZE.
28612
28613         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
28614         remove_allocno_from_bucket_and_push,
28615         allocno_spill_priority_compare, push_allocnos_to_stack,
28616         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
28617         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
28618         (setup_allocno_left_conflicts_num): Ditto.  Rename to
28619         setup_allocno_left_conflicts_size.
28620         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
28621         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
28622         setup_allocno_left_conflicts_size instead of
28623         setup_allocno_left_conflicts_num.
28624
28625         * ira-build.c (ira_create_allocno): Use
28626         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
28627         ALLOCNO_LEFT_CONFLICTS_NUM.
28628
28629 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28630
28631         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
28632         instead of DF_LR_OUT.
28633
28634         * ira-lives.c (process_bb_node_lives): Ditto.
28635
28636         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
28637         instead of DF_LR_{OUT,IN}.
28638
28639         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
28640
28641         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
28642
28643 2009-03-30  Jan Hubicka  <jh@suse.cz>
28644
28645         * except.c (label_to_region_map): Fix thinko.
28646
28647 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
28648
28649         PR middle-end/38237
28650         * tree.h (tree_find_value): New declaration.
28651         * tree.c (tree_find_value): New function.
28652         * varasm.c (assemble_external): Avoid duplicate entries on lists.
28653
28654 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
28655
28656         PR debug/39563
28657         * c-decl.c (struct c_binding): Add locus field.
28658         (bind): Add locus argument, set locus field from it.
28659         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
28660         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
28661         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
28662         implicitly_declare, undeclared_variable, lookup_label,
28663         declare_label, c_make_fname_decl, c_builtin_function,
28664         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
28665         bind callers.
28666
28667 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
28668
28669         PR target/38781
28670         * config/i386/i386.c (classify_argument): Check total size of
28671         structure.
28672
28673 2009-03-30  Martin Jambor  <mjambor@suse.cz>
28674
28675         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
28676         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
28677         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
28678         respectively.
28679
28680         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
28681         seen_variable_array_ref while also traversing a union.
28682
28683         * tree-inline.c (optimize_inline_calls): Do not call
28684         cgraph_node_remove_callees.
28685         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
28686         (pass_remove_cgraph_callee_edges): New variable.
28687         * passes.c (init_optimization_passes): Add
28688         pass_remove_cgraph_callee_edges after early inlining and before all
28689         late intraprocedural passes.
28690
28691         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
28692
28693 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28694
28695         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
28696         Fix typos in names.
28697
28698 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28699
28700         * combine.c (simplify_comparison): Use have_insn_for.
28701         * dojump.c (do_jump): Likewise.
28702
28703 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28704
28705         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
28706         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
28707         sparc_compare_op0 like sparc_compare_emitted used to be handled.
28708         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
28709         instead of sparc_compare_emitted.
28710         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
28711         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
28712         instead of sparc_compare_emitted.
28713
28714 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28715
28716         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
28717         enter/exit cfglayout mode.
28718         (pass_partition_block): Require it.
28719         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
28720         (combine_instructions): Track basic blocks instead of labels.
28721         (update_cfg_for_uncondjump): New.
28722         (try_combine): Use it.  Update jumps after rescanning.
28723         (pass_combine): Require PROP_cfglayout.
28724         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
28725
28726 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28727
28728         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
28729         Provide/destroy PROP_cfglayout respectively.
28730         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
28731         * tree-pass.h (PROP_cfglayout): New.
28732
28733 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28734
28735         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
28736         fold_convert_const_fixed_from_fixed,
28737         fold_convert_const_fixed_from_int,
28738         fold_convert_const_fixed_from_real, fold_negate_const): Do not
28739         set TREE_CONSTANT_OVERFLOW.
28740         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
28741         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
28742
28743 2009-03-30  Ira Rosen  <irar@il.ibm.com>
28744
28745         * tree-vect-loop-manip.c: New file.
28746         * tree-vectorizer.c: Update documentation and included files.
28747         (vect_loop_location): Make extern.
28748         (rename_use_op): Move to tree-vect-loop-manip.c
28749         (rename_variables_in_bb, rename_variables_in_loop,
28750         slpeel_update_phis_for_duplicate_loop,
28751         slpeel_update_phi_nodes_for_guard1,
28752         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
28753         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
28754         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
28755         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
28756         find_loop_location): Likewise.
28757         (new_stmt_vec_info): Move to tree-vect-stmts.c.
28758         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
28759         get_vectype_for_scalar_type, vect_is_simple_use,
28760         supportable_widening_operation, supportable_narrowing_operation):
28761         Likewise.
28762         (bb_in_loop_p): Move to tree-vect-loop.c.
28763         (new_loop_vec_info, destroy_loop_vec_info,
28764         reduction_code_for_scalar_code, report_vect_op,
28765         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
28766         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
28767         (vect_supportable_dr_alignment): Likewise.
28768         * tree-vectorizer.h (tree-data-ref.h): Include.
28769         (vect_loop_location): Declare.
28770         Reorganize function declarations according to the new file structure.
28771         * tree-vect-loop.c: New file.
28772         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
28773         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
28774         * tree-vect-data-refs.c: New file.
28775         * tree-vect-patterns.c (timevar.h): Don't include.
28776         * tree-vect-stmts.c: New file.
28777         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
28778         tree-vect-slp.c, tree-vect-loop.c.
28779         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
28780         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
28781         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
28782         (tree-vect-analyze.o): Remove.
28783         (tree-vect-transform.o): Likewise.
28784         (tree-vect-data-refs.o): Add rule.
28785         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
28786         tree-vect-slp.o): Likewise.
28787         (tree-vect-patterns.o): Remove redundant dependencies.
28788         (tree-vectorizer.o): Likewise.
28789         * tree-vect-slp.c: New file.
28790
28791 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28792
28793         * optc-gen.awk: Warn if an option flag has multiple different
28794         help strings.
28795
28796 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
28797
28798         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
28799         -floop-block): Document dependences on PPL, CLooG and Graphite.
28800
28801 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
28802
28803         PR rtl-optimization/323
28804         * c-common.c (c_fully_fold, convert_and_check,
28805         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
28806         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
28807         * c-common.def (EXCESS_PRECISION_EXPR): New.
28808         * c-cppbuiltin.c (builtin_define_float_constants): Define
28809         constants with enough digits for long double.
28810         * c-lex.c (interpret_float): Interpret constant with excess
28811         precision where appropriate.
28812         * c-opts.c (c_common_post_options): Set
28813         flag_excess_precision_cmdline.  Give an error for
28814         -fexcess-precision=standard for C++ for processors where the
28815         option is significant.
28816         * c-parser.c (c_parser_conditional_expression): Handle excess
28817         precision in condition.
28818         * c-typeck.c (convert_arguments): Handle arguments with excess
28819         precision.
28820         (build_unary_op): Move excess precision outside operation.
28821         (build_conditional_expr): Likewise.
28822         (build_compound_expr): Likewise.
28823         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
28824         (build_modify_expr): Handle excess precision in RHS.
28825         (convert_for_assignment): Handle excess precision in converted
28826         value.
28827         (digest_init, output_init_element, process_init_element): Handle
28828         excess precision in initializer.
28829         (c_finish_return): Handle excess precision in return value.
28830         (build_binary_op): Handle excess precision in operands and add
28831         excess precision as needed for operation.
28832         * common.opt (-fexcess-precision=): New option.
28833         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
28834         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
28835         For standard excess precision, output explicit conversion to and
28836         truncation from XFmode.
28837         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
28838         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
28839         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
28840         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
28841         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
28842         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
28843         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
28844         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
28845         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
28846         define_splits, sqrt<mode>2): Disable where appropriate for
28847         standard excess precision.
28848         * convert.c (convert_to_real): Do not shorten arithmetic to type
28849         for which excess precision would be used.
28850         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
28851         * doc/invoke.texi (-fexcess-precision=): Document option.
28852         (-mfpmath=): Correct index entry.
28853         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
28854         flag_excess_precision): New.
28855         * langhooks.c (lhd_post_options): Set
28856         flag_excess_precision_cmdline.
28857         * opts.c (common_handle_option): Handle -fexcess-precision=.
28858         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
28859         init_excess_precision): New.
28860         (lang_dependent_init_target): Call init_excess_precision.
28861         * tree.c (excess_precision_type): New.
28862         * tree.h (excess_precision_type): Declare.
28863
28864 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
28865
28866         PR c/35235
28867         * c-typeck.c (build_component_ref): Do not copy qualifiers from
28868         non-lvalue to component.
28869
28870 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
28871
28872         PR preprocessor/34695
28873         * Makefile.in (c-opts.o): Depend on c-tree.h.
28874         * c-common.c: Move down include of diagnostic.h.
28875         (done_lexing, c_cpp_error): New.
28876         * c-common.h (done_lexing): Declare.
28877         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
28878         (parse_in).
28879         * c-opts.c: Include c-tree.h.
28880         (c_common_init_options): Set preprocessor error callback.
28881         (c_common_handle_option): Do not set preprocessor
28882         inhibit_warnings, warnings_are_errors, warn_system_headers,
28883         pedantic_errors or inhibit_warnings flags.
28884         (c_common_post_options): Do not check cpp_errors (parse_in).
28885         (c_common_finish): Do not output dependencies if there were
28886         errors.  Do not check return value of cpp_finish.
28887         * c-ppoutput.c (pp_file_change): Set input_location.
28888         * c-tree.h (c_cpp_error): Declare.
28889         * diagnostic.c (diagnostic_set_info_translated): Also initialize
28890         override_column.
28891         (diagnostic_build_prefix): Check override_column.
28892         * diagnostic.h (diagnostic_info): Add override_column field.
28893         (diagnostic_override_column): Define.
28894
28895 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
28896
28897         * c-common.c (c_expand_expr, c_staticp): Remove.
28898         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
28899         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
28900         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
28901         * c-gimplify.c (gimplify_compound_literal_expr,
28902         optimize_compound_literals_in_ctor): Remove.
28903         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
28904         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
28905         * c-semantics.c (emit_local_var): Remove.
28906
28907         * langhooks-def.h (lhd_expand_expr): Remove.
28908         * langhooks.c (lhd_expand_expr): Remove.
28909         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
28910
28911         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
28912         handling from c-semantics.c; don't call into langhook.
28913         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
28914         * gimplify.c (gimplify_compound_literal_expr,
28915         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
28916         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
28917         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
28918         as was done in c-gimplify.c.
28919         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
28920         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
28921         Move from c-common.h.
28922         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
28923
28924         * tree.c (staticp): Do not call langhook.
28925         * langhooks.c (lhd_staticp): Delete.
28926         * langhooks-def.h (lhd_staticp): Delete prototype.
28927         (LANG_HOOKS_STATICP): Delete.
28928         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
28929
28930         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
28931         instead of DECL_STMTs.
28932
28933 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
28934
28935         PR c/456
28936         PR c/5675
28937         PR c/19976
28938         PR c/29116
28939         PR c/31871
28940         PR c/35198
28941         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
28942         void_type_node.
28943         (fold_call_expr): Return a NOP_EXPR from folding rather than the
28944         contained expression.
28945         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
28946         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
28947         conditional expressions for C.
28948         (decl_constant_value_for_optimization): Move from
28949         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
28950         whether optimizing and that the expression is a VAR_DECL not of
28951         array type instead of doing such checks in the caller.  Do not
28952         check pedantic.  Call gcc_unreachable for C++.
28953         * c-common.def (C_MAYBE_CONST_EXPR): New.
28954         * c-common.h (c_fully_fold, c_save_expr,
28955         decl_constant_value_for_optimization): New prototypes.
28956         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
28957         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
28958         EXPR_INT_CONST_OPERANDS): Define.
28959         * c-convert.c (convert): Strip nops from expression.
28960         * c-decl.c (groktypename): Take extra parameters expr and
28961         expr_const_operands.  Update call to grokdeclarator.
28962         (start_decl): Update call to grokdeclarator.  Add statement for
28963         expressions used in type of decl.
28964         (grokparm): Update call to grokdeclarator.
28965         (push_parm_decl): Update call to grokdeclarator.
28966         (build_compound_literal): Add parameter non_const and build a
28967         C_MAYBE_COSNT_EXPR if applicable.
28968         (grokdeclarator): Take extra parameters expr and
28969         expr_const_operands.  Track expressions used in declaration
28970         specifiers and declarators.  Fold array sizes and track whether
28971         they are constant expressions and whether they are integer
28972         constant expressions.
28973         (parser_xref_tag): Set expr and expr_const_operands fields in
28974         return value.
28975         (grokfield): Update call to grokdeclarator.
28976         (start_function): Update call to grokdeclarator.
28977         (build_null_declspecs): Set expr and expr_const_operands fields in
28978         return value.
28979         (declspecs_add_type): Handle expressions in typeof specifiers.
28980         * c-parser.c (c_parser_declspecs): Set expr and
28981         expr_const_operands fields for declaration specifiers.
28982         (c_parser_enum_specifier): Likewise.
28983         (c_parser_struct_or_union_specifier): Likewise.
28984         (c_parser_typeof_specifier): Likewise.  Update call to
28985         groktypename.  Fold expression as needed.  Return expressions with
28986         type instead of adding statements.
28987         (c_parser_attributes): Update calls to c_parser_expr_list.
28988         (c_parser_statement_after_labels): Fold expression before passing
28989         to objc_build_throw_stmt.
28990         (c_parser_condition): Fold expression.
28991         (c_parser_asm_operands): Fold expression.
28992         (c_parser_conditional_expression): Use c_save_expr.  Update call
28993         to build_conditional_expr.
28994         (c_parser_alignof_expression): Update call to groktypename.
28995         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
28996         original_code.  Fold expression argument of va_arg.  Create
28997         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
28998         argument to va_arg.  Update calls to groktypename.  Fold array
28999         index for offsetof.  Verify that first argument to
29000         __builtin_choose_expr has integer type.
29001         (c_parser_postfix_expression_after_paren_type): Update calls to
29002         groktypename and build_compound_literal.  Handle expressions with
29003         side effects in type name.
29004         (c_parser_postfix_expression_after_primary): Update call to
29005         c_parser_expr_list.  Set original_code for calls to
29006         __builtin_constant_p.
29007         (c_parser_expr_list): Take extra parameter fold_p.  Fold
29008         expressions if requested.
29009         (c_parser_objc_type_name): Update call to groktypename.
29010         (c_parser_objc_synchronized_statement): Fold expression.
29011         (c_parser_objc_receiver): Fold expression.
29012         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
29013         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
29014         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
29015         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
29016         (struct c_typespec): Add elements expr and expr_const_operands.
29017         (struct c_declspecs): Add elements expr and expr_const_operands.
29018         (groktypename, build_conditional_expr, build_compound_literal):
29019         Update prototypes.
29020         (in_late_binary_op): Declare.
29021         * c-typeck.c (note_integer_operands): New function.
29022         (in_late_binary_op): New variable.
29023         (decl_constant_value_for_broken_optimization): Move to c-common.c
29024         and rename to decl_constant_value_for_optimization.
29025         (default_function_array_conversion): Do not strip nops.
29026         (default_conversion): Do not call
29027         decl_constant_value_for_broken_optimization.
29028         (build_array_ref): Do not fold result.
29029         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
29030         result when operand is a VLA.
29031         (c_expr_sizeof_type): Update call to groktypename.  Handle
29032         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
29033         result when operand names a VLA type.
29034         (build_function_call): Update call to build_compound_literal.
29035         Only fold result for calls to __builtin_* functions.  Strip
29036         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
29037         the function designator.
29038         (convert_arguments): Fold arguments.  Update call to
29039         convert_for_assignment.
29040         (build_unary_op): Handle increment and decrement of
29041         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
29042         decrement earlier.  Fold operand of increment and decrement.
29043         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
29044         built for integer operand.  Wrap returns that are INTEGER_CSTs
29045         without being integer constant expressions or that have integer
29046         constant operands without being INTEGER_CSTs.
29047         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
29048         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
29049         result is an integer constant expression or can be used in
29050         unevaluated parts of one and avoid folding and wrap as
29051         appropriate.  Fold operands before possibly doing -Wsign-compare
29052         warnings.
29053         (build_compound_expr): Wrap result for C99 if operands can be used
29054         in integer constant expressions.
29055         (build_c_cast): Update call to digest_init.  Do not ignore
29056         overflow from casting floating-point constants to integers.  Wrap
29057         results that could be confused with integer constant expressions,
29058         null pointer constants or floating-point constants.
29059         (c_cast_expr): Update call to groktypename.  Handle expressions
29060         included in type name.
29061         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
29062         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
29063         Update calls to convert_for_assignment.
29064         (convert_for_assignment): Take new parameter
29065         null_pointer_constant.  Do not strip nops or call
29066         decl_constant_value_for_broken_optimization.  Set
29067         in_late_binary_op for conversions to boolean.
29068         (store_init_value): Update call to digest_init.
29069         (digest_init): Take new parameter null_pointer_constant.  Do not
29070         call decl_constant_value_for_broken_optimization.  pedwarn for
29071         initializers not constant expressions.  Update calls to
29072         convert_for_assignment.
29073         (constructor_nonconst): New.
29074         (struct constructor_stack): Add nonconst element.
29075         (really_start_incremental_init, push_init_level, pop_init_level):
29076         Handle constructor_nonconst and nonconst element.
29077         (set_init_index): Call constant_expression_warning for array
29078         designators.
29079         (output_init_element): Fold value.  Set constructor_nonconst as
29080         applicable.  pedwarn for initializers not constant expressions.
29081         Update call to digest_init.  Call constant_expression_warning
29082         where constant initializers are required.
29083         (process_init_element): Use c_save_expr.
29084         (c_finish_goto_ptr): Fold expression.
29085         (c_finish_return): Fold return value.  Update call to
29086         convert_for_assignment.
29087         (c_start_case): Fold switch expression.
29088         (c_process_expr_stmt): Fold expression.
29089         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
29090         ensure statement expression is not evaluated in constant expression.
29091         (build_binary_op): Track whether results are integer constant
29092         expressions or may occur in such, disable folding and wrap results
29093         as applicable.  Fold operands for -Wsign-compare warnings unless
29094         in_late_binary_op.
29095         (c_objc_common_truthvalue_conversion): Handle results folded to
29096         integer constants that are not integer constant expressions.
29097         * doc/extend.texi: Document when typeof operands are evaluated,
29098         that condition of __builtin_choose_expr is an integer constant
29099         expression, and more about use of __builtin_constant_p in
29100         initializers.
29101
29102 2009-03-29  Richard Guenther  <rguenther@suse.de>
29103
29104         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
29105         propagate addresses of array references.
29106
29107 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
29108
29109         * regmove.c (perhaps_ends_bb_p): Remove.
29110         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
29111         from INSN and check that the main loop stays within that basic block.
29112         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
29113         (regmove_forward_pass): Split out from regmove_optimize.  Use
29114         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
29115         (regmove_backward_pass): Split out from regmove_optimize.  Use
29116         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
29117         (regmove_optimize): Simplify.
29118
29119 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
29120
29121         PR target/39545
29122         * config/i386/i386.c (classify_argument): Ignore flexible array
29123         member in struct and warn ABI change.
29124
29125 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
29126
29127         * config/i386/i386-protos.h (ix86_agi_dependent): New.
29128
29129         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
29130         (ix86_adjust_cost): Updated.
29131
29132 2009-03-29  Jan Hubicka  <jh@suse.cz>
29133
29134         PR middle-end/28850
29135         * tree-pass.h (pass_cleanup_eh): New function.
29136         (remove_unreachable_regions): Break code handling RTL
29137         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
29138         that can not be reached by runtime.
29139         (can_be_reached_by_runtime): New function.
29140         (label_to_region_map): New function.
29141         (num_eh_regions): New function.
29142         (rtl_remove_unreachable_regions): New function.
29143         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
29144         (remove_eh_region): New function.
29145         * except.h: Include sbitmap and vecprim.
29146         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
29147         num_eh_regions): Declare.
29148         * passes.c (init_optimization_passes): Schedule cleanup_eh.
29149         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
29150         * tree-eh.c (tree_remove_unreachable_handlers): New function.
29151         (tree_empty_eh_handler_p): New function.
29152         (cleanup_empty_eh): New function.
29153         (cleanup_eh): New function.
29154         (pass_cleanup_eh): New function.
29155
29156 2009-03-29  Jan Hubicka  <jh@suse.cz>
29157
29158         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
29159         for removed regions.
29160
29161 2009-03-29  Jan Hubicka  <jh@suse.cz>
29162
29163         * except.c (dump_eh_tree): Dump all datastructures.
29164
29165 2009-03-29  Jan Hubicka  <jh@suse.cz>
29166
29167         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
29168         (duplicate_eh_regions_1): Likewise.
29169         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
29170         vector; call EH verification.
29171         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
29172         Be ready for region being removed.
29173
29174 2009-03-29  Jan Hubicka  <jh@suse.cz>
29175
29176         * bitmap.c (bitmap_last_set_bit): New function.
29177         * bitmap.h (bitmap_last_set_bit): Declare.
29178
29179 2009-03-29  David Ayers  <ayers@fsfe.org>
29180
29181         PR objc/27377
29182         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
29183         by calling objc_compare_types and surpress warnings about
29184         incompatible C pointers that are compatible ObjC pointers.
29185
29186 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
29187
29188         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
29189         call initialize_inline_failed.
29190         (initialize_inline_failed): Move it from here ...
29191         * cgraph.c (initialize_inline_failed): ... to here.
29192         (cgraph_create_edge): Call initialize_inline_failed rather than
29193         setting inline_failed directly.
29194
29195 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29196
29197         PR target/32542
29198         * sysv4.opt (msdata): Improve comment.
29199         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
29200         * sysv4.h (SVR4_ASM_SPEC): Likewise.
29201
29202 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29203
29204         PR target/30451
29205         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
29206         load and store attributes.
29207
29208 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29209
29210         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
29211         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
29212         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
29213         * doc/extend.texi (X86 Built-in Functions): Add index entries for
29214         __builtin_infq and __builtin_huge_valq.
29215
29216 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
29217
29218         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
29219         atmega8m1 devices.
29220         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
29221         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
29222
29223 2009-03-28  Xinliang David Li  <davidxl@google.com>
29224
29225         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
29226         (do_dbg_cnt): New function.
29227
29228 2009-03-28  Jan Hubicka  <jh@suse.cz>
29229
29230         Merge from pretty-ipa:
29231
29232         2009-03-27  Jan Hubicka  <jh@suse.cz>
29233
29234         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
29235         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
29236         * passes.c (function_called_by_processed_nodes_p): New.
29237         * ipa-pure-const.c (check_call): Fix handling of operands.
29238         (analyze_function): Dump debug output for skipped bodies.
29239         (local_pure_const): Use function_called_by_processed_nodes_p.
29240         * dwarf2out.c (reference_to_unused): Use output.
29241         * passes.c (do_per_function_toporder): Likewise.
29242
29243         2008-11-12  Jan Hubicka  <jh@suse.cz>
29244
29245         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
29246         * ipa-pure-const.c (funct_state_d): Add can throw field; make
29247         state_set_in_source enum
29248         (check_decl): Ignore memory tags; do not set fake looping flags;
29249         dump diagnostics.
29250         (check_operand, check_tree, check_rhs_var, check_lhs_var,
29251         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
29252         (check_call, analyze_function): Rewrite.
29253         (check_stmt): New.
29254         (add_new_function): Update call of analyze_function.
29255         (generate_summary): Add call of analyze_function.
29256         (propagate): Propagate can_throw; handle state_set_in_source correctly.
29257         (local_pure_const): New function.
29258         (pass_local_pure_const): New pass.
29259         * ipa-inline.c (inline_transform): Set after_inlining.
29260         * tree-eh.c (stmt_can_throw_external): New.
29261         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
29262         work with aliasing built.
29263         * tree-flow.h (stmt_can_throw_external): New.
29264         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
29265         and local pure/const pass in early and late optimization queue.
29266
29267 2009-03-28  Martin Jambor  <mjambor@suse.cz>
29268
29269         * fold-const.c (get_pointer_modulus_and_residue): New parameter
29270         allow_func_align.
29271         (fold_binary): Allow function decl aligment consideration is the
29272         second argument is integer constant one.
29273         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
29274         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
29275         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
29276
29277 2009-03-28  Jan Hubicka  <jh@suse.cz>
29278
29279         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
29280         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
29281         * function.h (rtl_data): Add nothrow flag.
29282         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
29283         set DECL_NOTHROW for AVAILABLE functions.
29284
29285 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
29286
29287         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
29288         following vector keyword has expansion starting with pixel or bool
29289         keyword, expand vector to __vector and pixel or bool to __pixel or
29290         __bool.
29291
29292         PR c++/39554
29293         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
29294         warn_if_disallowed_function_p): Removed.
29295         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
29296         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
29297         warning_if_disallowed_function_p.
29298         * flags.h (warn_if_disallowed_function_p,
29299         warn_disallowed_functions): Removed.
29300         * common.opt (Wdisallowed-function-list=): Removed.
29301         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
29302
29303 2009-03-28  Richard Guenther  <rguenther@suse.de>
29304
29305         PR tree-optimization/38723
29306         * tree-ssa-pre.c (compute_avail): Add all default definitions to
29307         the entry block.
29308
29309 2009-03-28  Jan Hubicka  <jh@suse.cz>
29310
29311         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
29312         test introduced by my previous patch.
29313
29314 2009-03-28  Richard Guenther  <rguenther@suse.de>
29315
29316         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
29317         the PHIs value undefined.
29318
29319 2009-03-28  Jan Hubicka  <jh@suse.cz>
29320
29321         * tree-pass.h (pass_fixup_cfg): New pass.
29322         * ipa-inline.c (inline_transform): Set
29323         always_inline_functions_inlined/after_inlining.
29324         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
29325         (pass_fixup_cfg): New pass.
29326         * passes.c (init_optimization_passes): Add fixup_cfg.
29327
29328 2009-03-28  Richard Guenther  <rguenther@suse.de>
29329
29330         PR tree-optimization/38458
29331         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
29332         argument use the arguments copy-of value.
29333
29334 2009-03-28  Richard Guenther  <rguenther@suse.de>
29335
29336         PR tree-optimization/38180
29337         * tree-ssa-ccp.c (get_default_value): Simplify.
29338         (likely_value): Likewise.
29339         (surely_varying_stmt_p): Properly handle VOP case.
29340         (ccp_initialize): Likewise.
29341         (ccp_fold): Handle propagating through *&.
29342         (fold_const_aggregate_ref): Also handle decls.
29343
29344 2009-03-28  Jan Hubicka  <jh@suse.cz>
29345
29346         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
29347         * cgraph.h (cgraph_node): Likewise.
29348         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
29349         (cgraph_reset_node): Use process flag.
29350         (cgraph_mark_functions_to_output): Likewise.
29351         (cgraph_expand_function): Likewise.
29352         (cgraph_expand_all_functions): Likewise.
29353         (cgraph_output_in_order): Likewise.
29354         * dwarf2out.c (reference_to_unused): Likewise.
29355         * passes.c do_per_function_toporder): Likewise.
29356
29357 2009-03-28  Jan Hubicka  <jh@suse.cz>
29358
29359         Bring from lto-branch:
29360
29361         2008-09-03  Doug Kwan  <dougkwan@google.com>
29362
29363         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
29364         enums instead of reason strings.
29365         * cgraph.c (cgraph_create_edge): Same.
29366         (cgraph_inline_failed_string): New function.
29367         * cgraph.h (cgraph_inline_failed_t): New enum type.
29368         (cgraph_inline_failed_string): New prototype.
29369         (struct cgraph_edge): Change type of INLINED_FAILED from constant
29370         char pointer to cgraph_inline_failed_t.
29371         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
29372         (cgraph_default_inline_p): Ditto.
29373         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
29374         to cgraph_inline_failed_t pointer.
29375         * cif-code.def: New file.
29376         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
29377         reason string.
29378         (cgraph_check_inline_limits): Change type of REASON to pointer to
29379         cgraph_inline_failed_t.  Replace reason strings with enums.
29380         (cgraph_default_inline_p): Ditto.
29381         (cgraph_recursive_inlining_p): Ditto.
29382         (update_caller_keys): Change type of FAILED_REASON to
29383         cgraph_inline_failed_t.
29384         (cgraph_set_inline_failed): Change type of REASON to pointer to
29385         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
29386         convert enums to strings for text output.
29387         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
29388         to be of type cgraph_inline_failed_t.  Replace reason strings with
29389         enums.  Call cgraph_inline_failed_string to covert enums
29390         to strings for text output.
29391         (cgraph_decide_inlining): Replace reason strings with enums.
29392         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
29393         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
29394         for text output.
29395         * tree-inline.c (expand_call_inline): Change type of REASON
29396         to cgraph_inline_failed_t.  Replace reason strings with enums.
29397         Call cgraph_inline_failed_string for text output.
29398         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
29399         (cgraph.o): Ditto.
29400
29401 2009-03-28  Jan Hubicka  <jh@suse.cz>
29402
29403         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
29404         cgraph_clone_node): Remove master clone handling.
29405         (cgraph_is_master_clone, cgraph_master_clone): Remove.
29406         * cgraph.h (master_clone): Remove.
29407         (cgraph_is_master_clone, cgraph_master_clone): Remove.
29408         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
29409         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
29410
29411 2009-03-28  Jan Hubicka  <jh@suse.cz>
29412
29413         * cgraph.c (cgraph_function_body_availability): Functions declared
29414         inline are always safe to assume that it is not going to be replaced.
29415
29416 2009-03-28  Richard Guenther  <rguenther@suse.de>
29417
29418         PR tree-optimization/38513
29419         * tree-ssa-pre.c (eliminate): Remove redundant stores.
29420         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
29421         EXC_PTR_EXPR and FILTER_EXPR.
29422         (get_ref_from_reference_ops): Likewise.
29423
29424 2009-03-28  Richard Guenther  <rguenther@suse.de>
29425
29426         PR tree-optimization/38968
29427         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
29428         Use FLOOR_MOD_EXPR to compute misalignment.
29429
29430 2009-03-28  Richard Guenther  <rguenther@suse.de>
29431
29432         PR tree-optimization/37795
29433         * tree.h (combine_comparisons): Declare.
29434         * fold-const.c (combine_comparisons): Export.
29435         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
29436         comparisons.
29437         (ifcombine_iforif): Use combine_comparisons.
29438
29439 2009-03-28  Jan Hubicka  <jh@suse.cz>
29440
29441         * tree-eh.c (inlinable_call_p): New function.
29442         (make_eh_edges): Use it.
29443         (verify_eh_edges): Use it.
29444         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
29445         * except.c (reachable_next_level): Add inlinable_function argument
29446         (sjlj_find_directly_reachable_regions): Update.
29447         (add_reachable_handler): Do not set saw_any_handlers.
29448         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
29449         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
29450         Add new inlinable call parameter.
29451         (can_throw_internal, can_throw_external): Update.
29452         * except.h (can_throw_internal_1, can_throw_external_1,
29453         foreach_reachable_handler): Update declaration.
29454
29455 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
29456
29457         * config/arm/t-arm-coff, config/h8300/coff.h,
29458         config/i386/i386-aout.h, config/i386/i386-coff.h,
29459         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
29460         config/pdp11/2bsd.h, config/rs6000/aix41.h,
29461         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
29462         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
29463         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
29464         sys-types.h: Remove.
29465         * Makefile.in: Remove protoize and fixproto support and references
29466         in comments.
29467         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
29468         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
29469         Remove.
29470         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
29471         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
29472         unprotoize$(exeext).
29473         (rest.encap): Don't depend on $(STMP_FIXPROTO)
29474         (.PHONY): Don't depend on proto.
29475         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
29476         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
29477         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
29478         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
29479         build/gen-protos.o, build/scan.o, xsys-protos.h,
29480         build/fix-header$(build_exeext), build/fix-header.o,
29481         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
29482         stmp-install-fixproto): Remove.
29483         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
29484         SYSCALLS.c or fixproto files.
29485         (install-common): Don't install protoize.
29486         (install-headers-tar, install-headers-cpio, install-headers-cp):
29487         Don't depend on $(STMP_FIXPROTO).
29488         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
29489         install fixproto files or write out fixproto settings.
29490         (uninstall): Don't uninstall protoize.
29491         * config.gcc (use_fixproto): Remove.
29492         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
29493         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
29494         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
29495         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
29496         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
29497         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
29498         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
29499         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
29500         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
29501         * config/t-vxworks (STMP_FIXPROTO): Remove.
29502         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
29503         STMP_FIXPROTO): Remove.
29504         * config.in, configure: Regenerate.
29505         * crtstuff.c (gid_t, uid_t): Don't undefine.
29506         * doc/install.texi: Change m68k-coff to m68k-elf in example.
29507         (arm-*-coff, arm-*-aout: Remove target entries.
29508         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
29509         Remove mention of AIX 4.1.
29510         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
29511         * doc/invoke.texi (Running Protoize): Remove.
29512         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
29513         (Protoize Caveats): Remove.
29514         * tsystem.h: Update comments on headers assumed to exist.
29515
29516 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
29517
29518         * genautomata.c: Add a new year to the copyright.  Add a new
29519         reference.
29520         (struct insn_reserv_decl): Add comments for member bypass_list.
29521         (find_bypass): Remove.
29522         (insert_bypass): New.
29523         (process_decls): Use insert_bypass.
29524         (output_internal_insn_latency_func): Output all bypasses with the
29525         same input insn in one switch case.
29526
29527         * rtl.def (define_bypass): Describe bypass choice.
29528         * doc/md.texi (define_bypass): Ditto.
29529
29530 2009-03-27  Richard Guenther  <rguenther@suse.de>
29531
29532         * gimplify.c (mark_addressable): Export.
29533         * tree-flow.h (mark_addressable): Declare.
29534         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
29535         * tree-ssa.c (verify_phi_args): Verify that address taken
29536         variables have TREE_ADDRESSABLE set.
29537
29538 2009-03-27  Richard Guenther  <rguenther@suse.de>
29539
29540         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
29541         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
29542         Do not mark decls TREE_ADDRESSABLE.
29543         (build_fold_addr_expr): Adjust.
29544         (fold_addr_expr): Remove.
29545         (fold_unary): Use build_fold_addr_expr.
29546         (fold_comparison): Likewise.
29547         (split_address_to_core_and_offset): Likewise.
29548         * coverage.c (tree_coverage_counter_addr): Mark the array decl
29549         TREE_ADDRESSABLE.
29550         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
29551         (gimplify_modify_expr_to_memcpy): Mark source and destination
29552         addressable.
29553         * omp-low.c (create_omp_child_function): Mark the object decl
29554         TREE_ADDRESSABLE.
29555         (lower_rec_input_clauses): Mark the var we take the address of
29556         TREE_ADDRESSABLE.
29557         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
29558
29559 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29560
29561         PR middle-end/39315
29562         * cfgexpand.c (expand_one_stack_var_at): Change alignment
29563         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
29564
29565 2009-03-27  Richard Guenther  <rguenther@suse.de>
29566
29567         PR tree-optimization/39120
29568         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
29569         constraints.
29570         (handle_lhs_call): Process return constraints.  Add escape
29571         constraints if necessary.
29572         (handle_const_call): Fill out return constraints.  Make nested
29573         case more precise.  Avoid consttmp if possible.
29574         (handle_pure_call): Fill out return constraints.  Avoid
29575         callused if possible.
29576         (find_func_aliases): Simplify call handling.
29577
29578 2009-03-27  Richard Guenther  <rguenther@suse.de>
29579
29580         PR tree-optimization/39120
29581         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
29582         as a representative.
29583         (solve_graph): Do propagate CALLUSED.
29584         (handle_pure_call): Use a scalar constraint from CALLUSED for
29585         the return value.
29586         (find_what_p_points_to): CALLUSED shall not appear in poins-to
29587         solutions.
29588
29589 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29590
29591         PR c/39323
29592         * c-common.c (handle_aligned_attribute): Properly check alignment
29593         overflow.  Use (1U << i) instead of (1 << i).
29594
29595         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
29596
29597         * expr.h (get_mem_align_offset): Updated.
29598
29599         * tree.h (tree_decl_common): Change align to "unsigned int" and
29600         move it before pointer_alias_set.
29601
29602 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29603             Jakub Jelinek  <jakub@redhat.com>
29604
29605         PR target/38034
29606         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
29607         gr_register_operand with gr_reg_or_0_operand.
29608         (cmpxchg_rel_di): Likewise.
29609         (sync_lock_test_and_set<mode>): Likewise.
29610
29611 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29612
29613         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
29614         (true_regnum): Likewise.
29615
29616         * rtlanal.c (subreg_info): Moved to ...
29617         * rtl.h (subreg_info): Here.  New.
29618         (subreg_get_info): New.
29619
29620         * rtlanal.c (subreg_get_info): Make it extern.
29621
29622 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29623
29624         PR target/39472
29625         * config/i386/i386.c (ix86_abi): New.
29626         (override_options): Handle -mabi=.
29627         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
29628         (ix86_call_abi_override): Likewise.
29629         (init_cumulative_args): Likewise.
29630         (function_arg_advance): Likewise.
29631         (function_arg_64): Likewise.
29632         (function_arg): Likewise.
29633         (ix86_pass_by_reference): Likewise.
29634         (ix86_function_value_regno_p): Likewise.
29635         (ix86_build_builtin_va_list_abi): Likewise.
29636         (setup_incoming_varargs_64): Likewise.
29637         (is_va_list_char_pointer): Likewise.
29638         (ix86_init_machine_status): Likewise.
29639         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
29640         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
29641         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
29642         (ix86_function_abi): Make it static and return enum calling_abi.
29643         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
29644         with ix86_abi.
29645         (ix86_fn_abi_va_list): Updated.
29646
29647         * config/i386/i386.h (ix86_abi): New.
29648         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
29649         (CONDITIONAL_REGISTER_USAGE): Likewise.
29650         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
29651         (machine_function): Likewise.
29652
29653         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
29654         with ix86_abi.
29655         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
29656         (STACK_BOUNDARY): Likewise.
29657         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
29658
29659         * config/i386/i386.opt (mabi=): New.
29660
29661         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
29662         return enum calling_abi.
29663         (ix86_function_type_abi): Likewise.
29664         (ix86_function_abi): Removed.
29665
29666         * doc/invoke.texi: Document -mabi= option for x86.
29667
29668 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29669
29670         * builtins.c (real_dconstp): Delete.
29671         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
29672
29673 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
29674             Jakub Jelinek  <jakub@redhat.com>
29675
29676         PR debug/37959
29677         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
29678         (gen_subprogram_die): When a function is explicit, generate the
29679         DW_AT_explicit attribute.
29680         * langhooks.h (struct lang_hooks_for_decls): Add
29681         function_decl_explicit_p langhook.
29682         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
29683         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
29684
29685 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
29686
29687         * builtins.c (fold_builtin_memory_op): Optimize memmove
29688         into memcpy if we can prove source and destination don't overlap.
29689
29690         * tree-inline.c: Include gt-tree-inline.h.
29691         (clone_fn_id_num): New variable.
29692         (clone_function_name): New function.
29693         (tree_function_versioning): Use it.
29694         * Makefile.in (GTFILES): Add tree-inline.c.
29695
29696 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
29697
29698         * BASE-VER: Change to 4.5.0.
29699
29700 2009-03-27  Xinliang David Li  <davidxl@google.com>
29701
29702         PR tree-optimization/39557
29703         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
29704
29705 2009-03-27  Xinliang David Li  <davidxl@google.com>
29706
29707         PR tree-optimization/39548
29708         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
29709         candidate check.
29710
29711 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29712
29713         * c-common.c (pointer_int_sum): Use %wd on return from
29714         tree_low_cst.
29715
29716 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29717
29718         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
29719         on return from tree_low_cst.
29720
29721 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
29722
29723         PR c++/36799
29724         * ginclude/stdarg.h (va_copy): Define also for
29725         __GXX_EXPERIMENTAL_CXX0X__.
29726
29727 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29728
29729         PR c++/35652
29730         * builtins.h (c_strlen): Do not warn here.
29731         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
29732         * c-common.c (pointer_int_sum): Take an explicit location.
29733         Warn about offsets out of bounds.
29734         * c-common.h (pointer_int_sum): Adjust declaration.
29735
29736 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29737
29738         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
29739         markup glitch.
29740
29741 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
29742
29743         PR c++/39554
29744         * opts.c (warn_if_disallowed_function_p): Don't assume
29745         get_callee_fndecl must return non-NULL.
29746
29747 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
29748
29749         PR rtl-optimization/39522
29750         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
29751         when reg_reloaded_valid is set.
29752
29753 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29754
29755         * config/spu/divv2df3.c: New file.
29756         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
29757         (DPBIT_FUNCS): Filter out _div_df.
29758
29759 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
29760
29761         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
29762         a jump insn, count that jump in the distance to the loop start.
29763
29764 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
29765
29766         PR target/39523
29767         * config/sh/sh.c (calc_live_regs): Fix condition for global
29768         registers except PIC_OFFSET_TABLE_REGNUM.
29769
29770 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
29771
29772         PR/39518
29773         * doc/invoke.texi (-mconsole): New.
29774         (-mcygwin): New.
29775         (-mno-cygwin): New.
29776         (-mdll): New.
29777         (-mnop-fun-dllimport): New.
29778         (-mthread): New.
29779         (-mwin32): New.
29780         (-mwindows): New.
29781         (sub section "i386 and x86-64 Windows Options"): New.
29782
29783 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
29784
29785         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
29786         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
29787
29788 2009-03-25  Richard Guenther  <rguenther@suse.de>
29789
29790         PR middle-end/39497
29791         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
29792         of -Wno-error.
29793
29794 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
29795
29796         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
29797         neither of haifa/selective schedulers are working.
29798
29799 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29800
29801         * doc/invoke.texi (Debugging Options): Fix description of
29802         -fno-merge-debug-strings.
29803
29804 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
29805
29806         * config/cris/libgcc.ver: New version-script.
29807         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
29808
29809         * configure.ac <GAS features, nop mnemonic>: Add pattern
29810         crisv32-*-* for "nop".
29811         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
29812         * configure: Regenerate.
29813
29814 2009-03-24  Ira Rosen  <irar@il.ibm.com>
29815
29816         PR tree-optimization/39529
29817         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
29818         mark_sym_for_renaming for the tag copied to the new vector
29819         pointer.
29820
29821 2009-03-24  Arthur Loiret  <aloiret@debian.org>
29822
29823         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
29824         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
29825         EXTRA_SPEC_FUNCTIONS.
29826         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
29827         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
29828         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
29829         -march and -mtune options.
29830
29831 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
29832
29833         * config/m68k/t-rtems: Add m5329 multilib.
29834
29835 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
29836             Jakub Jelinek  <jakub@redhat.com>
29837
29838         PR debug/39524
29839         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
29840         nodes.
29841
29842 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
29843
29844         PR c/39495
29845         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
29846         instead of c_parser_expression_conv, if original_code isn't one of the
29847         4 allowed comparison codes, fail.
29848
29849 2009-03-23  Richard Guenther  <rguenther@suse.de>
29850
29851         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
29852         * tree.h (struct tree_type): Likewise.
29853         * reload.h (struct insn_chain): Likewise.
29854         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
29855         * function.h (struct function): Likewise.
29856         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
29857
29858 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
29859
29860         PR tree-optimization/39516
29861         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
29862
29863 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
29864
29865         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
29866         should be set true if BITS_PER_WORD of target is bigger than 32
29867
29868 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
29869
29870         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
29871         Translate -B-options to -rpath-link.  Correct existing
29872         rpath-link and conditionalize on !nostdlib.
29873
29874 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29875
29876         * doc/extend.texi (Function Attributes, Variable Attributes):
29877         Fix typos.
29878         * doc/invoke.texi (Debugging Options, Optimize Options)
29879         (i386 and x86-64 Options, MCore Options): Likewise.
29880
29881 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
29882
29883         PR debug/37890
29884         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
29885         it for block local namespace aliases.
29886         (gen_decl_die): Pass context_die to gen_namespace_die.
29887
29888 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
29889
29890         PR c/39495
29891         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
29892         minimum or maximum value.
29893
29894 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
29895
29896         * reginfo.c (globalize_reg): Recompute derived reg sets.
29897
29898 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
29899
29900         PR target/39063
29901         * libgcc2.c (mprotect): Do not use signed arguments for
29902         VirtualProtect, use DWORD arguments.  Also fix the 'may
29903         be used uninitialized' warning for the np variable.
29904
29905 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
29906
29907         PR target/39496
29908         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
29909         functions using regparm calling conventions when not optimizing.
29910         (ix86_function_sseregparm): Similarly for sseregparm calling
29911         conventions.
29912
29913 2009-03-19  Li Feng  <nemokingdom@gmail.com>
29914
29915         PR middle-end/39500
29916         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
29917         dependence if the first conflict is after niter iterations.
29918
29919 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
29920
29921         PR middle-end/38609
29922         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
29923         functions with dynamic stack-pointer adjustments.
29924
29925 2009-03-19  Ben Elliston  <bje@au.ibm.com>
29926
29927         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
29928         option; change to -msdata=data.
29929
29930 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29931
29932         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
29933         and -fopenmp.
29934
29935 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
29936
29937         PR target/35180
29938         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
29939
29940 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
29941
29942         * doc/invoke.texi (Code Gen Options): Expand discussion of
29943         -fno-common.
29944
29945 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
29946
29947         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
29948         * matrix-reorg.c (struct matrix_info): Likewise.
29949         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
29950         * rtl.h (struct mem_attrs): Likewise.
29951         * df.h (struct df): Likewise.
29952         * tree-data-ref.h (struct data_dependence_relation): Likewise.
29953         * ira-int.h (struct ira_allocno): Likewise.
29954         * df-scan.c (struct df_collection_rec): Likewise.
29955         * ira.c (struct equivalence): Likewise.
29956         * function.c (struct temp_slot): Likewise.
29957         * cfgloop.h (struct loop): Likewise.
29958
29959         PR debug/39485
29960         * function.c (use_register_for_decl): When not optimizing, disregard
29961         register keyword for variables with types containing methods.
29962
29963 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
29964
29965         PR middle-end/39447
29966         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
29967         (is_simple_operand): Call contains_component_ref_p before calling data
29968         reference analysis that would fail on COMPONENT_REFs.
29969
29970         * tree-vrp.c (search_for_addr_array): Fix formatting.
29971
29972 2009-03-18  Richard Guenther  <rguenther@suse.de>
29973
29974         * tree-vect-transform.c (vect_loop_versioning): Fold the
29975         generated comparisons.
29976         * tree-vectorizer.c (set_prologue_iterations): Likewise.
29977         (slpeel_tree_peel_loop_to_edge): Likewise.
29978
29979 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29980
29981         PR middle-end/37805
29982         * opts.c (print_specific_help): In addition to `undocumented',
29983         accept `separate' and `joined' flags if passed alone.  Describe
29984         output by the first matched one of those.
29985         (common_handle_option): Skip over empty strings.
29986         * gcc.c (display_help): Fix help string for `--help='.
29987         * doc/invoke.texi (Option Summary, Overall Options): With
29988         `--help=', classes and qualifiers can both be repeated, but
29989         only the latter can be negated.  One should not pass only
29990         negated qualifiers.  Fix markup and examples.
29991
29992         Revert
29993         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
29994         PR middle-end/37805
29995         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
29996         and -fhelp=separate.
29997
29998 2009-03-17  Jing Yu  <jingyu@google.com>
29999
30000         PR middle-end/39378
30001         * function.h (struct rtl_data): Move is_thunk from here...
30002         (struct function): ...to here.
30003         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
30004         * varasm.c (assemble_start_function): Change is_thunk from crtl to
30005         cfun.
30006         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
30007         cfun.
30008         (alpha_does_function_need_gp, alpha_start_function): Likewise.
30009         (alpha_output_function_end_prologue): Likewise.
30010         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
30011         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
30012         (rs6000_output_function_epilogue): Likewise.
30013         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
30014
30015 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
30016
30017         PR target/39482
30018         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
30019         from different units in a single alternative.
30020         (*truncdfsf_i387): Ditto.
30021         (*truncxfsf2_mixed): Ditto.
30022         (*truncxfdf2_mixed): Ditto.
30023
30024 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
30025
30026         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
30027         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
30028
30029         PR debug/39474
30030         * tree-ssa-live.c (remove_unused_locals): Don't remove local
30031         unused non-artificial variables when not optimizing.
30032
30033         PR debug/39471
30034         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
30035         DW_TAG_imported_module even if decl is IMPORTED_DECL with
30036         NAMESPACE_DECL in its DECL_INITIAL.
30037
30038         PR middle-end/39443
30039         * optabs.c (set_user_assembler_libfunc): New function.
30040         * expr.h (set_user_assembler_libfunc): New prototype.
30041         * c-common.c: Include libfuncs.h.
30042         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
30043         for memcmp, memset, memcpy, memmove and abort.
30044         * Makefile.in (c-common.o): Depend on libfuncs.h.
30045
30046         PR debug/39412
30047         * dwarf2out.c (gen_inlined_enumeration_type_die,
30048         gen_inlined_structure_type_die, gen_inlined_union_type_die,
30049         gen_tagged_type_instantiation_die): Removed.
30050         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
30051         do nothing.
30052
30053 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
30054
30055         PR testsuite/38526
30056         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
30057         its use.
30058         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
30059         (check-parallel-%): Ditto.
30060         (check-consistency): Ditto.
30061
30062 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
30063
30064         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
30065         local variable rhs by NULL_TREE.
30066
30067 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30068
30069         PR target/39477
30070         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
30071
30072 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30073
30074         PR target/39476
30075         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
30076
30077 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30078
30079         PR target/39473
30080         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
30081         for ms->sysv ABI calls only in 64bit mode.
30082
30083         * config/i386/i386.md (untyped_call): Support 32bit.
30084
30085 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
30086
30087         * doc/extend.texi: Replace x86_65 with x86_64.
30088
30089 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
30090
30091         PR tree-optimization/39455
30092         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
30093         mismatches for POINTER_TYPE_P (type).
30094         (number_of_iterations_le): Likewise.
30095
30096 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
30097
30098         * config/picochip/picochip.c: Removed profiling support.
30099         * config/picochip/picochip.md: Removed profiling instruction.
30100         * config/picochip/picochip.h: Removed profiling builtin.
30101
30102 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
30103
30104         * doc/install.texi (--with-host-libstdcxx): Document.
30105
30106 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
30107
30108         PR target/34299
30109         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
30110         generate a warning if the function name does not begin with
30111         "__vector" and the function has either the 'signal' or 'interrupt'
30112         attribute, from here to ...
30113         (avr_declare_function_name): ...here. New function.
30114         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
30115         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
30116
30117 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
30118
30119         PR bootstrap/39454
30120         * cse.c (fold_rtx): Don't modify original const_arg1 when
30121         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
30122         separate variable instead.
30123         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
30124         from out of range shift counts.
30125         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
30126
30127 2009-03-13  Catherine Moore  <clm@codesourcery.com>
30128
30129         * config/i386/x-mingw32 (host-mingw32.o): Replace
30130         diagnostic.h with $(DIAGNOSTIC_H).
30131
30132 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
30133
30134         PR target/39431
30135         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
30136         predicate.
30137         * config/i386/sync.md (sync_compare_and_swap<mode>,
30138         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
30139         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
30140         into a register.
30141         (sync_double_compare_and_swapdi_pic,
30142         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
30143         cmpxchg8b_pic_memory_operand instead of just memory_operand.
30144
30145 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30146
30147         PR target/39445
30148         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
30149
30150 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30151
30152         PR target/39327
30153         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
30154         (avx_addsubv4df3): Likewise.
30155         (*avx_addsubv4sf3): Likewise.
30156         (sse3_addsubv4sf3): Likewise.
30157
30158 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30159
30160         PR target/38824
30161         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
30162
30163 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
30164
30165         PR debug/39432
30166         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
30167         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
30168         registers for allocnos created from user-defined variables.
30169
30170 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30171
30172         PR target/39181
30173         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
30174         of non-integer mode as well.
30175
30176 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
30177
30178         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
30179         for functions for which the parameter types are unknown.
30180
30181 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
30182
30183         PR target/39137
30184         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
30185         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
30186         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
30187         * config/i386/i386.c (ix86_local_alignment): For
30188         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
30189         long long variables on the stack to avoid dynamic realignment.
30190         Allow the first argument to be a decl rather than type.
30191         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
30192
30193 2009-03-11  Nick Clifton  <nickc@redhat.com>
30194
30195         PR target/5362
30196         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
30197         options.
30198         Add description to mno-lsim option.
30199         * config/mcore/mcore.h: Remove comment about deprecated m4align
30200         option.
30201         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
30202         * doc/invoke.texi: Add description of mno-lsim and
30203         mstack-increment options.
30204
30205         * config/fr30/fr30.opt: Document the -mno-lsim option.
30206         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
30207         and -mno-lsim options.
30208
30209 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30210
30211         * fold-const.c (fold_comparison): Only call fold_inf_compare
30212         if the mode supports infinities.
30213
30214 2009-03-11  Jason Merrill  <jason@redhat.com>
30215
30216         PR debug/39086
30217         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
30218         end already did.  Notice GIMPLE_CALL modifications of the result.
30219         Don't copy debug information from an ignored decl or a decl from
30220         another function.
30221
30222 2009-03-10  Richard Guenther  <rguenther@suse.de>
30223             Nathan Froyd  <froydnj@codesourcery.com>
30224
30225         PR middle-end/37850
30226         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
30227         (__divMODE3): Likewise.
30228
30229 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
30230
30231         PR tree-optimization/39394
30232         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
30233         DECL_SIZE_UNIT of variable length FIELD_DECLs.
30234
30235 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
30236
30237         * recog.c (verfiy_changes): Disallow renaming of hard regs in
30238         inline asms for register asm ("") declarations.
30239
30240 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
30241
30242         * fold-const.c (fold_unary): Fix comment.
30243
30244 2009-03-07  Jan Hubicka  <jh@suse.cz>
30245
30246         PR target/39361
30247         * tree-inline.c (setup_one_parameter): Do replacement of const
30248         argument by constant in SSA form.
30249
30250 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30251
30252         PR middle-end/38028
30253         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
30254         determine alignment passed to assign_stack_local.
30255         (assign_parms_unsplit_complex): Likewise.
30256         * except.c (sjlj_build_landing_pads): Likewise.
30257
30258 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
30259
30260         PR middle-end/39360
30261         * tree-flow.h (add_referenced_var): Return bool instead of void.
30262         * tree-dfa.c (add_referenced_var): Return result of
30263         referenced_var_check_and_insert call.
30264         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
30265         of referenced_var_check_and_insert.
30266
30267         PR debug/39372
30268         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
30269         (gen_variable_die): Emit DW_AT_location on abstract static variable's
30270         DIE, don't emit it if abstract origin already has it.
30271         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
30272         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
30273
30274 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
30275
30276         * genpreds.c (needs_variable): Fix parentheses at variable name
30277         detection.
30278         (write_tm_constrs_h): Indent generated code.
30279
30280 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
30281
30282         * doc/extend.texi (Function Attributes): Add documentation
30283         for isr attributes.
30284
30285 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
30286
30287         PR debug/39387
30288         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
30289         take locus from its DECL_SOURCE_LOCATION instead of input_location.
30290
30291 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
30292
30293         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
30294         the loop as bad.
30295
30296 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
30297
30298         PR debug/39379
30299         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
30300         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
30301
30302 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
30303
30304         * config/i386/i386.md (R8_REG, R9_REG): New constants.
30305         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
30306         constants instead of magic numbers.
30307         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
30308         (QI_REG_P): Ditto.
30309         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
30310         (x86_64_ms_abi_int_parameter_registers): Ditto.
30311         (x86_64_int_return_registers): Ditto.
30312         (ix86_maybe_switch_abi): Ditto.
30313         (ix86_expand_call): Ditto for clobbered_registers array.
30314         (ix86_hard_regno_mode_ok): Ditto.
30315         (x86_extended_QIreg_mentioned_p): Ditto.
30316
30317 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
30318
30319         PR tree-optimization/39349
30320         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
30321
30322         * combine.c (gen_lowpart_for_combine): Use omode when generating
30323         clobber.
30324
30325 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
30326
30327         PR rtl-optimization/39235
30328         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
30329
30330 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
30331
30332         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
30333
30334 2009-03-04  Richard Guenther  <rguenther@suse.de>
30335
30336         PR tree-optimization/39362
30337         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
30338         that occur in abnormal PHIs should be varying.
30339
30340 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
30341
30342         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
30343         Extend comments.
30344         (simple_iv):  Take loop as an argument instead of statement.
30345         * tree-scalar-evolution.h (simple_iv): Declaration changed.
30346         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
30347         to simple_iv.
30348         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
30349         Ditto.
30350         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
30351         * matrix-reorg.c (analyze_transpose): Ditto.
30352         * tree-data-ref.c (dr_analyze_innermost): Ditto.
30353         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
30354         * tree-predcom.c (ref_at_iteration): Ditto.
30355         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
30356
30357 2009-03-04  Richard Guenther  <rguenther@suse.de>
30358
30359         PR tree-optimization/39358
30360         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
30361         escaped_id and callused_id.
30362         (solve_graph): Likewise.
30363
30364 2009-03-04  Richard Guenther  <rguenther@suse.de>
30365
30366         PR tree-optimization/39339
30367         * tree-sra.c (try_instantiate_multiple_fields): Make it
30368         no longer ICE on the above.
30369
30370 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
30371
30372         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
30373         that fits within Pmode.
30374
30375 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
30376
30377         PR middle-end/10109
30378         * tm.texi (LIBCALL_VALUE): Update description.
30379
30380 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
30381
30382         PR middle-end/34443
30383         * doc/extend.texi (section): Update description.
30384
30385 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
30386
30387         PR middle-end/39345
30388         * tree-inline.c (remapped_type): New.
30389         (can_be_nonlocal): Call remapped_type instead of remap_type.
30390
30391 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
30392
30393         PR fortran/39354
30394         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
30395         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
30396
30397 2009-03-03  Richard Guenther  <rguenther@suse.de>
30398
30399         PR middle-end/39272
30400         * tree.c (tree_nonartificial_location): New function.
30401         * tree.h (tree_nonartificial_location): Declare.
30402         * builtins.c (expand_builtin_memory_chk): Provide location
30403         of the call location for artificial function pieces.
30404         (maybe_emit_chk_warning): Likewise.
30405         (maybe_emit_sprintf_chk_warning): Likewise.
30406         (maybe_emit_free_warning): Likewise.
30407         * expr.c (expand_expr_real_1): Likewise.
30408
30409 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
30410
30411         PR tree-optimization/39343
30412         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
30413         COMPONENT_REF t has ARRAY_TYPE.
30414
30415 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
30416
30417         PR middle-end/39335
30418         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
30419         when the type precision of the induction variable should be
30420         larger than the type precision of nit.
30421         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
30422         * graphite.c (graphite_loop_normal_form): Same.
30423         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
30424
30425 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
30426
30427         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
30428         (*call_1_rex64_ms_sysv): Use named constants instead of magic
30429         numbers to describe clobbered registers.
30430         (*call_value_0_rex64_ms_sysv): Ditto.
30431         * config/i386/mmx.md (mmx_emms): Ditto.
30432         (mmx_femms): Ditto.
30433
30434 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
30435
30436         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
30437         of ABI_64.
30438
30439 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30440
30441         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
30442         (spu_section_type_flags): New function.
30443
30444 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
30445
30446         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
30447         reg_class_contents of FLOAT_REGS into a temporary.
30448
30449 2009-03-02  Richard Guenther  <rguenther@suse.de>
30450             Ira Rosen  <irar@il.ibm.com>
30451
30452         PR tree-optimization/39318
30453         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
30454         information to the vectorized statement.
30455
30456 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
30457
30458         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
30459         variable.  Use defined names instead of magic constants for REX SSE
30460         registers.
30461
30462 2009-03-01  Richard Guenther  <rguenther@suse.de>
30463
30464         PR tree-optimization/39331
30465         * omp-low.c (lower_send_shared_vars): Do not receive new
30466         values for the reference of DECL_BY_REFERENCE parms or results.
30467
30468 2009-03-01  Jan Hubicka  <jh@suse.cz>
30469
30470         PR debug/39267
30471         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
30472         BLOCK_NONLOCALIZED_VAR): New macros.
30473         (tree_block): Add nonlocalized_vars.
30474         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
30475         gen_decl_die): Add origin argument.  Allow generation of die with
30476         origin at hand only.
30477         (gen_member_die, gen_type_die_with_usage, force_decl_die,
30478         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
30479         of gen_*.
30480         (gen_block_die): Fix checking for unused blocks.
30481         (process_scope_var): Break out from .... ; work with origins only.
30482         (decls_for_scope) ... here; process nonlocalized list.
30483         (dwarf2out_ignore_block): Look for nonlocalized vars.
30484         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
30485         vars.
30486         (dump_scope_block): Dump them.
30487         * tree-inline.c (remap_decls): Handle nonlocalized vars.
30488         (remap_block): Likewise.
30489         (can_be_nonlocal): New predicate.
30490         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
30491
30492 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30493
30494         * configure: Regenerate.
30495
30496 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30497
30498         * optc-gen.awk: No need to duplicate option flags twice.
30499         Reuse help texts for duplicate options which do not have any.
30500
30501         * gcc.c (display_help): Document --version.
30502
30503         * gcc.c (main): If print_help_list and verbose_flag, ensure
30504         driver output comes before subprocess output.
30505
30506         * optc-gen.awk: Assign all remaining fields to help string,
30507         space-separated, for multi-line help in *.opt.
30508
30509         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
30510         -Wno-pedantic-ms-format is for MinGW targets only.
30511
30512         * doc/options.texi (Option file format): Fix bad indentation,
30513         restoring dropped sentence.
30514
30515 2009-02-28  Jan Hubicka  <jh@suse.cz>
30516
30517         * tree-inline.c (tree_function_versioning): Output debug info.
30518
30519 2009-02-28  Jan Hubicka  <jh@suse.cz>
30520
30521         PR debug/39267
30522         * tree-inline.c (setup_one_parameter): Do not copy propagate
30523         arguments when not optimizing.
30524
30525 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
30526
30527         PR target/39327
30528         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
30529         (avx_addsubv4df3): Likewise.
30530         (*avx_addsubv4sf3): Likewise.
30531         (sse3_addsubv4sf3): Likewise.
30532         (*avx_addsubv2df3): Likewise.
30533         (sse3_addsubv2df3): Likewise.
30534         (avx_unpckhps256): Correct item selectors.
30535         (avx_unpcklps256): Likewise.
30536         (avx_unpckhpd256): Likewise.
30537         (avx_unpcklpd256): Likewise.
30538
30539 2009-02-28  Jan Hubicka  <jh@suse.cz>
30540
30541         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
30542         static vars.
30543         (copy_arguments_for_versioning): If var is declared don't declare it.
30544         (tree_function_versioning): First setup substitutions and then copy
30545         args.
30546
30547 2009-02-27  Jan Hubicka  <jh@suse.cz>
30548
30549         PR debug/39267
30550         * cgraph.h (varpool_output_debug_info): Remove.
30551         * cgraphunit.c (varpool_output_debug_info): Remove.
30552         * dwarf2out.c (deferred_locations_struct): New struct
30553         (deferred_locations): New type.
30554         (deferred_locations_list): New static var.
30555         (deffer_location): New function.
30556         (gen_variable_die): Use it.
30557         (decls_for_scope): Output info on local static vars.
30558         (dwarf2out_finish): Process deferred locations.
30559         * varpool.c (varpool_output_debug_info): Remove.
30560
30561 2009-02-27  Jan Hubicka  <jh@suse.cz>
30562
30563         PR debug/39267
30564         * tree.h (TREE_PROTECTED): Fix comment.
30565         (BLOCK_HANDLER_BLOCK): Remove.
30566         (struct tree_block): Remove handler_block add body_block.
30567         (inlined_function_outer_scope_p): New.
30568         (is_body_block): Remove.
30569         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
30570         * dwarf2out.c (is_inlined_entry_point): Remove.
30571         (add_high_low_attributes): Use inlined_function_outer_scope_p.
30572         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
30573         code.
30574         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
30575         * gimplify.c (gimplify_expr): Gimplify body blocks.
30576         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
30577         block with multiple subblocks.
30578         (dump_scope_block): Prettier output; dump more flags and info.
30579         (dump_scope_blocks): New.
30580         (remove_unused_locals): Use dump_scope_blocks.
30581         * tree-flow.h (dump_scope_blocks): Declare.
30582         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
30583         * stmt.c (is_body_block): Remove.
30584         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
30585         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
30586
30587 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
30588
30589         PR middle-end/39308
30590         * graphite.c (graphite_loop_normal_form): Do not call
30591         number_of_iterations_exit from a gcc_assert.
30592
30593 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
30594
30595         * config/s390/s390.c (s390_swap_cmp): Look for conditional
30596         jumps if COND is NULL.
30597         (find_cond_jump): New function.
30598         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
30599         * config/s390/s390.md: Remove z10_cobra attribute value.
30600
30601 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
30602
30603         * config/alpha/alpha.h (alpha_expand_mov): Return false if
30604         force_const_mem returns NULL_RTX.
30605
30606 2009-02-26  Jan Hubicka  <jh@suse.cz>
30607
30608         PR debug/39267
30609         * cgraph.h (varpool_output_debug_info): Remove.
30610         * cgraphunit.c (varpool_output_debug_info): Remove.
30611         * dwarf2out.c (deferred_locations_struct): New struct
30612         (deferred_locations): New type.
30613         (deferred_locations_list): New static var.
30614         (deffer_location): New function.
30615         (gen_variable_die): Use it.
30616         (decls_for_scope): Output info on local static vars.
30617         (dwarf2out_finish): Process deferred locations.
30618         * varpool.c (varpool_output_debug_info): Remove.
30619
30620 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
30621
30622         PR rtl-optimization/39241
30623         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
30624         to subreg_offset_representable_p.
30625
30626 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
30627
30628         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
30629         execute function prototype.  Get f and nregs from max_reg_num
30630         and get_insns.  Remove the first backward pass as it's dead,
30631         guard the forward pass by flag_expensive_optimizations.
30632         (rest_of_handle_regmove): Delete.
30633         (pass_regmove): Replace it with regmove_optimize.
30634
30635 2009-02-25  Martin Jambor  <mjambor@suse.cz>
30636
30637         PR tree-optimization/39259
30638         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
30639         calls_alloca function flags.
30640         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
30641         calls are detected.
30642
30643 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
30644
30645         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
30646         flags_set_1_rtx, flags_set_1_set): Delete.
30647         (regmove_optimize): Do not call mark_flags_life_zones.
30648
30649 2009-02-24  Julian Brown  <julian@codesourcery.com>
30650
30651         PR target/35965
30652         * config/arm/arm.c (require_pic_register): Only set
30653         cfun->machine->pic_reg once per function.
30654
30655 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
30656
30657         * doc/invoke.texi (Link Options): Document an easier way to pass
30658         options that take arguments to the GNU linker using -Xlinker and -Wl.
30659
30660 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
30661
30662         PR target/33785
30663         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
30664
30665 2009-02-24  Richard Guenther  <rguenther@suse.de>
30666
30667         PR debug/39285
30668         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
30669
30670 2009-02-24  Richard Guenther  <rguenther@suse.de>
30671             Zdenek Dvorak  <ook@ucw.cz>
30672
30673         PR tree-optimization/39233
30674         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
30675         from converting them to a generic type.
30676
30677 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
30678
30679         PR tree-optimization/39260
30680         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
30681         contains a condition with a real type.
30682         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
30683
30684 2009-02-23  Jason Merrill  <jason@redhat.com>
30685
30686         PR c++/38880
30687         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
30688         narrowing_initializer_constant_valid_p.
30689         (narrowing_initializer_constant_valid_p): Don't return
30690         null_pointer_node for adding a pointer to itself.
30691
30692 2009-02-23  Jan Hubicka  <jh@suse.cz>
30693
30694         PR c/12245
30695         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
30696         resizing.
30697
30698 2009-02-23  Jan Hubicka  <jh@suse.cz>
30699
30700         PR tree-optimization/37709
30701         * tree.c (block_ultimate_origin): Move here from dwarf2out.
30702         * tree.h (block_ultimate_origin): Declare.
30703         * dwarf2out.c (block_ultimate_origin): Move to tree.c
30704         * tree-ssa-live.c (remove_unused_scope_block_p):
30705         Eliminate blocks containig no instructions nor live variables nor
30706         nested blocks.
30707         (dump_scope_block): New function.
30708         (remove_unused_locals): Enable removal of dead blocks by default;
30709         enable dumping at TDF_DETAILS.
30710
30711 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30712
30713         * config/i386/i386.c (classify_argument): Don't allow COImode
30714         and OImode.
30715         (function_arg_advance_32): Don't allow OImode.
30716         (function_arg_32): Likewise.
30717         (function_value_32): Likewise.
30718         (return_in_memory_32): Likewise.
30719         (function_arg_64): Remove OImode comment.
30720
30721 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30722
30723         PR target/39261
30724         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
30725         ix86_expand_vector_set for V4DImode in 64bit mode only.
30726         (ix86_expand_vector_init_one_var): Likewise.
30727
30728 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
30729
30730         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
30731
30732 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
30733
30734         PR bootstrap/39257
30735         * loop-iv.c: Revert last change.
30736         * emit-rtl.c: Likewise.
30737
30738 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30739
30740         PR target/39256
30741         * config/i386/i386.c (type_natural_mode): Remove an extra
30742         space in the warning message.
30743         (function_value_32): Handle 32-byte vector modes.
30744         (return_in_memory_32): Likewise.
30745
30746 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
30747
30748         * loop-iv.c (truncate_value): New function.
30749         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
30750         of lowpart_subreg.
30751         (lowpart_subreg): Move to...
30752         * emit-rtl.c: ...here.
30753
30754 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
30755
30756         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
30757         accidental and undocumented change at revision 140860.
30758
30759 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
30760
30761         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
30762         take gimple_seq * arguments.
30763         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
30764         types_compatible_p langhook.
30765
30766 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
30767             Joseph Myers  <joseph@codesourcery.com>
30768
30769         * config/arm/arm.c (arm_builtin_va_list): New function.
30770         (arm_expand_builtin_va_start): Likewise.
30771         (arm_gimplify_va_arg_expr): Likewise.
30772         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
30773         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
30774         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
30775         (va_list_type): New variable.
30776         (arm_mangle_type): Mangle va_list_type appropriately.
30777
30778 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
30779
30780         PR middle-end/39157
30781         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
30782         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
30783         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
30784         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
30785         parameter to 1000 for -O1 by default.
30786         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
30787         parameter.
30788         * loop-invariant.c: Include params.h.
30789         (move_loop_invariants): Don't call move_single_loop_invariants on
30790         very large loops.
30791
30792 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
30793
30794         * calls.c (emit_library_call_value_1): Use slot_offset instead of
30795         offset when calculating bounds for indexing stack_usage_map.  Fixes
30796         a buffer overflow with certain target setups.
30797
30798 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
30799
30800         PR target/39240
30801         * calls.c (expand_call): Clear try_tail_call if caller and callee
30802         disagree in promotion of function return value.
30803
30804 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
30805
30806         PR target/39175
30807         * c-common.c (c_determine_visibility): If visibility changed and
30808         DECL_RTL has been already set, call make_decl_rtl to update symbol
30809         flags.
30810
30811 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
30812
30813         PR c++/39188
30814         * varasm.c (assemble_variable): Don't check DECL_NAME when
30815         globalizing a variable.
30816
30817 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
30818
30819         PR c/38483
30820         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
30821         expression before any __builtin_trap call.
30822         * c-typeck.c (build_function_call): Convert and check function
30823         arguments before generating a call to a trap.  Evaluate the
30824         function arguments before the trap.
30825
30826 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
30827
30828         PR target/39228
30829         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
30830         (UNSPEC_FXAM_MEM): New unspec.
30831         (fxam<mode>2_i387_with_temp): New insn and split pattern.
30832         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
30833         memory using fxam<mode>2_i387_with_temp to remove excess precision.
30834
30835 2009-02-19  Richard Guenther  <rguenther@suse.de>
30836
30837         PR tree-optimization/39207
30838         PR tree-optimization/39074
30839         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
30840         storedanything_tree): New.
30841         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
30842         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
30843         (build_succ_graph): Add edges from STOREDANYTHING to all
30844         non-direct nodes.
30845         (init_base_vars): Initialize STOREDANYTHING.
30846         (compute_points_to_sets): Free substitution info after
30847         building the succ graph.
30848         (ipa_pta_execute): Likewise.
30849
30850         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
30851         field.
30852         (do_ds_constraint): Do not add to special var or non-pointer
30853         field solutions.
30854         (type_could_have_pointers): Split out from ...
30855         (could_have_pointers): ... here.  For arrays use the element type.
30856         (create_variable_info_for): Initialize may_have_pointers.
30857         (new_var_info): Likewise.
30858         (handle_lhs_call): Make the HEAP variable unknown-sized.
30859         (intra_create_variable_infos): Use a type with pointers for
30860         PARM_NOALIAS, make it unknown-sized.
30861
30862 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
30863
30864         PR target/39224
30865         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
30866
30867 2009-02-18  Jason Merrill  <jason@redhat.com>
30868
30869         PR target/39179
30870         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
30871         value if DECL_EXTERNAL.
30872         * tree-sra.c (sra_walk_gimple_assign): Likewise.
30873         * target.h (gcc_target::binds_local_p): Clarify "module".
30874         * tree.h (TREE_PUBLIC): Clarify "module".
30875
30876 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
30877
30878         PR target/38891
30879         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
30880         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
30881
30882 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
30883
30884         PR target/39082
30885         * c.opt (Wabi): Support C and ObjC.
30886         (Wpsabi): New.
30887
30888         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
30889
30890         * config/i386/i386.c (classify_argument): Warn once about the ABI
30891         change when passing union with long double.
30892
30893         * doc/invoke.texi: Update -Wabi for warning psABI changes.
30894
30895 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
30896
30897         PR c/35447
30898         * c-parser.c (c_parser_compound_statement): Always enter and leave
30899         a scope.
30900
30901 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30902
30903         PR target/34587
30904         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
30905
30906 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
30907
30908         PR tree-optimization/36922
30909         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
30910         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
30911         Likewise.
30912
30913 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30914
30915         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
30916         to 0 for EABI64.
30917
30918 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30919
30920         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
30921
30922 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30923
30924         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
30925         tree sharing.
30926
30927 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
30928             Richard Sandiford  <rdsandiford@googlemail.com>
30929
30930         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
30931         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
30932         (loongson_biadd): ...this.
30933
30934 2009-02-17  Richard Guenther  <rguenther@suse.de>
30935
30936         PR tree-optimization/39202
30937         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
30938         a var make sure to follow existing collapses.
30939
30940 2009-02-17  Richard Guenther  <rguenther@suse.de>
30941
30942         PR middle-end/39214
30943         * langhooks.c (lhd_print_error_function): Check for NULL block.
30944
30945 2009-02-17  Richard Guenther  <rguenther@suse.de>
30946
30947         PR tree-optimization/39204
30948         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
30949         of the PHI arg.
30950
30951 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
30952
30953         * config/soft-fp/double.h: Update from glibc CVS.
30954
30955 2009-02-17  Richard Guenther  <rguenther@suse.de>
30956
30957         PR tree-optimization/39207
30958         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
30959         strict-aliasing warnings for pointers pointing to NULL.
30960
30961 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
30962
30963         PR c/35446
30964         * c-parser.c (c_parser_braced_init): Call pop_init_level when
30965         skipping until next close brace.
30966
30967 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
30968
30969         PR target/37049
30970         * config/i386/i386.c (ix86_expand_push): Set memory alignment
30971         to function argument boundary.
30972
30973 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
30974
30975         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
30976         in the lea_add. Reload eventually constraints it properly.
30977         * config/picochip/constraints.md: Remove the target constraint
30978         "b", since it is not needed anymore.
30979
30980 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
30981
30982         * gthr-dce.h: Uglify function parameter and local variable names.
30983         * gthr-gnat.h: Likewise.
30984         * gthr-mipssde.h: Likewise.
30985         * gthr-nks.h: Likewise.
30986         * gthr-posix95.h: Likewise.
30987         * gthr-posix.h: Likewise.
30988         * gthr-rtems.h: Likewise.
30989         * gthr-single.h: Likewise.
30990         * gthr-solaris.h: Likewise.
30991         * gthr-tpf.h: Likewise.
30992         * gthr-vxworks.h: Likewise.
30993         * gthr-win32.h: Likewise.
30994
30995 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
30996
30997         PR target/39196
30998         * config/i386/i386.md: Restrict the new peephole2 to move
30999         between MMX/SSE registers.
31000
31001 2009-02-15  Richard Guenther  <rguenther@suse.de>
31002
31003         Revert
31004         2009-02-13  Richard Guenther  <rguenther@suse.de>
31005
31006         * configure.ac: Enable LFS.
31007         * configure: Re-generate.
31008         * config.in: Likewise.
31009
31010 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31011
31012         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
31013         spu_srqwbyte, spu_srqwbytebc): Define.
31014         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
31015         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
31016         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
31017         "shrqby_<mode>"): New insn-and-split patterns.
31018         * config/spu/spu.c (expand_builtin_args): Determine and return
31019         number of operands using spu_builtin_description data.
31020         (spu_expand_builtin_1): Use it.
31021
31022 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
31023
31024         PR target/38056
31025         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
31026         TARGET_CONST_GP.
31027
31028 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31029
31030         PR target/39149
31031         * config/i386/i386.c (override_options): Correct warning
31032         messages for -malign-loops, -malign-jumps and -malign-functions.
31033
31034 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31035
31036         PR target/39152
31037         * config/i386/i386.md: Restrict the new peephole2 to move
31038         between the general purpose registers.
31039
31040 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31041
31042         PR target/39162
31043         * config/i386/i386.c (type_natural_mode): Add a new argument.
31044         Return the original mode and warn ABI change if vector size is 32byte.
31045         (function_arg_advance): Updated.
31046         (function_arg): Likewise.
31047         (ix86_function_value): Likewise.
31048         (ix86_return_in_memory): Likewise.
31049         (ix86_sol10_return_in_memory): Likewise.
31050         (ix86_gimplify_va_arg): Likewise.
31051         (function_arg_32): Don't warn ABX ABI change here.
31052         (function_arg_64): Likewise.
31053
31054 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
31055
31056         * loop-iv.c (implies_p): In the final case, test that operands 0
31057         of the two comparisons match.
31058
31059         * config/bfin/bfin.c (find_prev_insn_start): New function.
31060         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
31061         (find_next_insn_start): Move.
31062
31063 2009-02-13  Richard Guenther  <rguenther@suse.de>
31064
31065         * configure.ac: Enable LFS.
31066         * configure: Re-generate.
31067         * config.in: Likewise.
31068
31069 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
31070
31071         PR c/35444
31072         * c-parser.c (c_parser_parms_list_declarator): Discard pending
31073         sizes on syntax error after some arguments have been parsed.
31074
31075 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
31076
31077         * doc/invoke.texi (-fira): Remove.
31078
31079 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31080
31081         * caller-save.c: Replace regclass.c with reginfo.c in comments.
31082         * recog.c: Likewise.
31083         * rtl.h: Likewise.
31084
31085 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
31086
31087         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
31088         (umul_ppmm): Likewise.
31089         (count_leading_zeros): Likewise.
31090         (count_trailing_zeros): Likewise.
31091         (UMUL_TIME): Likewise.
31092
31093 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31094
31095         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
31096         soft-fp/t-softfp to tmake_file.
31097
31098         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
31099         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
31100         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
31101         IA64_BUILTIN_INFQ]: New.
31102         (ia64_init_builtins): Initialize __builtin_infq,
31103         __builtin_fabsq and __builtin_copysignq if not HPUX.
31104         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
31105         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
31106
31107         * config/ia64/lib1funcs.asm (__divtf3): Define only if
31108         SHARED is defined.
31109         (__fixtfti): Likewise.
31110         (__fixunstfti): Likewise.
31111         (__floattitf): Likewise.
31112
31113         * config/ia64/libgcc-glibc.ver: New.
31114         * config/ia64/t-fprules-softfp: Likewise.
31115         * config/ia64/sfp-machine.h: Likewise.
31116
31117         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
31118         (LIBGCC2_TF_CEXT): Likewise.
31119         (TF_SIZE): Likewise.
31120         (TARGET_INIT_LIBFUNCS): Likewise.
31121
31122         * config/ia64/t-glibc (SHLINB_MAPFILES):
31123         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
31124
31125 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31126
31127         * config/i386/i386.c (construct_container): Rewrite processing
31128         BLKmode with X86_64_SSE_CLASS.
31129
31130 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
31131
31132         PR target/39152
31133         * config/i386/i386.md: Replace simplify_replace_rtx with
31134         replace_rtx in the new peephole2.
31135
31136 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
31137
31138         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
31139         loop unrolling do not happen at -O2.
31140
31141 2009-02-12  Michael Matz  <matz@suse.de>
31142
31143         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
31144
31145 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
31146
31147         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
31148         for -g3.
31149
31150 2009-02-12  Ben Elliston  <bje@au.ibm.com>
31151
31152         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
31153         patterns when updating the back chain.  Missed in the 2009-02-10
31154         change.
31155
31156 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
31157
31158         * doc/extend.texi (Decimal Floating Types): Update identifier of
31159         draft TR and list of missing support.
31160
31161 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
31162
31163         PR middle-end/39154
31164         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
31165         bit to variable length decl's flags, add it also to its
31166         pointer replacement variable.
31167
31168 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
31169             Jakub Jelinek  <jakub@redhat.com>
31170
31171         PR target/39118
31172         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
31173         (memory_blockage): New expander.
31174         (*memory_blockage): New insn pattern.
31175         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
31176         instead of general blockage at the end of function prologue when
31177         frame pointer is used to access red zone area.  Do not emit blockage
31178         when profiling, it is emitted in generic code.
31179         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
31180         function epilogue when frame pointer is used to access red zone area.
31181
31182 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
31183
31184         PR target/38824
31185         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
31186         by arithmetic with memory operands.
31187         * config/i386/predicates.md (commutative_operator): New.
31188
31189 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
31190
31191         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
31192         bulleted lists.
31193
31194 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
31195
31196         * alias.h (record_alias_subset): Declare.
31197         * alias.c (record_alias_subset): Make global.
31198
31199 2009-02-10  Nick Clifton  <nickc@redhat.com>
31200
31201         * tree-parloops.c: Change license to GPLv3.
31202         * ipa-struct-reorg.c: Change license to GPLv3.
31203         * ipa-struct-reorg.h: Change license to GPLv3.
31204
31205 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
31206
31207         PR c/39084
31208         * c-decl.c (start_struct): Return NULL on error.
31209
31210 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
31211
31212         PR middle-end/39124
31213         * cfgloopmanip.c (remove_path): Call remove_bbs after
31214         cancel_loop_tree, not before it.
31215
31216         PR target/39139
31217         * function.h (struct function): Add has_local_explicit_reg_vars bit.
31218         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
31219         VAR_DECLs were seen.
31220         * tree-ssa-live.c (remove_unused_locals): Recompute
31221         cfun->has_local_explicit_reg_vars.
31222         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
31223         copies or clearings if cfun->has_local_explicit_reg_vars.
31224
31225 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
31226
31227         PR target/39118
31228         * config/i386/i386.c (expand_prologue): Emit blockage at the end
31229         of function prologue when frame pointer is used to access
31230         red zone area.
31231
31232 2009-02-10  Richard Guenther  <rguenther@suse.de>
31233
31234         PR middle-end/39127
31235         * gimplify.c (gimple_regimplify_operands): Always look if
31236         we need to create a temporary.
31237
31238 2009-02-10  Richard Guenther  <rguenther@suse.de>
31239
31240         PR tree-optimization/39132
31241         * tree-loop-distribution.c (todo): New global var.
31242         (generate_memset_zero): Trigger TODO_rebuild_alias.
31243         (tree_loop_distribution): Return todo.
31244
31245 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
31246
31247         PR target/39119
31248         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
31249         (x86_64_reg_class_name): Removed.
31250         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
31251         first one isn't X86_64_SSE_CLASS or any other ones aren't
31252         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
31253         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
31254         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
31255         and 3 X86_64_SSEUP_CLASS.
31256         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
31257         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
31258
31259 2009-02-10  Ben Elliston  <bje@au.ibm.com>
31260
31261         * config/rs6000/rs6000.md (allocate_stack): Always use an update
31262         form instruction to update the stack back chain word, even if the
31263         user has disabled the generation of update instructions.
31264         (movdi_<mode>_update_stack): New.
31265         (movsi_update_stack): Likewise.
31266         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
31267         always use an update form instruction to update the stack back
31268         chain word.
31269
31270 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
31271
31272         PR middle-end/38953
31273         * graphite.c (if_region_set_false_region): After moving a region in
31274         the false branch of a condition, remove the empty dummy basic block.
31275         (gloog): Remove wrong fix for PR38953.
31276
31277 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31278
31279         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
31280         generation due to implicit sign extension.
31281
31282 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
31283
31284         PR middle-end/38981
31285         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
31286         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
31287
31288 2009-02-09  Richard Guenther  <rguenther@suse.de>
31289
31290         PR middle-end/35202
31291         * convert.c (convert_to_real): Disable (float)fn((double)x)
31292         to fnf(x) conversion if errno differences may occur and
31293         -fmath-errno is set.
31294
31295 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
31296
31297         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
31298         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
31299         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
31300
31301 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
31302
31303         PR c/35434
31304         * c-common.c (handle_alias_attribute): Disallow attribute for
31305         anything not a FUNCTION_DECL or VAR_DECL.
31306
31307 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
31308
31309         PR c/39035
31310         * real.c (do_compare): Special-case compare of zero against
31311         decimal float value.
31312
31313 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
31314
31315         PR c/36432
31316         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
31317         as indicating flexible array members unless the field itself is
31318         being declarared as the incomplete array.
31319
31320 2009-02-06  Jan Hubicka  <jh@suse.cz>
31321
31322         PR tree-optimization/38844
31323         * ipa-inline.c (try_inline): Stop inlining recursion when edge
31324         is already inlined.
31325
31326 2009-02-06  Richard Guenther  <rguenther@suse.de>
31327
31328         PR middle-end/38977
31329         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
31330         fork because we may expand it as __gcov_fork.
31331
31332 2009-02-06  Nick Clifton  <nickc@redhat.com>
31333
31334         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
31335
31336 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
31337
31338         PR tree-optimization/35659
31339         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
31340         vn_phi_eq): Shortcut if hashcode does not match.
31341         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
31342         NULL operands.
31343         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
31344         and avoid iterative_hash_expr.
31345         (FOR_EACH_VALUE_ID_IN_SET): New.
31346         (value_id_compare): Remove.
31347         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
31348         sort expressions by value id.
31349
31350 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
31351
31352         PR target/38991
31353         * config/sh/predicates.md (general_movsrc_operand): Don't check
31354         the subreg of system registers here.
31355
31356 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
31357
31358         PR c++/39106
31359         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
31360         on the copied decl.
31361
31362 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
31363
31364         PR rtl-optimization/39110
31365         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
31366         addresses, not aligned ones.
31367
31368 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
31369             Richard Guenther  <rguenther@suse.de>
31370
31371         PR tree-optimization/39100
31372         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
31373         comment says and add edges.
31374
31375 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
31376
31377         PR c/35435
31378         * c-common.c (handle_tls_model_attribute): Ignore attribute for
31379         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
31380
31381 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
31382
31383         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
31384         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
31385         register_bb_in_sese, new_sese, free_sese): Moved.
31386         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
31387         outermost_loop_in_scop, build_scop_iteration_domain,
31388         expand_scalar_variables_ssa_name, get_vdef_before_scop,
31389         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
31390         Use loop_in_sese_p instead of loop_in_scop_p.
31391         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
31392         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
31393         (scopdet_basic_block_info): Fix bug in scop detection.
31394         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
31395         eq_loop_to_cloog_loop): Remove.
31396         (nb_loops_around_loop_in_scop, nb_loop
31397         ref_nb_loops): Moved here...
31398         * graphite.h (ref_nb_loops): ... from here.
31399         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
31400         (loop_domain_dim, loop_iteration_vector_dim): Remove.
31401         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
31402
31403 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
31404             Hans-Peter Nilsson  <hp@axis.com>
31405
31406         PR rtl-optimization/37889
31407         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
31408         Move offset handling from PLUS to before the switch.  Use new
31409         arguments when considering SYMBOL_REFs too.
31410         (rtx_addr_can_trap_p): Pass dummy offset and size.
31411         (enum may_trap_p_flags): Remove.
31412         (may_trap_p_1): Pass size from MEM_SIZE.
31413
31414         PR rtl-optimization/38921
31415         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
31416         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
31417         * rtlanal.c (may_trap_after_code_motion_p): Delete.
31418         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
31419
31420 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
31421
31422         AVX Programming Reference (January, 2009)
31423         * config/i386/sse.md (*vpclmulqdq): New.
31424
31425 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
31426
31427         PR tree-optimization/38977
31428         PR gcov-profile/38292
31429         * calls.c (special_function_p): Disregard __builtin_ prefix.
31430
31431 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
31432
31433         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
31434         non-indexable addresses even before reload.
31435
31436 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
31437
31438         PR c/29129
31439         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
31440         as having variable size.  Do not give an error for unnamed
31441         parameters with [*] declarators.  Give a warning for type names
31442         with [*] declarators and mark them as variable size.
31443         * c-parser.c (c_parser_sizeof_expression): Do not give an error
31444         for sizeof applied to [*] type names.
31445
31446 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31447
31448         PR C++/36607
31449         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
31450
31451 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
31452
31453         * gcc.c (process_command): Update copyright notice dates.
31454         * gcov.c (print_version): Likewise.
31455         * gcov-dump.c (print_version): Likewise.
31456         * mips-tfile.c (main): Likewise.
31457         * mips-tdump.c (main): Likewise.
31458
31459 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
31460
31461         PR c/35433
31462         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
31463         for composite type involving a zero-length array type.
31464
31465 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
31466
31467         PR target/35318
31468         * function.c (match_asm_constraints_1): Skip over
31469         initial optional % in the constraint.
31470
31471         PR inline-asm/39059
31472         * c-parser.c (c_parser_postfix_expression): If fixed point is not
31473         supported, don't accept FIXED_CSTs.
31474         * c-decl.c (finish_declspecs): Error if fixed point is not supported
31475         and _Sat is used without _Fract/_Accum.  Set specs->type to
31476         integer_type_node for cts_fract/cts_accum if fixed point is not
31477         supported.
31478
31479 2009-02-02  Catherine Moore  <clm@codesourcery.com>
31480
31481         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
31482
31483 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
31484
31485         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
31486         (ABI_HAS_64BIT_SYMBOLS): Use it.
31487         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
31488
31489 2009-02-02  Paul Brook  <paul@codesourcery.com>
31490
31491         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
31492
31493 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
31494
31495         PR inline-asm/39058
31496         * recog.h (asm_operand_ok): Add constraints argument.
31497         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
31498         recurse on matching constraint.
31499         (check_asm_operands): Pass constraints as 3rd argument to
31500         asm_operand_ok.  Don't look up matching constraint here.
31501         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
31502         to asm_operand_ok.
31503
31504 2009-02-02  Ben Elliston  <bje@au.ibm.com>
31505
31506         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
31507         TARGET_NARROW_VOLATILE_BITFIELD macro names.
31508
31509 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31510
31511         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
31512         information.  Remove some obsolete information.  Reorganize.
31513
31514         * config/pa/fptr.c: Revert license to GPL 2.
31515         * config/pa/milli64.S: Likewise.
31516
31517 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
31518
31519         PR target/38904
31520         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
31521         LIBRARY name in, instead of hard-coding it.
31522         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
31523         extra target make frag to tmake_files according to EH model.
31524         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
31525         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
31526         frags that define makefile variable EH_MODEL appropriately.
31527         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
31528         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
31529         to "-sjlj" according to type of EH configured.
31530         (LIBGCC_SONAME):  Concatenate it to shared library base name.
31531         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
31532         to "_sjlj" according to type of EH configured.
31533         (LIBGCC_SONAME):  Concatenate it to shared library base name.
31534         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
31535         (SHLIB_LINK):  Add missing semicolon to if-else construct.
31536         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
31537         string value of "pe_dll" command-line option.
31538         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
31539         (SHLIB_SONAME):  Use it when overriding t-cygming default.
31540         (SHLIB_IMPLIB):  Override t-cygming default.
31541         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
31542         string value of "pe_dll" command-line option.
31543
31544 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
31545
31546         PR target/38952
31547         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
31548         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
31549
31550 2009-01-31  Richard Guenther  <rguenther@suse.de>
31551
31552         PR tree-optimization/38937
31553         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
31554         computing the transitive closure.
31555
31556 2009-01-30  Richard Guenther  <rguenther@suse.de>
31557
31558         PR tree-optimization/39041
31559         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
31560         Propagate variable indices only if the types match for this stmt.
31561
31562 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
31563
31564         PR target/39013
31565         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
31566         inline but never defined.
31567
31568 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
31569
31570         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
31571         (*insv_h_di_reg_extimm): New insn.
31572         (*insv_l<mode>_reg_extimm): New insn.
31573
31574 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
31575
31576         * config/picochip/picochip.c (flag_conserve_stack): set
31577         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
31578         fconserve-stack. Reduce call-overhead used by inliner.
31579
31580 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
31581
31582         PR/38157
31583         * common.opt (flag_conserve_stack): Initialised to zero.
31584
31585 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
31586
31587         PR/39002
31588         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
31589         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
31590         method.
31591
31592 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
31593
31594         * ira-color.c (allocno_reload_assign): Update comments.
31595         * regmove.c (regmove_optimize): Likewise.
31596
31597         * ra.h: Removed.
31598
31599 2009-01-29  Robert Millan  <rmh@aybabtu.com>
31600
31601         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
31602         * config/i386/kopensolaris-gnu.h: New file.  Undefine
31603         `MD_UNWIND_SUPPORT'.
31604         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
31605
31606 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
31607
31608         PR tree-optimization/39007
31609         * tree-loop-distribution.c (generate_builtin): Use
31610         recompute_dominator to compute the immediate dominator of the
31611         basic block just after the loop.
31612
31613 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
31614
31615         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
31616         (ASM_OUTPUT_DWARF_PCREL): Define.
31617
31618 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
31619
31620         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
31621         * doc/passes.texi: Remove entries about regclass, local-alloc, and
31622         global.  Modify entries about regmove and IRA.
31623
31624         * ra-conflict.c: Remove the file.
31625
31626         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
31627
31628         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
31629         (pass_regclass_init): Rename to pass_reginfo_init.
31630
31631         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
31632
31633         * toplev.h (flag_ira): Remove.
31634
31635         * caller-save.c (setup_save_areas): Remove flag_ira.
31636
31637         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
31638
31639         * global.c: Remove the file.
31640
31641         * opts.c (decode_options): Remove flag_ira.
31642
31643         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
31644
31645         * regmove.c: Modify file description.
31646         (find_use_as_address, try_auto_increment): Define them only if
31647         AUTO_INC_DEC is defined.
31648         (replacement_quality, replace_in_call_usage, fixup_match_1,
31649         stable_and_no_regs_but_for_p): Remove.
31650         (reg_set_in_bb): Make it static.
31651         (regmove_optimize): Remove flag_ira and code which worked for
31652         !flag_ira.
31653
31654         * local-alloc.c: Remove the file.
31655
31656         * common.opt (fira): Remove.
31657
31658         * ira.c: Include except.h.
31659         (eliminable_regset): Move from global.c.
31660         (mark_elimination): Ditto.  Remove flag_ira.
31661         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
31662         equiv_mem_modified, validate_equiv_mem_from_store,
31663         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
31664         contains_replace_regs, memref_referenced_p, memref_used_between_p,
31665         no_equiv, recorded_label_ref): Move from local-alloc.c.
31666         (update_equiv_regs): Ditto.  Make it static.
31667         (print_insn_chain, print_insn_chains): Move it from global.c.
31668         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
31669         (build_insn_chain): Ditto.  Make it static.
31670         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
31671         Rename to init_live_subregs.
31672         (gate_ira): Remove flag_ira.
31673
31674         * regclass.c: Rename reginfo.c.  Change file description.
31675         (FORBIDDEN_INC_DEC_CLASSES): Remove.
31676         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
31677         (init_reg_sets_1): Remove code for evaluation of
31678         reg_class_superclasses and losing_caller_save_reg_set.
31679         (init_regs): Remove init_reg_autoinc.
31680         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
31681         ok_for_base_p_nonstrict): Remove.
31682         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
31683         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
31684         corresponding entries.
31685         (dump_regclass, record_operand_costs, scan_one_insn,
31686         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
31687         record_address_regs, auto_inc_dec_reg_p): Remove.
31688         (gt-regclass.h): Rename to gt-reginfo.h.
31689
31690         * rtl.h (dump_global_regs, retry_global_alloc,
31691         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
31692
31693         * Makefile.in (RA_H): Remove.
31694         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
31695         Rename regclass.o to reginfo.o.
31696         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
31697         gt-reginfo.h.
31698         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
31699         (GTFILES): Rename regclass.c to reginfo.c.
31700
31701         * passes.c (init_optimization_passes): Remove pass_local_alloc and
31702         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
31703
31704         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
31705         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
31706         Remove flag_ira.
31707         (finish_spills): Ditto.  Remove code for !flag_ira.
31708
31709 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
31710
31711         PR middle-end/35854
31712         * doc/invoke.texi (rtl debug options): Complete rewrite.
31713         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
31714         to auto_inc_dec".
31715         * mode-switching.c (pass_mode_switching): Rename pass from
31716         "mode-sw" to "mode_sw".
31717         * except.c (pass_convert_to_eh_ranges): Rename pass from
31718         "eh-ranges" to "eh_ranges".
31719         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
31720         to "subreg1".
31721
31722
31723 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
31724             Alexander Monakov  <amonakov@ispras.ru>
31725
31726         PR middle-end/38857
31727         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
31728         register.
31729         (move_exprs_to_boundary): Change return type and pass through
31730         should_move from move_op.  Relax assert.  Update usage ...
31731         (schedule_expr_on_boundary): ... here.  Use should_move instead of
31732         cant_move.
31733         (move_op_orig_expr_found): Indicate that insn was disconnected from
31734         stream.
31735         (code_motion_process_successors): Do not call after_merge_succs
31736         callback if original expression was not found when traversing any of
31737         the branches.
31738         (code_motion_path_driver): Change return type.  Update prototype.
31739         (move_op): Update comment.  Add a new parameter (should_move).  Update
31740         prototype.  Set *should_move based on indication provided by
31741         move_op_orig_expr_found.
31742
31743 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
31744
31745         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
31746         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
31747         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
31748         * config/rs6000/rs6000.c (rs6000_override_options): Default
31749         avoid-indexed-addresses on for Power6, off for everything else.
31750         (avoiding_indexed_address_p): New function.
31751         (rs6000_legitimize_address): Use it.
31752         (rs6000_legitimate_address): Likewise.
31753         * config/rs6000/rs6000.md (movXX_updateX): Likewise
31754
31755 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
31756
31757         PR tree-optimization/38997
31758         * tree-loop-distribution.c (generate_memset_zero): Use
31759         POINTER_PLUS_EXPR for a pointer addition.
31760
31761 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
31762
31763         * config/s390/s390.md (bswap<mode>2): New pattern added.
31764
31765 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31766
31767         * config/s390/s390.md (*tls_load_31): Added type attribute.
31768
31769 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31770
31771         * config/s390/s390.md: Fix a few comments.
31772
31773 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31774
31775         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
31776         (*tm<mode>_full): Fixed z10prop attribute.
31777         (*tst<mode>_extimm): Fixed z10prop attribute.
31778         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
31779         (*tstqiCCT_cconly): Fixed z10prop attribute.
31780         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
31781         (*movsi_larl): Fixed z10prop attribute.
31782         (*movsi_zarch): Fixed z10prop attribute.
31783         (*movsi_eas): Fixed z10prop attribute.
31784         (*movhi): Fixed z10prop attribute.
31785         (*movqi): Fixed z10prop attribute.
31786         (*movstrictqi): Fixed z10prop attribute.
31787         (*mov<mode>): Fixed z10prop attribute.
31788         (*movcc): Fixed z10prop attribute.
31789         (*sethighpartdi_64): Fixed z10prop attribute.
31790         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
31791         (*negdi2_sign_cc): Fixed z10prop attribute.
31792         (*negdi2_sign): Fixed z10prop attribute.
31793         (*absdi2_sign_cc): Fixed z10prop attribute.
31794         (*absdi2_sign): Fixed z10prop attribute.
31795         (*negabsdi2_sign_cc): Fixed z10prop attribute.
31796         (*negabsdi2_sign): Fixed z10prop attribute.
31797         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
31798         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
31799         (doloop_si64): Fixed z10prop attribute.
31800         (doloop_si31): Fixed z10prop attribute.
31801         (doloop_long): Fixed z10prop attribute.
31802         (indirect_jump): Fixed z10prop attribute.
31803         (nop): Fixed z10prop attribute.
31804         (main_base_64): Fixed z10prop attribute.
31805         (reload_base_64): Fixed z10prop attribute.
31806
31807 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
31808
31809         PR rtl-optimization/38740
31810         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
31811         if !optimize.
31812         * config/mips/mips.c (mips_reorg): Likewise.
31813
31814 2009-01-28  Richard Guenther  <rguenther@suse.de>
31815
31816         PR tree-optimization/38926
31817         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
31818         with the correct value id to a value.
31819         (do_regular_insertion): Use the value number of edoubleprime
31820         for the value number of the expr.
31821
31822         Revert
31823         2008-08-21  Richard Guenther  <rguenther@suse.de>
31824
31825         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
31826         a PHI ask VN if it is already available.
31827         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
31828         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
31829
31830 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
31831
31832         PR middle-end/38934
31833         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
31834         set to varying whenever max has TREE_OVERFLOW set, similarly
31835         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
31836
31837 2009-01-28  Richard Guenther  <rguenther@suse.de>
31838
31839         PR middle-end/38908
31840         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
31841         uninitialized aggregate uses in call arguments.
31842
31843 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
31844
31845         PR tree-optimization/38984
31846         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
31847         the nothing_id variable if -fno-delete-null-pointer-checks.
31848
31849 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
31850
31851         PR target/38988
31852         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
31853         (set_got_offset_rex64): Ditto.
31854
31855 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
31856
31857         PR target/38941
31858         * doc/extend.texi: Improve local variable with asm reg.
31859
31860 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
31861
31862         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
31863         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
31864         was not supplied then set warn_packed_bitfield_compat to the
31865         default value of 1.
31866         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
31867         against 1.
31868
31869 2009-01-27  Richard Guenther  <rguenther@suse.de>
31870
31871         PR tree-optimization/38503
31872         * cfgexpand.c (expand_gimple_basic_block): Ignore
31873         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
31874         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
31875         variables that cannot have TBAA applied.
31876         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
31877         statements.
31878
31879 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
31880
31881         PR middle-end/38969
31882         * calls.c (initialize_argument_information): Do not wrap complex
31883         arguments in SAVE_EXPR.
31884
31885 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
31886
31887         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
31888         (INSTALL_LIBGCC): Revert typo commit.
31889
31890 2009-01-26  Richard Guenther  <rguenther@suse.de>
31891
31892         PR tree-optimization/38745
31893         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
31894         from special handling.
31895
31896 2009-01-26  Richard Guenther  <rguenther@suse.de>
31897
31898         PR tree-optimization/38745
31899         * tree-ssa.c (execute_update_addresses_taken): Do not include
31900         variables that cannot possibly be a register in not_reg_needs.
31901         Do not clear TREE_ADDRESSABLE on vars that may not become
31902         registers.
31903         * tree-ssa.c (update_alias_info_1): Include those in the set
31904         of addressable vars.
31905
31906 2009-01-26  Richard Guenther  <rguenther@suse.de>
31907
31908         PR middle-end/38851
31909         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
31910         * tree-ssa-dse.c: Include langhooks.h
31911         (execute_simple_dse): Remove stores with zero size.
31912
31913 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
31914
31915         PR c/38957
31916         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
31917         as PLUS_EXPR.
31918
31919 2009-01-24  Julian Brown  <julian@codesourcery.com>
31920
31921         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
31922         config/arm/linux-atomic.c.
31923         * config/arm/linux-atomic.c: New.
31924
31925 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
31926
31927         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
31928         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
31929         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
31930
31931 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
31932
31933         PR c/38938
31934         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
31935         properly.
31936
31937 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
31938
31939         PR tree-optimization/38953
31940         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
31941         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
31942         (gloog): Split the exit of the scop when the scop exit is a loop exit.
31943         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
31944         changed the CFG.
31945
31946 2009-01-24  Paul Brook  <paul@codesourcery.com>
31947
31948         * config/arm/neon.md (neon_type): Move to arm.md.
31949         (neon_mov<VSTRUCT>): Add neon_type attribute.
31950         * config/arm/arm.md (neon_type): Move to here.
31951         (conds): Add "unconditioal" and use as default for NEON insns.
31952
31953 2009-01-24  Ben Elliston  <bje@au.ibm.com>
31954
31955         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
31956         void *' warning from -Wc++-compat.
31957         * Makefile.in (dominance.o-warn): Remove.
31958
31959 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
31960
31961         PR tree-optimization/38932
31962         * fold-const.c (fold_unary_ignore_overflow): New.
31963         * tree.h (fold_unary_ignore_overflow): Declare.
31964         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
31965         * tree-ssa-sccvn.c (visit_reference_op_load,
31966         simplify_unary_expression): Likewise.
31967
31968 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
31969
31970         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
31971         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
31972         regardless of their type.
31973         * c-common.c (handle_packed_attribute): Don't ignore packed on
31974         bitfields.
31975         * c.opt (Wpacked-bitfield-compat): New warning option.
31976         * stor-layout.c (place_field): Warn if offset of a field changed.
31977         * doc/extend.texi (packed): Mention the ABI change.
31978         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
31979         (Warning Options): Add it to the list.
31980
31981 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
31982
31983         * c-opts.c (c_common_post_options): Fix a typo in comments.
31984
31985 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
31986
31987         PR middle-end/38615
31988         * gimplify.c (gimplify_init_constructor): Fix promotion of const
31989         variables to static.
31990         * doc/invoke.texi (-fmerge-all-constants): Update description.
31991
31992 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
31993
31994         PR target/38931
31995         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
31996         (*movdi_1_rex64): Use type "mmx" for alternative 5.
31997
31998 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
31999
32000         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
32001         a word boundary.
32002         (LOCAL_ALIGNMENT): Similarly.
32003
32004 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
32005             Joseph Myers  <joseph@codesourcery.com>
32006
32007         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
32008         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
32009         * config/arm/arm-tune.md: Regenerate.
32010         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
32011         -march=iwmmxt2.
32012
32013 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
32014
32015         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
32016         version number to five.
32017
32018 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
32019
32020         PR c++/38930
32021         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
32022         * c-common.c (set_underlying_type): Likewise.
32023         (is_typedef_decl ): Likewise
32024         * tree.h: Likewise
32025         (set_underlying_type): Likewise.
32026         (is_typedef_type): Likewise.
32027
32028 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
32029
32030         PR middle-end/38587
32031         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
32032         crossing setjmps.
32033
32034 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
32035
32036         PR bootstrap/37660
32037         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
32038         (LIBGCC_SPEC):  Don't define.
32039         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
32040
32041 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
32042
32043         PR rtl-optimization/38879
32044         * alias.c (base_alias_check): Unaligned access via AND address can
32045         alias all surrounding object types except those with sizes equal
32046         or wider than the size of unaligned access.
32047
32048 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
32049
32050         PR c++/26693
32051         * c-decl.c (clone_underlying_type): Move this ...
32052         * c-common.c (set_underlying_type): ... here.
32053         Also, make sure the function properly sets TYPE_STUB_DECL() on
32054         the newly created typedef variant type.
32055         (is_typedef_decl ): New entry point.
32056         * tree.h: Added a new member member_types_needing_access_check to
32057         struct tree_decl_non_common.
32058         (set_underlying_type): New entry point.
32059         (is_typedef_type): Likewise.
32060
32061 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
32062
32063         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
32064         Check whether two instructions have memory references that
32065         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
32066         are helper functions for traversing.
32067         * alias.h (insn_alias_sets_confilict_p): New prototypes.
32068         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
32069         not to draw dependency edge for instructions with non-conflicting
32070         alias sets.
32071
32072 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
32073
32074         PR other/38758
32075         * longlong.h: Update copyright years.  Use soft-fp license notice.
32076         Sync __clz_tab declaration with glibc.
32077
32078 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
32079
32080         PR target/30687
32081         * doc/extend.texi (syscall_linkage): New.
32082         (version_id): Modify.
32083
32084 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32085             Richard Guenther  <rguenther@suse.de>
32086
32087         PR tree-optimization/38747
32088         PR tree-optimization/38748
32089         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
32090         conversion if the base address is an indirect reference and the
32091         aliasing sets could cause issues.
32092
32093 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
32094
32095         * common.opt (fgraphite, fgraphite-identity): Add comment for
32096         explaining why these options are not documented.
32097
32098 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
32099
32100         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
32101         gimple_call_lhs is NULL.
32102
32103 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
32104
32105         PR target/38868
32106         * emit-rtl.c (adjust_address_1): Make sure memref is never
32107         overwritten.
32108
32109 2009-01-20  Ben Elliston  <bje@au.ibm.com>
32110
32111         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
32112         const qualifier from arg parameter. Remove unnecessary cast to char *.
32113         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
32114         const qualifier from arg 2.
32115
32116 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
32117
32118         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
32119
32120 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
32121
32122         PR c/38869
32123         * rtl.h (reinit_regs): New prototype.
32124         * regclass.c: Include ira.h.
32125         (reinit_regs): New.
32126         * Makefile.in (regclass.o): Add ira.h.
32127         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
32128
32129 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
32130
32131         PR target/38736
32132         * c-common.c (handle_aligned_attribute): Use
32133         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
32134         default alignment value.
32135
32136         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
32137
32138         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
32139         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
32140
32141         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
32142         __BIGGEST_ALIGNMENT__.
32143
32144         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
32145
32146 2009-01-18  Richard Guenther  <rguenther@suse.de>
32147
32148         PR tree-optimization/38819
32149         * tree-flow.h (operation_could_trap_helper_p): Declare.
32150         * tree-eh.c (operation_could_trap_helper_p): Export.
32151         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
32152         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
32153         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
32154         are about to insert a possibly trapping instruction and fail
32155         in this case.
32156
32157 2009-01-18  Andreas Schwab  <schwab@suse.de>
32158
32159         * doc/install.texi (Configuration): Remove obsolete paragraph
32160         about use of --with-gnu-ld with --with-gnu-as.
32161
32162 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
32163
32164         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
32165         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
32166         Follow spelling conventions.
32167
32168 2009-01-18  Ben Elliston  <bje@au.ibm.com>
32169
32170         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
32171         C++ warning about implicit conversion from void * to struct
32172         bitmap_head_def *.
32173         (bitmap_obstack_free): Likewise for bitmap_element *.
32174         * Makefile.in (bitmap.o-warn): Remove.
32175
32176 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
32177
32178         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
32179
32180 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
32181             Tobias Grosser  <tobi.grosser@amd.com>
32182
32183         * graphite.c (graphite_trans_scop_block): Do not block single
32184         nested loops.
32185
32186 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
32187
32188         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
32189         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
32190         test with assertion.
32191
32192 2009-01-16  Richard Guenther  <rguenther@suse.de>
32193
32194         PR tree-optimization/38835
32195         PR middle-end/36227
32196         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
32197         and INT + PTR -> (INT)(PTR p+ INT) folding.
32198         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
32199
32200 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
32201
32202         PR target/38554
32203         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
32204         the subreg from a lowpart subreg if it is also casting the value.
32205
32206 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
32207             Tobias Grosser  <tobi.grosser@amd.com>
32208
32209         * graphite.c (compare_prefix_loops): New.
32210         (build_scop_canonical_schedules): Rewritten.
32211         (graphite_transform_loops): Move build_scop_canonical_schedules
32212         after build_scop_iteration_domain.
32213
32214 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
32215             Tobias Grosser  <tobi.grosser@amd.com>
32216
32217         * graphite.c (add_conditions_to_domain): Add the loops to
32218         the dimension of the iteration domain.  Do copy the domain
32219         only when it exists.
32220         (build_scop_conditions_1): Do not call add_conditions_to_domain.
32221         (add_conditions_to_constraints): New.
32222         (can_generate_code_stmt, can_generate_code): Removed.
32223         (gloog): Do not call can_generate_code.
32224         (graphite_transform_loops): Call add_conditions_to_constraints
32225         after building the iteration domain.
32226
32227 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
32228
32229         PR tree-optimization/38789
32230         * tree-ssa-threadedge.c
32231         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
32232         __builtin_constant_p.
32233
32234 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
32235
32236         * dce.c (delete_unmarked_insns): Reversed the order that insns are
32237         examined before deleting them.
32238
32239 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
32240
32241         * function.c (aggregate_value_p): Correctly extract the function
32242         type from CALL_EXPR_FN lookup.
32243
32244 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
32245
32246         * config/picochip/picochip.c (picochip_override_options): Revert
32247         CFI asm flag disable commited previously.
32248
32249 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
32250             Tobias Grosser  <tobi.grosser@amd.com>
32251             Jan Sjodin  <jan.sjodin@amd.com>
32252
32253         * graphite.c (scan_tree_for_params): On substractions negate
32254         all the coefficients of the term.
32255         (clast_to_gcc_expression_red): New.  Handle reduction expressions
32256         of more than two operands.
32257         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
32258         (get_vdef_before_scop): Handle also the case of default definitions.
32259
32260 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
32261
32262         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
32263         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
32264         Also use them when walking CALL_INSN_FUNCTION_USAGE.
32265
32266 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
32267             Joey Ye  <joey.ye@intel.com>
32268
32269         PR middle-end/37843
32270         * cfgexpand.c (expand_stack_alignment): Don't update stack
32271         boundary nor check incoming stack boundary here.
32272         (gimple_expand_cfg): Update stack boundary and check incoming
32273         stack boundary here.
32274
32275 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
32276
32277         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
32278
32279 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
32280
32281         PR rtl-optimization/38245
32282         * calls.c (expand_call): Add stack arguments to
32283         CALL_INSN_FUNCTION_USAGE even for pure calls (when
32284         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
32285         in regs and partially in memory or BLKmode arguments.
32286         (emit_library_call_value_1): Add stack arguments to
32287         CALL_INSN_FUNCTION_USAGE even for pure calls (when
32288         ACCUMULATE_OUTGOING_ARGS).
32289         * dce.c: Include tm_p.h.
32290         (find_call_stack_args): New function.
32291         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
32292         argument.
32293         (mark_insn): Call find_call_stack_args for CALL_Ps.
32294         (prescan_insns_for_dce): Walk insns backwards in bb rather than
32295         forwards.  Allocate and free arg_stores bitmap if needed, pass it
32296         down to deletable_insn_p, don't mark stores set in arg_stores
32297         bitmap, clear the bitmap at the beginning of each bb.
32298         * Makefile.in (dce.o): Depend on $(TM_P_H).
32299
32300 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
32301
32302         PR target/22599
32303         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
32304         to make sure the insn is a conditional test (bug 22599).  Reformat a
32305         few long lines.
32306
32307 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
32308
32309         PR middle-end/38431
32310         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
32311         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
32312         (gloog): Do not call cleanup_tree_cfg.
32313         (graphite_transform_loops): Call cleanup_tree_cfg after all
32314         scops have been code generated.
32315
32316 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
32317         * doc/gty.texi (Invoking the garbage collector): Added new node
32318         and section documenting ggc_collect.
32319
32320 2009-01-14  Richard Guenther  <rguenther@suse.de>
32321
32322         PR tree-optimization/38826
32323         PR middle-end/38477
32324         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
32325         initialization notes only if we actually emitted a warning.
32326         (intra_create_variable_infos): Add constraints for a result decl
32327         that is passed by hidden reference.
32328         (build_pred_graph): Mark all related variables non-direct on
32329         address-taking.
32330
32331 2009-01-14  Nick Clifton  <nickc@redhat.com>
32332
32333         * ira-conflicts.c: Include addresses.h for the definition of
32334         base_reg_class.
32335         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
32336         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
32337
32338 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
32339
32340         PR target/38811
32341         * Makefile.in (ira-lives.o): Add except.h.
32342
32343         * ira-lives.c: Include except.h.
32344         (process_bb_node_lives): Process can_throw_internal.
32345
32346 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
32347
32348         PR rtl-optimization/38774
32349         * combine.c (simplify_set): When undoing cc_use change, don't do
32350         PUT_CODE on the newly created comparison, but instead put back the
32351         old comparison.
32352
32353 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
32354
32355         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
32356         values.  Remove duplicate arm8 entry.
32357
32358 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
32359
32360         PR tree-optimization/38786
32361         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
32362         the SSA_NAME case of expand_scalar_variables_expr.
32363         Set the type of an expression to the type of its assign statement.
32364         (expand_scalar_variables_expr): Also gather the scalar computation
32365         used to index the memory access.  Do not pass loop_p.
32366         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
32367         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
32368         the gimple_stmt_iterator where it inserts new code.
32369         Do not pass loop_p.
32370         (copy_bb_and_scalar_dependences): Do not pass loop_p.
32371         (translate_clast): Update call to copy_bb_and_scalar_dependences.
32372
32373 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
32374
32375         * graphite.h (debug_value): Removed.
32376         * graphite.c (debug_value): Removed.
32377
32378 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
32379
32380         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
32381         ldrd/strd with two 32-bit instructions.
32382
32383 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
32384
32385         * config/arm/arm.c (struct processors): Pass for speed down into
32386         cost helper functions.
32387         (const_ok_for_op): Handle COMPARE and inequality nodes.
32388         (arm_rtx_costs_1): Rewrite.
32389         (arm_size_rtx_costs): Update prototype.
32390         (arm_rtx_costs): Pass speed down to helper functions.
32391         (arm_slowmul_rtx_costs): Rework cost calculations.
32392         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
32393         (arm_9e_rtx_costs): Likewise.
32394
32395 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
32396
32397         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
32398         relocations of local symbols wider than UNITS_PER_WORD are not valid.
32399         (alpha_legitimize_address): Do not split local symbols wider than
32400         UNITS_PER_WORD into HIGH/LO_SUM parts.
32401
32402 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
32403
32404         PR bootstrap/38580
32405         * gcc.c (process_command): Replace call to execvp with calls
32406         to pex_one and exit.
32407
32408 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
32409
32410         PR target/29141
32411         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
32412         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
32413         variant for devices with 3-byte PC.
32414         (__tablejump_elpm__): New.
32415
32416 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
32417
32418         PR c/32041
32419         * c-parser.c (c_parser_postfix_expression): Allow `->' in
32420         offsetof member-designator, handle it as `[0].'.
32421
32422 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32423
32424         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
32425         function when not using named sections on targets with named sections
32426         if branch distance is less than 262132.
32427
32428 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
32429
32430         * combine.c (combine_instructions):  Recompute
32431         optimize_this_for_speed_p  for each BB in the main combine loop.
32432
32433 2009-01-12  Tomas Bily  <tbily@suse.cz>
32434
32435         PR middlend/38385
32436         * tree-loop-distribution.c (prop_phis): New function.
32437         (generate_builtin): Call prop_phis.
32438
32439 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
32440
32441         PR tree-optimization/38807
32442         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
32443         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
32444
32445 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
32446
32447         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
32448         subreg of op0 to the original op0.
32449
32450 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
32451
32452         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
32453
32454 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
32455
32456         PR debug/7055
32457         * mips-tfile.c (parse_def): Fix parsing of def strings
32458         starting with digits.
32459
32460 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
32461
32462         PR target/38695
32463         * config/arm/arm.c (arm_is_long_call_p): Don't call
32464         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
32465
32466 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
32467
32468         * regrename.c (regrename_optimize): Fix dumping.
32469         (find_oldest_value_reg): Preserve REG_POINTER.
32470         (copy_hardreg_forward_1): Likewise.
32471
32472 2009-01-09  Diego Novillo  <dnovillo@google.com>
32473
32474         * gimple.h (struct gimple_statement_base) <uid>: Document
32475         the restrictions on its use.
32476         (gimple_uid): Tidy.
32477         (gimple_set_uid): Tidy.
32478
32479 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
32480
32481         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
32482         zero guard even if align_bytes != 0 and count is smaller than
32483         size_needed.
32484
32485 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
32486
32487         PR rtl-optimization/38495
32488         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
32489         (add_range_and_copies_from_move_list): Print all added ranges.
32490         Add ranges to memory optimized destination.
32491
32492 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
32493
32494         PR target/38686
32495         PR target/38708
32496         * config/i386/i386.c (override_options): Reject
32497         -mstringop-strategy=rep_8byte with -m32.
32498         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
32499         to 1.  Do count comparison against epilogue_size_needed at compile
32500         time even when count_exp was constant forced into register.  For
32501         size_needed don't jump to epilogue, instead just avoid aligning
32502         and invoke the body algorithm.  If need_zero_guard, add zero guard
32503         even if count is non-zero, but smaller than size_needed + number of
32504         bytes that could be stored for alignment.
32505         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
32506         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
32507         but smaller than size_needed + number of bytes that could be stored
32508         for alignment.  Compare size_needed with epilogue_size_needed instead
32509         of desired_align - align, don't adjust size_needed, pass
32510         epilogue_size_needed to the epilogue expanders.
32511
32512         PR c/35742
32513         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
32514
32515 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32516
32517         * pa.c (last_address): Change to unsigned.
32518         (update_total_code_bytes): Change argument to unsigned.  Don't
32519         check if insn addresses are set.
32520         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
32521         addresses are not set.
32522         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
32523
32524 2009-01-09  Nick Clifton  <nickc@redhat.com>
32525
32526         * config/sh/symbian.c: Replace uses of DECL_INLINE with
32527         DECL_DECLARED_INLINE_P.
32528
32529 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
32530
32531         PR middle-end/38347
32532         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
32533         GET_MODE (op0) in operand_subword_force calls.
32534
32535         PR middle-end/38771
32536         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
32537         fold_convert arg0 operands to TREE_TYPE (op0) first.
32538
32539 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
32540
32541         * params.def (ira-max-conflict-table-size): Decrease default value
32542         to 1000.
32543
32544 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
32545
32546         PR tree-optimization/37031
32547         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
32548         on parameter_set.
32549         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
32550         allocate it using gc instead of heap, use VEC_quick_push instead of
32551         VEC_safe_push.
32552         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
32553         instead of heap, use VEC_quick_push instead of VEC_safe_push.
32554         * tree-data-ref.h (struct access_matrix): Change matrix to gc
32555         allocated vector from heap allocated.
32556         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
32557         * tree-loop-linear.c (linear_transform_loops): Allocate nest
32558         vector only after perfect_loop_nest_depth call.
32559
32560 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
32561             Jan Sjodin  <jan.sjodin@amd.com>
32562
32563         PR tree-optimization/38559
32564         * graphite.c (debug_value, copy_constraint,
32565         swap_constraint_variables, scale_constraint_variable, ): New.
32566         (get_lower_bound, get_upper_bound): Removed.
32567         (graphite_trans_bb_strip_mine): Clean up this code that works
32568         only for constant number of iterations.  Fully copy upper and
32569         lower bound constraints, not only the constant part of them.
32570         * graphite.h (debug_value): Declared.
32571
32572 2009-01-08  Ira Rosen  <irar@il.ibm.com>
32573
32574         PR tree-optimization/37194
32575         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
32576         Don't add the cost of cost model guard in prologue to scalar
32577         outside cost in case of known number of iterations.
32578
32579 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
32580             Alan Modra  <amodra@bigpond.net.au>
32581
32582         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
32583         non-word-aligned REG+CONST addressing.
32584
32585 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
32586
32587         PR target/38706
32588         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
32589         free_after_compilation when outputting a thunk.
32590         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
32591         Do not call free_after_compilation here.
32592
32593 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
32594
32595         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
32596         (ix86_valid_target_attribute_inner_p): Ditto.
32597
32598 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
32599
32600         PR tree-optimization/38492
32601         PR tree-optimization/38498
32602         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
32603         * tree-chrec.h (scev_is_linear_expression): Declared.
32604         * graphite.c (graphite_cannot_represent_loop_niter): New.
32605         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
32606         (graphite_loop_normal_form): Use gcc_assert.
32607         (scan_tree_for_params): Use CASE_CONVERT.
32608         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
32609         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
32610         Use gcc_assert.  Discard scops that contain unhandled cases.
32611         (build_scop_conditions): Return a boolean status for unhandled cases.
32612         (strip_mine_profitable_p): Print the loop number, not its depth.
32613         (is_interchange_valid): Pass the depth of the loop nest, don't
32614         recompute it wrongly.
32615         (graphite_trans_bb_block): Same.
32616         (graphite_trans_bb_block): Print tentative of loop blocking.
32617         (graphite_trans_scop_block): Do not print that the loop has been
32618         blocked.
32619         (graphite_transform_loops): Do not handle scops that contain condition
32620         scalar phi nodes.
32621
32622 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
32623
32624         AVX Programming Reference (December, 2008)
32625         * config/i386/avxintrin.h (_mm256_stream_si256): New.
32626         (_mm256_stream_pd): Likewise.
32627         (_mm256_stream_ps): Likewise.
32628
32629         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
32630         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
32631         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
32632         (bdesc_special_args): Add __builtin_ia32_movntdq256,
32633         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
32634         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
32635         (ix86_expand_special_args_builtin): Likewise.
32636
32637         * config/i386/sse.md (AVXMODEDI): New.
32638         (avx_movnt<mode>): Likewise.
32639         (avx_movnt<mode>): Likewise.
32640         (<sse>_movnt<mode>): Remove AVX support.
32641         (sse2_movntv2di): Likewise.
32642
32643 2009-01-07  Richard Guenther  <rguenther@suse.de>
32644
32645         PR middle-end/38751
32646         * fold-const.c (extract_muldiv): Remove obsolete comment.
32647         (fold_plusminus_mult_expr): Undo MINUS_EXPR
32648         to PLUS_EXPR canonicalization for the canonicalization.
32649
32650 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
32651
32652         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
32653         hosted cross-compilers generating less efficient code.
32654
32655 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
32656
32657         * function.h (rtl_data): Add a dbr_scheduled_p field.
32658         * reorg.c (dbr_schedule): Set it.
32659         (gate_handle_delay_slots): Check it.
32660         * config/mips/mips.c (mips_base_delayed_branch): Delete.
32661         (mips_reorg): Check flag_delayed_branch instead of
32662         mips_base_delayed_branch.
32663         (mips_override_options): Don't set mips_base_delayed_branch
32664         or flag_delayed_branch.
32665
32666 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
32667
32668         PR rtl-optimization/38426.
32669         * ira.c (ira): Set current_function_is_leaf earlier.
32670
32671 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
32672
32673         PR rtl-optimization/38722
32674         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
32675         too early, only set a flag and modify after last possible
32676         undo_all point.
32677
32678 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
32679
32680         PR c/34252
32681         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
32682         * real.c (decimal_single_format): Correct values of emin and emax.
32683         (decimal_double_format): Ditto.
32684         (decimal_quad_format): Ditto.
32685         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
32686         computation of DECnn_MIN and DECnn_MAX for corrected values of
32687         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
32688         __DECnn_MIN__, and adjust its computation for the corrected value
32689         of emin.
32690
32691 2009-01-06  Jan Hubicka  <jh@suse.cz>
32692
32693         PR target/38744
32694         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
32695
32696 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
32697
32698         * doc/contrib.texi (Contributors): Slightly adjust the end note.
32699         Add Robert Clark to the list of testers.
32700
32701 2009-01-06  Jan Hubicka  <jh@suse.cz>
32702             Kai Tietz  <kai.tietz@onevision.com>
32703
32704         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
32705         * config/i386/i386.c (ix86_expand_call): Add clobbers.
32706
32707 2009-01-06  Jan Hubicka  <jh@suse.cz>
32708             Kai Tietz  <kai.tietz@onevision.com>
32709
32710         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
32711         for w64 ABI.
32712         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
32713         (ix86_nsaved_regs): Count only general purpose regs.
32714         (ix86_nsaved_sseregs): New.
32715         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
32716         to 16 for w64; compute padding and size of sse reg save area.
32717         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
32718         general purpose regs.
32719         (ix86_emit_save_sse_regs_using_mov): New.
32720         (ix86_expand_prologue): Save SSE regs if needed.
32721         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
32722         (ix86_emit_restore_sse_regs_using_mov): New.
32723         (ix86_expand_epilogue): Save SSE regs if needed.
32724
32725 2009-01-06  Jan Hubicka  <jh@suse.cz>
32726             Kai Tietz  <kai.tietz@onevision.com>
32727
32728         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
32729         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
32730         functions when accumulate outgoing args is off.
32731
32732 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
32733
32734         PR bootstrap/38742
32735         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
32736         before using pseudos_have_intersected_live_ranges_p.
32737
32738         * ira-int.h (ira_assert): Always define.
32739
32740 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
32741
32742         AVX Programming Reference (December, 2008)
32743         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
32744         (_mm256_permute2_pd): Likewise.
32745         (_mm_permute2_ps): Likewise.
32746         (_mm256_permute2_ps): Likewise.
32747         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
32748         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
32749
32750         * config/i386/i386.c (ix86_builtins): Remove
32751         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
32752         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
32753         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
32754         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
32755         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
32756         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
32757         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
32758         __builtin_ia32_vpermil2ps256.
32759         (ix86_init_mmx_sse_builtins): Updated.
32760         (ix86_expand_args_builtin): Likewise.
32761
32762 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32763
32764         * pa.c (output_call): Relocate non-jump insns in the delay slot of
32765         long absolute calls when generating PA 2.0 code.
32766
32767 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
32768
32769         PR rtl-optimization/38583
32770         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
32771
32772         * params.def (ira-max-conflict-table-size): New.
32773
32774         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
32775
32776         * ira.h (ira_conflicts_p): New external definition.
32777
32778         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
32779         table.  Report this.  Return result of building.
32780         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
32781         building conflict table.
32782
32783         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
32784         (ira_color): Use ira_conflicts_p.
32785
32786         * global.c: Include ira.h.
32787         (pseudo_for_reload_consideration_p, build_insn_chain): Use
32788         ira_conflicts_p.
32789
32790         * Makefile.in (global.o): Add ira.h.
32791
32792         * ira-build.c (mark_all_loops_for_removal,
32793         propagate_some_info_from_allocno): New.
32794         (remove_unnecessary_allocnos): Call
32795         propagate_some_info_from_allocno.
32796         (remove_low_level_allocnos): New.
32797         (remove_unnecessary_regions): Add parameter.  Call
32798         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
32799         parameter to remove_unnecessary_regions.
32800         (ira_build): Remove all regions but root if the conflict table was
32801         not built.  Update conflict hard regs for allocnos crossing calls.
32802
32803         * ira.c (ira_conflicts_p): New global.
32804         (ira): Define and use ira_conflicts_p.
32805
32806         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
32807         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
32808         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
32809
32810 2009-01-06  Ben Elliston  <bje@au.ibm.com>
32811
32812         * gengtype-lex.l (YY_NO_INPUT): Define.
32813
32814 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32815
32816         PR c/34911
32817         * c-common.c (handle_vector_size_attribute): Also reject
32818         BOOLEAN_TYPE types.
32819
32820 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
32821
32822         PR tree-optimization/38492
32823         * graphite.c (rename_map_elt, debug_rename_elt,
32824         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
32825         rename_map_elt_info, eq_rename_map_elts,
32826         get_new_name_from_old_name, bb_in_sese_p): Moved around.
32827         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
32828         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
32829         (sese_build_livein_liveouts): New.
32830         (new_sese, free_sese): New.
32831         (new_scop): Call new_sese.
32832         (free_scop): Call free_sese.
32833         (rename_variables_from_edge, rename_phis_end_scop): Removed.
32834         (register_old_new_names): Renamed register_old_and_new_names.
32835         (register_scop_liveout_renames, add_loop_exit_phis,
32836         insert_loop_close_phis, struct igp,
32837         default_liveout_before_guard, add_guard_exit_phis,
32838         insert_guard_phis, copy_renames): New.
32839         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
32840         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
32841         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
32842         (scop_adjust_phis_for_liveouts): New.
32843         (gloog): Call scop_adjust_phis_for_liveouts.
32844
32845         * graphite.h (struct sese): Documented.  Added fields liveout,
32846         num_ver and livein.
32847         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
32848         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
32849         (struct scop): Added field liveout_renames.
32850         (SCOP_LIVEOUT_RENAMES): New.
32851
32852 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
32853
32854         PR tree-optimization/38510
32855         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
32856         (translate_clast): Call recompute_all_dominators before
32857         graphite_verify.
32858         (gloog): Call recompute_all_dominators before graphite_verify.
32859
32860 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
32861             Jan Sjodin  <jan.sjodin@amd.com>
32862
32863         PR tree-optimization/38500
32864         * graphite.c (create_sese_edges): Call fix_loop_structure after
32865         splitting blocks.
32866
32867 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
32868
32869         * config.gcc: Add m32r*-*-rtems*.
32870         * config/m32r/rtems.h: New file.
32871
32872 2009-01-05  Ben Elliston  <bje@au.ibm.com>
32873
32874         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
32875         (.po.pox): Likewise.
32876         (po/gcc.pot): Likewise.
32877
32878 2009-01-04  David S. Miller  <davem@davemloft.net>
32879
32880         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
32881         (STARTING_FRAME_OFFSET): Always set to zero.
32882
32883 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
32884
32885         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
32886         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
32887         fixed-point types, and vectors of the same.
32888
32889 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
32890
32891         * config/mips/sync.md (*mb_barrier): Rename to...
32892         (*memory_barrier): ...this.
32893
32894 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
32895
32896         * doc/extend.texi (Function Attributes): Move @cindex after @item
32897         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
32898         and put in alphabetical order. Fix 'target' name and put in order.
32899         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
32900         typos.
32901
32902 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
32903
32904         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
32905         (memory_barrier): Expand as unspec instead of unspec_volatile.
32906         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32907         (*memory_barrier): Define as unspec instead of unspec_volatile.
32908         Use (match_dup 0) as input operand.
32909
32910         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
32911         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
32912         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
32913         scratch register.  Remove operand 1.
32914         (*stbar): Define as unspec instead of unspec_volatile.
32915         Use (match_dup 0) as input operand, remove (const_int 8).
32916         (*membar): Define as unspec instead of unspec_volatile.
32917         Use (match_dup 0) as input operand, remove input operand 2.
32918
32919         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
32920         (memory_barrier): Expand as unspec instead of unspec_volatile.
32921         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32922         (*memory_barrier): Define as unspec instead of unspec_volatile.
32923         Use (match_dup 0) as input operand.
32924
32925         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
32926         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32927         Set volatile flag on operand 0.
32928         (*memory_barrier): New insn pattern.
32929
32930         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
32931         insn operands.
32932         (*memory_barrier): Use (match_dup 0) as input operand.
32933
32934         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
32935         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32936         Set volatile flag on operand 0.
32937         (*mb_internal): New insn pattern.
32938
32939         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
32940
32941 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
32942
32943         PR middle-end/38586
32944         * function.c (struct temp_slot): Move to the section of the file
32945         that deals with temp slots.  Remove field 'address'.
32946         (temp_slot_address_table): New hash table of address -> temp slot.
32947         (struct temp_slot_address_entry): New struct, items for the table.
32948         (temp_slot_address_compute_hash, temp_slot_address_hash,
32949         temp_slot_address_eq, insert_temp_slot_address): Support functions
32950         for the new table.
32951         (find_temp_slot_from_address): Rewrite to use the new hash table.
32952         (remove_unused_temp_slot_addresses): Remove addresses of temp
32953         slots that have been made available.
32954         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
32955         worker function for remove_unused_temp_slot_addresses.
32956         (assign_stack_temp_for_type): Don't clear the temp slot address list.
32957         Add the temp slot address to the address -> temp slot map.
32958         (update_temp_slot_address): Update via insert_temp_slot_address.
32959         (free_temp_slots): Call remove_unused_temp_slot_addresses.
32960         (pop_temp_slots): Likewise.
32961         (init_temp_slots): Allocate the address -> temp slot map, or empty
32962         the map if it is already allocated.
32963         (prepare_function_start): Initialize temp slot processing.
32964
32965 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
32966
32967         PR middle-end/38584
32968         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
32969         Calculate the size of all stack vars assuming no packing of stack
32970         vars will happen, replacing a quadratic algorithm with a linear one.
32971
32972 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
32973
32974         PR target/38707
32975         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
32976         can't be used.
32977
32978 2009-01-03  Diego Novillo  <dnovillo@google.com>
32979
32980         * doc/contrib.texi: Update contributions.
32981
32982 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
32983
32984         PR c++/38705
32985         * builtins.c (fold_builtin_memory_op): Give up if either operand
32986         is volatile.  Set srctype or desttype to non-qualified version
32987         of the other type.
32988
32989         PR c/38700
32990         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
32991         and FUNCTION_DECLs.
32992
32993 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
32994
32995         PR rtl-optimization/35805
32996         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
32997         problem if fast dce is able to remove any instructions.
32998         * dce.c (dce_process_block): Fix dump message.
32999
33000 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
33001
33002         PR 33649
33003         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
33004
33005 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
33006
33007         PR middle-end/38690
33008         * tree-flow.h (op_code_prio, op_prio): New prototypes.
33009         * tree-pretty-print.c (op_code_prio): New function.
33010         (op_prio): No longer static.  Use op_code_prio.
33011         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
33012         Use op_prio and op_code_prio to determine if () should be
33013         printed around operand(s) or not.
33014
33015         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
33016         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
33017         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
33018         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
33019         pp_character instead of pp_string for single letter printing.
33020
33021 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
33022
33023         * doc/extend.texi: Fix '#pragma GCC option' typo.
33024
33025 2009-01-02  Richard Guenther  <rguenther@suse.de>
33026
33027         * doc/install.texi (--enable-checking): Mention different
33028         default for stage1.
33029         (--enable-stage1-checking): Document.
33030
33031 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
33032
33033         PR middle-end/30142
33034         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
33035         case to be an error.
33036
33037 2009-01-02  Ben Elliston  <bje@au.ibm.com>
33038
33039         * config/fp-bit.h (pack_d): Constify argument.
33040         * config/fp-bit.c (makenan): Constify return type. Remove casts.
33041         (isnan): Constify argument.
33042         (isinf): Likewise.
33043         (iszero): Likewise.
33044         (pack_d): Likewise.
33045         (_fpadd_parts): Constify return type.
33046         (_fpmul_parts): Likewise.
33047         (_fpdiv_parts): Likewise.
33048
33049 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
33050
33051         PR c/36489
33052         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
33053         warn about overwriting initializer with side-effects or
33054         -Woverride-init if !IMPLICIT.
33055         (output_init_element): Likewise.  Pass IMPLICIT down to
33056         add_pending_init.
33057         (process_init_element): Add IMPLICIT argument.  Pass it down
33058         to output_init_element.
33059         (push_init_element, pop_init_level, set_designator): Adjust
33060         process_init_element callers.
33061         (set_nonincremental_init, set_nonincremental_init_from_string):
33062         Adjust add_pending_init callers.
33063         (output_pending_init_elements): Adjust output_init_element callers.
33064         * c-tree.h (process_init_element): Adjust prototype.
33065         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
33066         process_init_element callers.
33067
33068 \f
33069 Copyright (C) 2009 Free Software Foundation, Inc.
33070
33071 Copying and distribution of this file, with or without modification,
33072 are permitted in any medium without royalty provided the copyright
33073 notice and this notice are preserved.