OSDN Git Service

2009-11-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2
3         * config/s390/s390.c (last_scheduled_insn): New variable.
4         (s390_fpload_toreg, s390_z10_prevent_earlyload_conflicts): New
5         functions.
6         (s390_sched_reorder, s390_sched_variable_issue): New functions.
7         (TARGET_SCHED_VARIABLE_ISSUE, TARGET_SCHED_REORDER): Target hooks
8         defined.
9
10 2009-11-27  Michael Matz  <matz@suse.de>
11
12         PR c++/41906
13         * tree-eh.c (lower_catch): Stop after expanding a catch-all.
14
15 2009-11-27  Richard Guenther  <rguenther@suse.de>
16
17         * timevar.def (TV_LOOP_MOVE_INVARIANTS, TV_LOOP_UNSWITCH,
18         TV_LOOP_UNROLL, TV_LOOP_DOLOOP): New timevars.
19         * loop-init.c (pass_rtl_move_loop_invariants): Use
20         TV_LOOP_MOVE_INVARIANTS.
21         (pass_rtl_unswitch): Use TV_LOOP_UNSWITCH.
22         (pass_rtl_unroll_and_peel): Use TV_LOOP_UNROLL.
23         (pass_rtl_doloop): Use TV_LOOP_DOLOOP.
24
25 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
26
27         * emit-rtl.c (next_active_insn, prev_active_insn): Correct
28         comment.
29
30 2009-11-27  Jakub Jelinek  <jakub@redhat.com>
31
32         * config/i386/i386.c (ix86_emit_restore_sse_regs_using_mov): Remove
33         unused insn variable.
34         * genemit.c (output_peephole2_scratches): Only declare and initialize
35         _regs_allocated if it will be ever used.
36         * cfgloopmanip.c (create_empty_if_region_on_edge): Remove unused
37         succ_bb variable.
38         (create_empty_loop_on_edge): Remove unused freq and cnt variables.
39         * unwind-c.c (PERSONALITY_FUNCTION): Remove unused action_record
40         variable.
41
42         * opts.c (decode_options): If optimize is bigger than 255,
43         set it to 255.
44
45 2009-11-26  Richard Henderson  <rth@redhat.com>
46
47         * config/i386/sse.md (mulv16qi3): Change back from an expander
48         to an insn-and-split.
49         (mulv4si): Mention AVX not XOP for AVX exception.
50         (*sse2_mulv4si3): Likewise.
51         (mulv2di3): Use vmulld not vpmacsdd for XOP expansion.  Tidy.
52
53 2009-11-26  Bernd Schmidt  <bernd.schmidt@analog.com>
54
55         * cfgexpand (n_stack_vars_conflict): New static variable.
56         (triangular_index): Reduce likelyhood of overflow by performing
57         the division before the multiplication.
58         (resize_stack_vars_conflict): Call fatal_error if overflow
59         occurred in triangular_index.  Update n_stack_vars_conflict.
60
61         PR rtl-opt/38582
62         * regrename.c (struct du_chain): Remove member earlyclobber.
63         (scan_rtx_reg): Don't set it.  Remove argument earlyclobber,
64         all callers changed.
65         (scan_rtx): Remove argument earlyclobber, all callers changed.
66         (hide_operands, restore_operands, record_out_operands): New functions,
67         broken out of build_def_use.
68         (build_def_use): Call them as necessary.
69
70         * regrename.c (struct du_head): New members id, conflicts,
71         hard_conflicts and cannot_rename.
72         (enum scan_actions): Remove terminate_all_read and
73         terminate_overlapping_read; add mark_all_read.
74         (scan_actions_name): Likewise.
75         (du_head_p): New typedef.  Define a vector type for it.
76         (id_to_chain): New static variable.
77         (note_sets, clear_dead_regs): Delete functions.
78         (free_chain_data): New function.
79         (merge_overlapping_regs): Simply walk the conflicts bitmap.
80         Remove argument B, all callers changed.
81         (regrename_optimize): Allocate id_to_chain.  Ignore chains that have
82         the cannot_rename bit set.  Update regno and nregs of a renamed chain.
83         Call free_chain_data when done.
84         (do_replace): Remove death notes when the renamed reg is set in the
85         last insn; add them if not.
86         (mark_conflict, note_sets_clobbers): New static function.
87         (fail_current_block, current_id, open_chains_set, live_hard_regs): New
88         static variables.
89         (scan_rtx_reg): Keep track of conflicts between chains, and between
90         chains and hard regs.  Don't terminate chains when we find a read we
91         can't handle, mark it unrenameable instead.  For terminate_write,
92         terminate chains that are written with an exact match or a superset
93         of registers.  Set fail_current_block if multi-word lifetimes are too
94         complex to handle.
95         (scan_rtx_address): Use mark_all_read instead of terminate_all_read.
96         (build_def_use): Initialize current_id, live_chains and live_hard_regs;
97         free memory for them when done.
98         Rearrange the steps so that earlyclobbers are noted before reads
99         are processed.  Add new steps to keep track of hard register lifetimes
100         outside insn operands.
101
102 2009-11-26  Richard Guenther  <rguenther@suse.de>
103
104         * tree-ssa-dce.c (nr_walks): New variable.
105         (mark_aliased_reaching_defs_necessary): Adjust oracle cut-off.
106         (perform_tree_ssa_dce): Init nr_walks.
107
108 2009-11-26  Michael Matz  <matz@suse.de>
109
110         PR tree-optimization/41905
111         * tree-eh.c (lower_eh_constructs_2): Don't add assignments
112         below statements that can't fall thru.
113
114 2009-11-26  Michael Matz  <matz@suse.de>
115
116         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
117         expand_builtin_sprintf): Remove.
118         (expand_builtin): Don't call them.
119
120 2009-11-26  Richard Guenther  <rguenther@suse.de>
121
122         * tree-ssa-dce.c (perform_tree_ssa_dce): Allocate visited bitmap.
123
124 2009-11-26  Nick Clifton  <nickc@redhat.com>
125
126         * config/rx/rx.c (rx_expand_epilogue): Add checks for sibcalls
127         being used incorrectly.
128         (rx_function_ok_for_sibcall): New function.  Do not allow indirect
129         sibcalls, or sibcalls from interrupt functions.
130         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
131         * config/rx/rx.md (sibcall): Convert to a define_expand.  Check
132         for a MEM inside a MEM.
133         (sibcall_value): Likewise.
134         (sibcall_internal): New pattern containing old sibcall pattern.
135         (sibcall_value_internal): Likewise.
136
137 2009-11-25  Richard Henderson  <rth@redhat.com>
138
139         * config/i386/i386-builtin-types.awk (DEF_VECTOR_TYPE): Allow an
140         optional 3rd argument to define the mode.
141         * config/i386/i386-builtin-types.def (UQI, UHI, USI, UDI): New.
142         (V2UDI, V4USI, V8UHI, V16UQI): New.
143         (V4SF_FTYPE_V4SF_V4SF_V4SI, V2UDI_FTYPE_V2UDI_V2UDI_V2UDI,
144         V4USI_FTYPE_V4USI_V4USI_V4USI, V8UHI_FTYPE_V8UHI_V8UHI_V8UHI,
145         V16UQI_FTYPE_V16UQI_V16UQI_V16UQI): New.
146         * config/i386/i386-modes.def: Rearrange for double-wide AVX.
147         * config/i386/i386-protos.h (ix86_expand_vec_extract_even_odd): New.
148         * config/i386/i386.c (IX86_BUILTIN_VEC_PERM_*): New.
149         (bdesc_args): Add the builtin definitions to match.
150         (ix86_expand_builtin): Expand them.
151         (ix86_builtin_vectorization_cost): Rename from
152         x86_builtin_vectorization_cost.
153         (ix86_vectorize_builtin_vec_perm, struct expand_vec_perm_d,
154         doublesize_vector_mode, expand_vselect, expand_vselect_vconcat,
155         expand_vec_perm_blend, expand_vec_perm_vpermil,
156         expand_vec_perm_pshufb, expand_vec_perm_1,
157         expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
158         expand_vec_perm_interleave2, expand_vec_perm_pshufb2,
159         expand_vec_perm_even_odd_1, expand_vec_perm_even_odd,
160         ix86_expand_vec_perm_builtin_1, extract_vec_perm_cst,
161         ix86_expand_vec_perm_builtin, ix86_vectorize_builtin_vec_perm_ok,
162         ix86_expand_vec_extract_even_odd, TARGET_VECTORIZE_BUILTIN_VEC_PERM,
163         TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
164         * sse.md (SSEMODE_EO): New.
165         (vec_extract_even<mode>): Use SSEMODE_EO and
166         ix86_expand_vec_extract_even_odd.
167         (vec_extract_odd<mode>): Likewise.
168         (mulv16qi3, vec_pack_trunc_v8hi, vec_pack_trunc_v4si,
169         vec_pack_trunc_v2di): Use ix86_expand_vec_extract_even_odd.
170
171 2009-11-25  Richard Henderson  <rth@redhat.com>
172
173         * target.h (targetm.vectorize.builtin_vec_perm_ok): New.
174         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
175         * hooks.h, hooks.c (hook_bool_tree_tree_true): New.
176         * tree-vect-slp.c (vect_create_mask_and_perm): Don't create
177         the vector constant here...
178         (vect_transform_slp_perm_load): ... do it here instead.  Validate
179         that the permutation vector is implementable by the target.
180
181 2009-11-25  Jakub Jelinek  <jakub@redhat.com>
182
183         * config/rs6000/sysv4.opt (mregnames): Change Var to rs6000_regnames.
184         * config/rs6000/sysv4.h (TARGET_REGNAMES): Define.
185
186         * print-rtl.c (print_rtx): When printing newline, append
187         print_rtx_head and indentation after the newline.
188
189         PR target/42165
190         * config/i386/i386.c (print_operand): For 32-byte memory use
191         YMMWORD in -masm=intel mode.  Use TBYTE instead of XWORD.
192         * config/i386/i386.md (crc32modesuffix): Expand to nothing
193         in -masm=intel mode.
194         (sse4_2_crc32di): Print just crc32 instead of crc32q in
195         -masm=intel mode.
196         * config/i386/mmx.md (*mmx_pinsrw): Print correct size of
197         memory operand in -masm=intel mode.
198         * config/i386/sse.md (*avx_pinsr<ssevecsize>, *sse4_1_pinsrb,
199         *sse2_pinsrw): Likewise.
200         (sse_cvtss2siq, sse_cvtss2siq_2, sse_cvttss2siq): Don't print
201         q suffix in -masm=intel mode.
202
203 2009-11-25  Eric Botcazou  <ebotcazou@adacore.com>
204
205         PR target/10127
206         PR ada/20548
207         PR middle-end/42004
208         * dwarf2out.c (dwarf2out_args_size_adjust): Rename to...
209         (dwarf2out_stack_adjust): ...this.  Do not adjust the arg size for
210         ACCUMULATE_OUTGOING_ARGS targets.  Rename former version to...
211         (dwarf2out_notice_stack_adjust): ...this.  Adjust for above renaming.
212         (dwarf2out_frame_debug_expr): Revert previous change and adjust for
213         above renaming.
214         (dwarf2out_frame_debug): Add ??? comment.  Adjust for above renaming.
215
216 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
217
218         * config/i386/predicates.md (emms_operation): New predicate.
219         (vzeroupper_operation): Ditto.
220         (vzeroall_operation): Improve pattern recognition.
221         * config/i386/sse.md (avx_vzeroupper_rex64): Remove insn pattern.
222         (avx_vzeroupper): Change insn pattern to expander.
223         (*avx_vzeroupper): New insn pattern.  Use vzeroupper_operation
224         predicate.
225         (*avx_vzeroall): Remove operands 1 and 2.
226         * config/i386/mmx.md (mmx_emms): Change insn pattern to expander.
227         (mmx_femms): Ditto.
228         (*mmx_emms): New insn pattern.  Use emms_operation predicate.
229         (*mmx_femms): Ditto.
230         * config/i386/i386.c (enum ix86_builtins)
231         <IX86_BUILTIN_VZEROUPPER_REX64>: Remove.
232         (struct builtin_description) <CODE_FOR_avx_vzeroupper_rex64>:
233         Remove initailization.
234         <CODE_FOR_avx_vzeroupper>: Unconditionally initialize here.
235         
236 2009-11-25  Paul Brook  <paul@codesourcery.com>
237
238         * config/arm/arm.md (consttable_4): Handle (high ...).
239
240 2009-11-25  Robert Nelson  <robert.nelson@digikey.com>
241             Richard Earnshaw  <rearnsha@arm.com>
242
243         * arm.h (enum vfp_reg_type): Add VFP_NONE.
244         * arm.c (all_fpus): Use it for floating point units that aren't based
245         on the VFP architecture.
246         (aapcs_vfp_is_call_or_return_candidate): Make base_mode a pointer to
247         enum machine_mode.
248
249 2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
250
251         * alias.c: Remove trailing white spaces.
252         * alloc-pool.c: Likewise.
253         * alloc-pool.h: Likewise.
254         * attribs.c: Likewise.
255         * auto-inc-dec.c: Likewise.
256         * basic-block.h: Likewise.
257         * bb-reorder.c: Likewise.
258         * bt-load.c: Likewise.
259         * builtins.c: Likewise.
260         * builtins.def: Likewise.
261         * c-common.c: Likewise.
262         * c-common.h: Likewise.
263         * c-cppbuiltin.c: Likewise.
264         * c-decl.c: Likewise.
265         * c-format.c: Likewise.
266         * c-lex.c: Likewise.
267         * c-omp.c: Likewise.
268         * c-opts.c: Likewise.
269         * c-parser.c: Likewise.
270         * c-pretty-print.c: Likewise.
271         * c-tree.h: Likewise.
272         * c-typeck.c: Likewise.
273         * caller-save.c: Likewise.
274         * calls.c: Likewise.
275         * cfg.c: Likewise.
276         * cfganal.c: Likewise.
277         * cfgexpand.c: Likewise.
278         * cfghooks.c: Likewise.
279         * cfghooks.h: Likewise.
280         * cfglayout.c: Likewise.
281         * cfgloop.c: Likewise.
282         * cfgloop.h: Likewise.
283         * cfgloopmanip.c: Likewise.
284         * cfgrtl.c: Likewise.
285         * cgraph.c: Likewise.
286         * cgraph.h: Likewise.
287         * cgraphbuild.c: Likewise.
288         * cgraphunit.c: Likewise.
289         * cif-code.def: Likewise.
290         * collect2.c: Likewise.
291         * combine.c: Likewise.
292         * convert.c: Likewise.
293         * coverage.c: Likewise.
294         * crtstuff.c: Likewise.
295         * cse.c: Likewise.
296         * cselib.c: Likewise.
297         * dbgcnt.c: Likewise.
298         * dbgcnt.def: Likewise.
299         * dbgcnt.h: Likewise.
300         * dbxout.c: Likewise.
301         * dce.c: Likewise.
302         * ddg.c: Likewise.
303         * ddg.h: Likewise.
304         * defaults.h: Likewise.
305         * df-byte-scan.c: Likewise.
306         * df-core.c: Likewise.
307         * df-problems.c: Likewise.
308         * df-scan.c: Likewise.
309         * df.h: Likewise.
310         * dfp.c: Likewise.
311         * diagnostic.c: Likewise.
312         * diagnostic.h: Likewise.
313         * dominance.c: Likewise.
314         * domwalk.c: Likewise.
315         * double-int.c: Likewise.
316         * double-int.h: Likewise.
317         * dse.c: Likewise.
318         * dwarf2asm.c: Likewise.
319         * dwarf2asm.h: Likewise.
320         * dwarf2out.c: Likewise.
321         * ebitmap.c: Likewise.
322         * ebitmap.h: Likewise.
323         * emit-rtl.c: Likewise.
324         * et-forest.c: Likewise.
325         * except.c: Likewise.
326         * except.h: Likewise.
327         * expmed.c: Likewise.
328         * expr.c: Likewise.
329         * expr.h: Likewise.
330         * final.c: Likewise.
331         * flags.h: Likewise.
332         * fold-const.c: Likewise.
333         * function.c: Likewise.
334         * function.h: Likewise.
335         * fwprop.c: Likewise.
336         * gcc.c: Likewise.
337         * gcov-dump.c: Likewise.
338         * gcov-io.c: Likewise.
339         * gcov-io.h: Likewise.
340         * gcov.c: Likewise.
341         * gcse.c: Likewise.
342         * genattr.c: Likewise.
343         * genattrtab.c: Likewise.
344         * genautomata.c: Likewise.
345         * genchecksum.c: Likewise.
346         * genconfig.c: Likewise.
347         * genflags.c: Likewise.
348         * gengtype-parse.c: Likewise.
349         * gengtype.c: Likewise.
350         * gengtype.h: Likewise.
351         * genmddeps.c: Likewise.
352         * genmodes.c: Likewise.
353         * genopinit.c: Likewise.
354         * genpreds.c: Likewise.
355         * gensupport.c: Likewise.
356         * ggc-common.c: Likewise.
357         * ggc-page.c: Likewise.
358         * ggc-zone.c: Likewise.
359         * ggc.h: Likewise.
360         * gimple-iterator.c: Likewise.
361         * gimple-low.c: Likewise.
362         * gimple-pretty-print.c: Likewise.
363         * gimple.c: Likewise.
364         * gimple.def: Likewise.
365         * gimple.h: Likewise.
366         * gimplify.c: Likewise.
367         * graphds.c: Likewise.
368         * graphite-clast-to-gimple.c: Likewise.
369         * gthr-nks.h: Likewise.
370         * gthr-posix.c: Likewise.
371         * gthr-posix.h: Likewise.
372         * gthr-posix95.h: Likewise.
373         * gthr-single.h: Likewise.
374         * gthr-tpf.h: Likewise.
375         * gthr-vxworks.h: Likewise.
376         * gthr.h: Likewise.
377         * haifa-sched.c: Likewise.
378         * hard-reg-set.h: Likewise.
379         * hooks.c: Likewise.
380         * hooks.h: Likewise.
381         * hosthooks.h: Likewise.
382         * hwint.h: Likewise.
383         * ifcvt.c: Likewise.
384         * incpath.c: Likewise.
385         * init-regs.c: Likewise.
386         * integrate.c: Likewise.
387         * ipa-cp.c: Likewise.
388         * ipa-inline.c: Likewise.
389         * ipa-prop.c: Likewise.
390         * ipa-pure-const.c: Likewise.
391         * ipa-reference.c: Likewise.
392         * ipa-struct-reorg.c: Likewise.
393         * ipa-struct-reorg.h: Likewise.
394         * ipa-type-escape.c: Likewise.
395         * ipa-type-escape.h: Likewise.
396         * ipa-utils.c: Likewise.
397         * ipa-utils.h: Likewise.
398         * ipa.c: Likewise.
399         * ira-build.c: Likewise.
400         * ira-color.c: Likewise.
401         * ira-conflicts.c: Likewise.
402         * ira-costs.c: Likewise.
403         * ira-emit.c: Likewise.
404         * ira-int.h: Likewise.
405         * ira-lives.c: Likewise.
406         * ira.c: Likewise.
407         * jump.c: Likewise.
408         * lambda-code.c: Likewise.
409         * lambda-mat.c: Likewise.
410         * lambda-trans.c: Likewise.
411         * lambda.h: Likewise.
412         * langhooks.c: Likewise.
413         * lcm.c: Likewise.
414         * libgcov.c: Likewise.
415         * lists.c: Likewise.
416         * loop-doloop.c: Likewise.
417         * loop-init.c: Likewise.
418         * loop-invariant.c: Likewise.
419         * loop-iv.c: Likewise.
420         * loop-unroll.c: Likewise.
421         * lower-subreg.c: Likewise.
422         * lto-cgraph.c: Likewise.
423         * lto-compress.c: Likewise.
424         * lto-opts.c: Likewise.
425         * lto-section-in.c: Likewise.
426         * lto-section-out.c: Likewise.
427         * lto-streamer-in.c: Likewise.
428         * lto-streamer-out.c: Likewise.
429         * lto-streamer.c: Likewise.
430         * lto-streamer.h: Likewise.
431         * lto-symtab.c: Likewise.
432         * lto-wpa-fixup.c: Likewise.
433         * matrix-reorg.c: Likewise.
434         * mcf.c: Likewise.
435         * mode-switching.c: Likewise.
436         * modulo-sched.c: Likewise.
437         * omega.c: Likewise.
438         * omega.h: Likewise.
439         * omp-low.c: Likewise.
440         * optabs.c: Likewise.
441         * optabs.h: Likewise.
442         * opts-common.c: Likewise.
443         * opts.c: Likewise.
444         * params.def: Likewise.
445         * params.h: Likewise.
446         * passes.c: Likewise.
447         * plugin.c: Likewise.
448         * postreload-gcse.c: Likewise.
449         * postreload.c: Likewise.
450         * predict.c: Likewise.
451         * predict.def: Likewise.
452         * pretty-print.c: Likewise.
453         * pretty-print.h: Likewise.
454         * print-rtl.c: Likewise.
455         * print-tree.c: Likewise.
456         * profile.c: Likewise.
457         * read-rtl.c: Likewise.
458         * real.c: Likewise.
459         * recog.c: Likewise.
460         * reg-stack.c: Likewise.
461         * regcprop.c: Likewise.
462         * reginfo.c: Likewise.
463         * regmove.c: Likewise.
464         * regrename.c: Likewise.
465         * regs.h: Likewise.
466         * regstat.c: Likewise.
467         * reload.c: Likewise.
468         * reload1.c: Likewise.
469         * resource.c: Likewise.
470         * rtl.c: Likewise.
471         * rtl.def: Likewise.
472         * rtl.h: Likewise.
473         * rtlanal.c: Likewise.
474         * sbitmap.c: Likewise.
475         * sched-deps.c: Likewise.
476         * sched-ebb.c: Likewise.
477         * sched-int.h: Likewise.
478         * sched-rgn.c: Likewise.
479         * sched-vis.c: Likewise.
480         * sdbout.c: Likewise.
481         * sel-sched-dump.c: Likewise.
482         * sel-sched-dump.h: Likewise.
483         * sel-sched-ir.c: Likewise.
484         * sel-sched-ir.h: Likewise.
485         * sel-sched.c: Likewise.
486         * sel-sched.h: Likewise.
487         * sese.c: Likewise.
488         * sese.h: Likewise.
489         * simplify-rtx.c: Likewise.
490         * stack-ptr-mod.c: Likewise.
491         * stmt.c: Likewise.
492         * stor-layout.c: Likewise.
493         * store-motion.c: Likewise.
494         * stringpool.c: Likewise.
495         * stub-objc.c: Likewise.
496         * sync-builtins.def: Likewise.
497         * target-def.h: Likewise.
498         * target.h: Likewise.
499         * targhooks.c: Likewise.
500         * targhooks.h: Likewise.
501         * timevar.c: Likewise.
502         * tlink.c: Likewise.
503         * toplev.c: Likewise.
504         * toplev.h: Likewise.
505         * tracer.c: Likewise.
506         * tree-affine.c: Likewise.
507         * tree-affine.h: Likewise.
508         * tree-browser.def: Likewise.
509         * tree-call-cdce.c: Likewise.
510         * tree-cfg.c: Likewise.
511         * tree-cfgcleanup.c: Likewise.
512         * tree-chrec.c: Likewise.
513         * tree-chrec.h: Likewise.
514         * tree-complex.c: Likewise.
515         * tree-data-ref.c: Likewise.
516         * tree-data-ref.h: Likewise.
517         * tree-dfa.c: Likewise.
518         * tree-dump.c: Likewise.
519         * tree-dump.h: Likewise.
520         * tree-eh.c: Likewise.
521         * tree-flow-inline.h: Likewise.
522         * tree-flow.h: Likewise.
523         * tree-if-conv.c: Likewise.
524         * tree-inline.c: Likewise.
525         * tree-into-ssa.c: Likewise.
526         * tree-loop-distribution.c: Likewise.
527         * tree-loop-linear.c: Likewise.
528         * tree-mudflap.c: Likewise.
529         * tree-nested.c: Likewise.
530         * tree-nomudflap.c: Likewise.
531         * tree-nrv.c: Likewise.
532         * tree-object-size.c: Likewise.
533         * tree-optimize.c: Likewise.
534         * tree-outof-ssa.c: Likewise.
535         * tree-parloops.c: Likewise.
536         * tree-pass.h: Likewise.
537         * tree-phinodes.c: Likewise.
538         * tree-predcom.c: Likewise.
539         * tree-pretty-print.c: Likewise.
540         * tree-profile.c: Likewise.
541         * tree-scalar-evolution.c: Likewise.
542         * tree-ssa-address.c: Likewise.
543         * tree-ssa-alias.c: Likewise.
544         * tree-ssa-ccp.c: Likewise.
545         * tree-ssa-coalesce.c: Likewise.
546         * tree-ssa-copy.c: Likewise.
547         * tree-ssa-copyrename.c: Likewise.
548         * tree-ssa-dce.c: Likewise.
549         * tree-ssa-dom.c: Likewise.
550         * tree-ssa-dse.c: Likewise.
551         * tree-ssa-forwprop.c: Likewise.
552         * tree-ssa-ifcombine.c: Likewise.
553         * tree-ssa-live.c: Likewise.
554         * tree-ssa-live.h: Likewise.
555         * tree-ssa-loop-ch.c: Likewise.
556         * tree-ssa-loop-im.c: Likewise.
557         * tree-ssa-loop-ivcanon.c: Likewise.
558         * tree-ssa-loop-ivopts.c: Likewise.
559         * tree-ssa-loop-manip.c: Likewise.
560         * tree-ssa-loop-niter.c: Likewise.
561         * tree-ssa-loop-prefetch.c: Likewise.
562         * tree-ssa-loop-unswitch.c: Likewise.
563         * tree-ssa-loop.c: Likewise.
564         * tree-ssa-math-opts.c: Likewise.
565         * tree-ssa-operands.c: Likewise.
566         * tree-ssa-operands.h: Likewise.
567         * tree-ssa-phiopt.c: Likewise.
568         * tree-ssa-phiprop.c: Likewise.
569         * tree-ssa-pre.c: Likewise.
570         * tree-ssa-propagate.c: Likewise.
571         * tree-ssa-reassoc.c: Likewise.
572         * tree-ssa-sccvn.c: Likewise.
573         * tree-ssa-sink.c: Likewise.
574         * tree-ssa-structalias.c: Likewise.
575         * tree-ssa-ter.c: Likewise.
576         * tree-ssa-threadedge.c: Likewise.
577         * tree-ssa-threadupdate.c: Likewise.
578         * tree-ssa-uncprop.c: Likewise.
579         * tree-ssa.c: Likewise.
580         * tree-ssanames.c: Likewise.
581         * tree-switch-conversion.c: Likewise.
582         * tree-tailcall.c: Likewise.
583         * tree-vect-data-refs.c: Likewise.
584         * tree-vect-generic.c: Likewise.
585         * tree-vect-loop-manip.c: Likewise.
586         * tree-vect-loop.c: Likewise.
587         * tree-vect-patterns.c: Likewise.
588         * tree-vect-slp.c: Likewise.
589         * tree-vect-stmts.c: Likewise.
590         * tree-vectorizer.c: Likewise.
591         * tree-vectorizer.h: Likewise.
592         * tree-vrp.c: Likewise.
593         * tree.c: Likewise.
594         * tree.def: Likewise.
595         * tree.h: Likewise.
596         * treestruct.def: Likewise.
597         * unwind-compat.c: Likewise.
598         * unwind-dw2-fde-glibc.c: Likewise.
599         * unwind-dw2.c: Likewise.
600         * value-prof.c: Likewise.
601         * value-prof.h: Likewise.
602         * var-tracking.c: Likewise.
603         * varasm.c: Likewise.
604         * varpool.c: Likewise.
605         * vec.c: Likewise.
606         * vec.h: Likewise.
607         * vmsdbgout.c: Likewise.
608         * web.c: Likewise.
609         * xcoffout.c: Likewise.
610
611 2009-11-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
612
613         * pa.c (output_call): Only use sr4 for long interspace calls if
614         call binds local and generating non PIC code.
615         (attr_length_call): Adjust length calculation for above.
616
617 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
618
619         * config/i386/i386.md (plusminus_carry_mnemonic): New code attribute.
620         (add<mode>3_carry): Change operand order of plus RTX.
621         (*add<mode>3_carry): Ditto.
622         (*addsi3_carry_zext): Ditto.
623         (*add<dwi>3_doubleword): Update for changed operand order.
624         (*negti2_1 splitter): Ditto.
625         (*negdi2_1 splitter): Ditto.
626         (<plusminus_insn><mode>3_carry): Macroize expander from
627         {add,sub}<mode>3_carry patterns using plusminus code iterator.
628         (*<plusminus_insn><mode>3_carry): Macroize insn from
629         *{add,sub}<mode>3_carry patetrns using plusminus code iterator.
630         (neg<mode>2): Macroize expander from neg{qi,hi,si,di,ti}2
631         patterns using SDWIM mode iterator.
632         (*neg<dwi>2_doubleword): New insn_and_split pattern.  Macroize
633         pattern from *neg{di,ti}2_1 patterns and corresponding splitters
634         using DWIH mode iterator.
635         (*neg<mode>2_1): Macroize insn from neg{qi,hi,si,di}2_1 patterns
636         using SWI mode iterator.
637         (*neg<mode>2_cmpz): Ditto from neg{qi,hi,si,di}2_cmpz patterns.
638         (one_cmpl<mode>2): Macroize expander from one_cmpl{qi,hi,si,di}2
639         patterns using SWIM mode iterator.
640         (*one_cmpl<mode>2_1): Macroize insn from one_cmpl{hi,si,di}2_1
641         patterns using SWI248 mode iterator.
642         (*one_cmpl<mode>2_2): Macroize insn from one_cmpl{qi,hi,si,di}2_2
643         patterns using SWI mode iterator.
644         (*one_cmpl<mode>2_2 splitter): Macroize splitter from
645         one_cmpl{qi,hi,si,di}2_2 splitter patterns using SWI mode iterator.
646
647 2009-11-24  Michael Matz  <matz@suse.de>
648
649         * expr.c (set_storage_via_libcall): Fix build_call_expr call.
650
651 2009-11-24  David Binderman  <dcb314@hotmail.com>
652
653         * expr.c (store_field): Remove set but not used local variable
654         width_mask.
655         (expand_expr_real_2): Remove treeop2.
656         * gcse.c (update_ld_motion_stores): Remove new_rtx.
657         * haifa-sched.c (max_issue): Remove points.
658         (sched_create_recovery_edges): Remove e.
659         * ira-costs.c (setup_allocno_cover_class_and_costs): Remove mode.
660
661 2009-11-24  Nick Clifton  <nickc@redhat.com>
662
663         * config/v850/v850.c (function_arg): Fix handling of zero-length
664         function arguments.
665
666 2009-11-24  Michael Matz  <matz@suse.de>
667
668         * tree.h (union tree_ann_d): Don't declare.
669         (tree_base): Remove ann field.
670         (struct var_ann_d): Declare forward.
671         (tree_result_decl, tree_parm_decl, tree_var_decl): Add ann field.
672         (DECL_VAR_ANN_PTR): New macro.
673         * tree-dfa.c (create_var_ann): Rewrite in terms of above macro,
674         accept only VAR, PARM or RESULT decls.
675         (create_tree_common_ann): Remove.
676         (remove_referenced_var): Use DECL_VAR_ANN_PTR.
677         * tree-eh.c (lookup_expr_eh_lp): Remove.
678         * tree-flow-inline.h (var_ann, get_var_ann): Rewrite in terms of
679         DECL_VAR_ANN_PTR.
680         (ann_type, tree_common_ann, get_tree_common_ann): Remove.
681         * tree-flow.h (enum tree_ann_type): Remove.
682         (struct tree_ann_common_d): Remove.
683         (struct var_ann_d): Remove common field.
684         (union tree_ann_d): Remove.
685         (tree_ann_t, tree_ann_common_t): Remove typedefs.
686         (tree_common_ann, get_tree_common_ann, ann_type,
687         create_tree_common_ann, lookup_expr_eh_lp): Don't declare.
688         * tree-ssa.c (delete_tree_ssa): Use DECL_VAR_ANN_PTR.
689         * tree.c (copy_node_stat): Use DECL_VAR_ANN_PTR.
690         * builtins.c (expand_builtin_memcpy): Use
691         currently_expanding_gimple_stmt instead of tree annotation.
692         (expand_builtin_memset_args): Ditto.
693         * cfgexpand.c (currently_expanding_gimple_stmt): Add global variable.
694         (expand_call_stmt): Don't set tree annotation.
695         (expand_gimple_basic_block): Set currently_expanding_gimple_stmt.
696         * expr.c (expand_expr_real): Don't call lookup_expr_eh_lp.
697         * gimple.h (currently_expanding_gimple_stmt): Declare.
698
699 2009-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
700
701         * dwarf2out.c (add_location_or_const_value_attribute): Remove
702         useless NOTE_VAR_LOCATION_STATUS call.
703         * cfgrtl.c (commit_one_edge_insertion): Remove useless loop, tidy.
704
705 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
706
707         * lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
708         being called recursively.
709
710 2009-11-24  Basile Starynkevitch  <basile@starynkevitch.net>
711
712         * Makefile.in (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
713         $(MD5_H) params.def params.h prefix.h tree-inline.h.
714
715 2009-11-24  Paul Brook  <paul@codesourcery.com>
716
717         * gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment
718         typo.
719
720 2009-11-24  Julian Brown  <julian@codesourcery.com>
721             Paul Brook  <paul@codesourcery.com>
722
723         * config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
724         (arm_dwarf_register_span): New function.
725         (arm_dbx_register_number): Add VFPv3 dwarf numbering.
726
727 2009-11-24  David Binderman  <dcb314@hotmail.com>
728
729         * cfgrtl.c (commit_one_edge_insertion): Remove set but not used
730         local variable bb_note.
731         * dominance.c (get_dominated_by): Likewise local var n.
732         (output_file_names): Likewise local var idx.
733         (add_location_or_const_value_attribute): Likewise local var status.
734         * dwarf2out.c (gen_variable_die): Likewise local var field.
735         * emit-rtl.c (no_line_numbers): Remove.
736         (init_emit_once): Remove line_numbers parameter.
737         * rtl.h (init_emit_once): Adjust prototype.
738         * toplev.c (backend_init): Adjust init_emit_once call.
739
740 2009-11-24  Richard Guenther  <rguenther@suse.de>
741
742         PR tree-optimization/42142
743         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
744         Handle iv-dependent (non-)kills properly.
745         (mark_aliased_reaching_defs_necessary): Pass the basic-block
746         of the reference statement to mark_aliased_reaching_defs_necessary_1.
747
748 2009-11-24  Martin Jambor  <mjambor@suse.cz>
749
750         PR tree-optimization/42154
751         * tree-sra.c (struct access): Added comments.
752         (sra_modify_expr): Build references to the old aggregate with
753         build_ref_for_offset instead of reusing access->expr.
754         (load_assign_lhs_subreplacements): Likewise.
755
756 2009-11-24  Uros Bizjak  <ubizjak@gmail.com>
757
758         * config/i386/i386.md (add<mode>3_carry): Change insn pattern
759         to expander.
760         (sub<mode>3_carry): Ditto.
761         (x86_mov<mode>cc_0_m1): Ditto.
762         (*add<mode>3_carry): New insn pattern.  Use VOIDmode match_operator
763         for ix86_carry_flag_operator operator predicate.
764         (*sub<mode>3_carry): Ditto.
765         (*x86_mov<mode>cc_0_m1): Ditto.
766         (*addsi3_carry_zext): Use VOIDmode match_operator for
767         ix86_carry_flag_operator operator predicate.
768         (*subsi3_carry_zext): Ditto.
769         (*x86_mov<mode>cc_0_m1_s): Ditto.
770         (*x86_mov<mode>cc_0_m1_neg): Ditto.
771         * config/i386/predocates.md (ix86_carry_flag_operator): Do not
772         check operator sub-expressions for FLAGS_REG and const0_rtx.
773         * config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
774         (ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
775         (ix86_expand_int_addcc): Update calls to
776         gen_{add,sub}{qi,hi,si,di}3_carry.  Do not set mode of compare_op.
777         (ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
778         Do not set mode of compare operation.
779
780 2009-11-23  Jan Hubicka  <jh@suse.cz>
781
782         PR middle-end/42151
783         * ipa-inline.c (inline_transform): Avoid ICE when transform is called
784         twice.
785
786 2009-11-23  Jan Hubicka  <jh@suse.cz>
787
788         * ipa-cp.c (ipcp_compute_node_scale): Work around completely
789         wrong profile updates.
790         * predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
791         having largest frequency.
792         * ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
793         used uninitalized warning.
794         * tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block
795         frequencies.
796
797 2009-11-23  Uros Bizjak  <ubizjak@gmail.com>
798
799         * config/alpha/alpha.md (*cmp_sadd_sidi): Use gen_lowpart instead
800         of gen_rtx_REG to generate operand 5.
801         (*cmp_ssub_sidi): Ditto.
802
803 2009-11-23  Richard Henderson  <rth@redhat.com>
804
805         * config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare
806         mismatch.
807
808 2009-11-23  Paul Brook  <paul@codesourcery.com>
809
810         * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
811         case for noreturn functions.
812         (arm_compute_save_reg_mask): Remove special noreturn handling.
813
814 2009-11-23  Richard Guenther  <rguenther@suse.de>
815
816         * tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
817         size for DECL bases.
818
819 2009-11-22  Richard Henderson  <rth@redhat.com>
820
821         * i386.c (avx_vpermilp_parallel): New function.
822         * i386-protos.h: Declare it.
823         * predicates.md (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
824         avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
825         * sse.md (AVXMODEFDP, AVXMODEFSP): New iterators.
826         (ssescalarnum, ssedoublesizemode): Add AVX modes.
827         (vpermilbits): Remove.
828         (avx_vpermil<mode>): Change insns to expanders.
829         (*avx_vpermil<mode>): New.  Use vec_select.
830
831 2009-11-22  Richard Earnshaw  <rearnsha@arm.com>
832
833         * opts.c (decode_options): Don't enable flag_schedule_insns
834         when optimizing for size.
835         * doc/invoke.texi: Document change.
836
837 2009-11-22  Uros Bizjak  <ubizjak@gmail.com>
838
839         PR target/42113
840         * config/alpha/alpha.md (*cmp_sadd_si): Change mode
841         of scratch register to SImode.
842         (*cmp_sadd_sidi): Ditto.
843         (*cmp_ssub_si): Ditto.
844         (*cmp_ssub_sidi): Ditto.
845
846 2009-11-21  Ian Lance Taylor  <iant@google.com>
847
848         * Makefile.in (HOST_LIBS): Move higher in file.
849         (LINKER, LINKER_FLAGS): If ENABLE_BUILD_WITH_CXX, but $(HOST_LIBS)
850         is not empty, set to $(CC) and $(CFLAGS).
851
852 2009-11-22  Martin Jambor  <mjambor@suse.cz>
853
854         * tree-cfg.c (verify_types_in_gimple_reference): Error out on
855         V_C_E of an SSA_NAME or an invariant if lvalue is required.
856         (verify_gimple_call): Verify LHS also with with
857         verify_types_in_gimple_reference.
858
859 2009-11-21  Martin Jambor  <mjambor@suse.cz>
860
861         PR middle-end/42025
862         * tree-sra.c (access_precludes_ipa_sra_p): New function.
863         (splice_param_accesses): Check all accesses by calling
864         access_precludes_ipa_sra_p.
865         (sra_ipa_modify_expr): Rename argument erite to dont_convert and do
866         not convert types if it is true.
867         (sra_ipa_modify_assign): Convert types in case of mismatch.
868
869 2009-11-21  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>
870
871         * config/sh/sh.md (cmpeqsi_t-1): Use logical_operand predicate
872         for operand 1.
873
874 2009-11-21  Adam Nemet  <adambnemet@gmail.com>
875
876         * config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
877         (mips_mulsidi3_gen_fn): Declare new function.
878         * config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
879         * config/mips/mips.md (<u>mulsidi3): Change condition to use
880         mips_mulsidi3_gen_fn.  Use mips_mulsidi3_gen_fn to generate the insn.
881         (<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
882         (mulsidi3_64bit_dmul): New define_insn.
883
884 2009-11-21  Ben Elliston  <bje@au.ibm.com>
885
886         * gengtype-lex.l: Enable noinput flex option.
887         (YY_NO_INPUT): Remove define.
888
889 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
890
891         * tree-ssa.c (find_released_ssa_name): Handle NULL wi.
892         (insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
893         (insert_debug_temps_for_defs): Handle PHI nodes.
894         * tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
895         SSA names.
896
897 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
898
899         * tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
900         after remove_phi_node.
901
902 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
903
904         PR tree-optimization/42078
905         * gimple.h (gimple_replace_lhs): New declaration.
906         * gimple.c (gimple_replace_lhs): New function.
907         * tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
908         modifying the call.
909
910 2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
911
912         * config/i386/sse.md (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
913         (xop_mulv2div2di3_low): Same.
914         (*xop_pmacsdqh_mem): Same.
915
916 2009-11-20  Richard Henderson  <rth@redhat.com>
917
918         * config/i386/i386-builtin-types.awk: New file.
919         * config/i386/i386-builtin-types.def: New file.
920         * config/i386/t-i386: Use them to build i386-builtin-types.inc.
921         * config/i386/i386.c: Include it.
922         (ix86_builtin_type_tab, ix86_get_builtin_type): New.
923         (ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
924         (struct builtin_isa): Remove GTY marker.  Replace tree type with
925         ix86_builtin_func_type; add set_and_not_built_p.
926         (def_builtin): Change type parameter to tcode; use
927         ix86_get_builtin_func_type; update all callers.  Accept zero mask
928         to mean the builtin is unconditionally available.
929         (ix86_add_new_builtins): Use set_and_not_built_p instead of type
930         being set to NULL.
931         (enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
932         Update some users to rationalized enumeration codes from new include.
933         (enum multi_arg_type): Remove.  Replace all enumeration values
934         with defines to new ix86_builtin_func_type.
935         (ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
936         all type resolution to def_builtin.
937         (ix86_init_builtin_types): Split out from ...
938         (ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.
939
940 2009-11-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
941
942         PR target/41787
943         * config/rs6000/rs6000.c (struct machine_function): Revert
944         2009-10-23 change to set VRSAVE to non-0 if we use VSX.
945         (rs6000_expand_to_rtl_hook): Ditto.
946         (rs6000_check_vector_mode): Ditto.
947         (compute_vrsave_mask): Ditto.
948
949 2009-11-20  Paul Brook  <paul@codesourcery.com>
950
951         * doc/invoke.texi: Document ARM -mcpu=cortex-a5.
952         * config/arm/arm-cores.def: Add cortex-a5.
953         * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
954         * config/arm/arm-tune.md: Regenerate.
955
956 2009-11-20 Olga Golovanevsky <olga@il.ibm.com>
957
958         PR middle-end/39960
959         * ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
960         (ref_pos): New field in structure.
961         (insert_new_var_in_stmt): New function.
962
963
964 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
965
966         * config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
967         * config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
968         (INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE): Define.
969         (UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
970         (INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
971         INT_LEAST64_TYPE): Define.
972         (UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
973         UINT_LEAST64_TYPE): Define.
974         (INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
975         INT_FAST64_TYPE): Define.
976         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
977         UINT_FAST64_TYPE): Define.
978         (INTPTR_TYPE, UINTPTR_TYPE): Define.
979
980 2009-11-20  Julian Brown  <julian@codesourcery.com>
981
982         * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
983         specially for Thumb-1.
984         (ASM_OUTPUT_REG_POP): Likewise.
985
986 2009-11-19  Jason Merrill  <jason@redhat.com>
987
988         * dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
989
990 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
991             Rafael Avila de Espindola  <espindola@google.com>
992
993         * doc/plugins.texi (Plugin initialization): Added advices for
994         retrieving the version of GCC at plugin compilation and loading times.
995
996 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
997
998         * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
999         (dump_active_plugins): output to file everything. Use
1000         internationalized dump & FMT_FOR_PLUGIN_EVENT.
1001
1002 2009-11-19  Richard Guenther  <rguenther@suse.de>
1003
1004         * gimple.c (canonicalize_cond_expr_cond): Strip conversions
1005         around truth-valued expressions.
1006         * tree.c (free_lang_data): Untangle check for LTO frontend.
1007
1008 2009-11-19  Jakub Jelinek  <jakub@redhat.com>
1009
1010         * tree.c (need_assembler_name_p): Use cgraph_get_node instead
1011         of cgraph_node_for_decl.
1012         * cgraph.h (cgraph_node_for_decl): Remove prototype.
1013         * cgraph.c (cgraph_node_for_decl): Remove.
1014         (cgraph_get_node): Just return NULL if !cgraph_hash.
1015
1016 2009-11-19  Paul Brook  <paul@codesourcery.com>
1017
1018         * config.gcc: Add new ARM --with-fpu options.
1019         * doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
1020         * config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
1021
1022 2009-11-18  Richard Guenther  <rguenther@suse.de>
1023
1024         * gimple.h (union gimple_statement_d): Add gsmembase member.
1025         (gimple_vuse_op): Use gsmembase for access.
1026         (gimple_vdef_op): Likewise.
1027         (gimple_vuse): Likewise.
1028         (gimple_vdef): Likewise.
1029         (gimple_vuse_ptr): Likewise.
1030         (gimple_vdef_ptr): Likewise.
1031         (gimple_set_vuse): Likewise.
1032         (gimple_set_vdef): Likewise.
1033         * gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
1034
1035 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1036
1037         * doc/arm-neon-intrinsics.texi: Regenerated.
1038
1039 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1040
1041         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle alternatives.
1042
1043 2009-11-18  Paul Brook  <paul@codesourcery.com>
1044             Daniel Jacobowitz  <dan@codesourcery.com>
1045
1046         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
1047         (arm_arch7em): New variable.
1048         (all_architectures): Add armv7e-m.
1049         (arm_override_options): Set arm_arch7em.
1050         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
1051         Include arm_arch7em.
1052         (arm_arch7em): Declare.
1053
1054 2009-11-18  Richard Guenther  <rguenther@suse.de>
1055
1056         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
1057         a valid field decl if checking is enabled.
1058
1059 2009-11-18  Martin Jambor  <mjambor@suse.cz>
1060
1061         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
1062         (lto_ipa_fixup_call_notes): Declare.
1063         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
1064         (update_call_notes_after_inlining): Copy call stmt uid to the new
1065         edge.
1066         (ipa_write_param_call_note): New function.
1067         (ipa_read_param_call_note): New function
1068         (ipa_write_node_info): Write also param call notes.  Removed a bogus
1069         comment, reformatted to fit 80 columns.
1070         (ipa_read_node_info): Read also param call notes. Removed a bogus
1071         comment.  Remove ipa_edge_args_vector growth.
1072         (lto_ipa_fixup_call_notes): New function.
1073         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
1074         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
1075         inlining regardless of flag_wpa.
1076         (cgraph_decide_inlining_of_small_functions): Likewise.
1077         (cgraph_decide_inlining): Likewise.
1078         (inline_read_summary): Likewise.
1079
1080 2009-11-18  Jan Hubicka  <jh@suse.cz>
1081
1082         * predict.c (compute_function_frequency): Export.
1083         * predict.h (compute_function_frequency): Declare.
1084         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
1085
1086 2009-11-18  Martin Jambor  <mjambor@suse.cz>
1087
1088         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
1089         on all nodes we write summaries for.
1090
1091 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
1092
1093         PR middle-end/22201
1094         * params.def (PARAM_INLINE_UNIT_GROWTH, PARAM_IPCP_UNIT_GROWTH)
1095         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
1096         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
1097         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
1098         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
1099         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
1100         (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
1101         description string.
1102
1103 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
1104
1105         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
1106         unnecessarily.
1107         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
1108
1109         PR c++/3187
1110         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
1111         fields.
1112         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
1113         prototypes.
1114         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
1115         cgraph_materialize_all_clones): Handle same_body aliases.
1116         * cgraph.c (cgraph_allocate_node): New function.
1117         (cgraph_create_node): Use it.
1118         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
1119         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
1120         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
1121         functions.
1122         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
1123         (input_node): Stream in same_body aliases.
1124         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
1125         for same_body aliases.
1126         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
1127
1128 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
1129
1130         PR other/39888
1131         * config/darwin.h: Use the extension stub libraries to access
1132         current libgcc_s features.
1133
1134 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1135
1136         PR debug/41926
1137         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
1138         (vect_transform_loop): Call it.
1139
1140 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1141
1142         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
1143         released SSA names.
1144
1145 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1146
1147         PR debug/41888
1148         PR debug/41886
1149         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
1150         are ok.
1151         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
1152         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
1153         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
1154         (sese_bad_liveouts_use): New.
1155         (sese_reset_debug_liveouts_bb): New.
1156         (sese_build_liveouts): Use it.
1157         (rename_variables_in_stmt): Reset debug stmts rather than creating
1158         new vars for them.
1159         (expand_scalar_variable_stmt): Likewise.
1160
1161 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1162
1163         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
1164         (df_ref_remove): Likewise.
1165
1166 2009-11-17  Jan Hubicka  <jh@suse.cz>
1167
1168         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
1169         info.
1170
1171 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
1172
1173         * toplev.c (process_options): Remove dead code.
1174         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
1175
1176 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
1177
1178         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
1179         nodes.
1180
1181 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1182
1183         PR tree-optimization/41857
1184         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
1185         TYPE's address space instead of pointer to TYPE.
1186
1187 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1188
1189         * reload.c (find_reloads_address): Fix typo.
1190
1191 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1192
1193         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
1194         registers in leaf functions if possible.
1195
1196 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
1197
1198         * config/m68k/m68k-devices.def: Add MCF5441x family.
1199
1200 2009-11-17  Jan Hubicka  <jh@suse.cz>
1201
1202         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
1203         removed node.
1204         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
1205
1206 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
1207
1208         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
1209         nest ior expressions.
1210         (x86_64_szext_nonmemory_operand): Ditto.
1211         (call_insn_operand): Ditto.
1212
1213 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
1214
1215         * stmt.c (expand_asm_stmt): Get locus from stmt.
1216
1217 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
1218
1219         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
1220         Create the decl label for the new dest block on demand.  Require
1221         a fallthrough edge if no asm labels were redirected.
1222
1223 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
1224
1225         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
1226         operand 1 predicate.
1227         (cstoresi4): Ditto for operand 2.
1228         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
1229         patterns using SDWIM mode iterator.
1230         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
1231         using SWIM mode iterator.
1232         (cmpdi_1): Rename from cmpdi_1_rex64.
1233         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
1234         SWI48 mode iterator.
1235         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn patterns
1236         using SWI mode iterator.
1237         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
1238         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
1239         (*cmpqi_ext_3_insn): Make private.
1240         (*cmpqi_ext_3_insn_rex64): Make private.
1241         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
1242         * config/i386/predicates.md (cmpsi_operand): Remove.
1243
1244 2009-11-16  Paul Brook  <paul@codesourcery.com>
1245
1246         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
1247         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
1248
1249 2009-11-14  Jan Hubicka  <jh@suse.cz>
1250
1251         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
1252         ENTRY_BLOCK_PTR.
1253         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
1254         zero out all callees.
1255         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
1256         frequency and count match.
1257         * ipa-inline.c (update_noncloned_frequencies): New function.
1258         (cgraph_clone_inlined_nodes): Use it.
1259         * tree-inline.c (copy_bb): Fix frequency scaling; output
1260         diagnostic on frequency mismatches to dump file.
1261         (initialize_cfun): Do not scale frequency; fix count scaling;
1262         initialize entry and exit block frequencies; copy profile info.
1263         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
1264         (copy_body): Use frequency_scale as argument.
1265         (expand_call_inline): Compute frequency scale and output diagnostic
1266         to dump file.
1267         (delete_unreachable_blocks_update_callgrah): Remove checking that
1268         has to be done after edge redirection.
1269         (tree_function_versioning): Update initialize_cfun and copy_body call.
1270
1271 2009-11-14  Jan Hubicka  <jh@suse.cz>
1272
1273         * cgraph.c (cgraph_release_function_body): Update use of
1274         ipa_transforms_to_apply.
1275         (cgraph_remove_node): Remove ipa_transforms_to_apply.
1276         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
1277         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
1278         copied body.
1279         (cgraph_materialize_clone): Remove original if dead.
1280         * lto-streamer-in.c (lto_read_body): Remove FIXME and
1281         ipa_transforms_to_apply hack.
1282         * function.h (struct function): Add ipa_transforms_to_apply.
1283         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
1284         * tree-inline.c (copy_bb): Update sanity check.
1285         (initialize_cfun): Do not copy ipa_transforms_to_apply.
1286         (expand_call_inline): remove dead clone originals.
1287         (tree_function_versioning): Merge transformation queues.
1288         * passes.c (add_ipa_transform_pass): Remove.
1289         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
1290         tracking.
1291         (execute_all_ipa_transforms): Update.
1292         (execute_one_pass): Update.
1293
1294 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1295
1296         PR target/21078, 21080
1297         * config/avr/avr.c (avr_return_addr_rtx): New function for
1298         builtin_return_address.
1299         (expand_prologue): Calculate stack usage.
1300         (avr_asm_function_end_prologue): Output stack size and offset label.
1301         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
1302         (machine_function): Add stack_usage.
1303         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
1304
1305 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
1306
1307         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
1308         new 'outgoing' argument.
1309         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
1310         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1311         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
1312         iq2000_function_value_regno_p.
1313         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1314         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
1315         Declare.
1316
1317 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
1318
1319         PR target/42031
1320         * arm.md (adddi_sesidi_di): Place tied contraint first.
1321         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
1322         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
1323         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
1324         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
1325         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
1326         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
1327         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
1328         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
1329         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
1330
1331 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
1332
1333         * config/i386/predicates.md (call_register_no_elim_operand):
1334         New predicate.  Reject stack register as valid call operand
1335         for 32bit targets.
1336         (call_insn_operand): Use call_register_no_elim_operand.
1337
1338 2009-11-13  Richard Henderson  <rth@redhat.com>
1339
1340         * function.c (stack_protect_prologue): Don't bypass expand_expr
1341         for stack_protect_guard and guard_decl.
1342         (stack_protect_epilogue): Likewise.
1343
1344 2009-11-13  Jan Hubicka  <jh@suse.cz>
1345
1346         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
1347         when to PUBLIC is set.
1348
1349 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
1350
1351         PR middle-end/42029
1352         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
1353         tmp_load if needed.
1354
1355 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1356
1357         PR target/41900
1358         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
1359         *call_value_1): Use "lsm" as operand 1 constraint.
1360         * config/i386/predicates.md (call_insn_operand): Depend on
1361         index_register_operand to avoid %esp register.
1362
1363 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1364
1365         Revert:
1366         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1367
1368         PR target/41900
1369         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
1370         (TARGET_CALL_ESP): New define.
1371         * config/i386/i386.c (initial_ix86_tune_features): Initialize
1372         X86_ARCH_CALL_ESP.
1373         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
1374         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
1375         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
1376         TARGET_CALL_ESP.
1377         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
1378         New patterns, use "lsm" as operand 1 constraint.
1379         * config/i386/predicates.md (call_insn_operand): Depend on
1380         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
1381
1382 2009-11-13  Jason Merrill  <jason@redhat.com>
1383
1384         PR debug/26965
1385         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
1386         Don't emit a second declaration at any scope.
1387
1388 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
1389
1390         PR rtl-optimization/41697
1391         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
1392         a conditional jump has a single successor.
1393
1394 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
1395
1396         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
1397         allocate reg_last when in case lazy_reg_last is true.
1398         (init_deps_reg_last): New.
1399         (free_deps): When max_reg is 0, this context is already freed.
1400         * sched-int.h (init_deps_reg_last): Export.
1401         (init_deps): Update prototype.
1402         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
1403         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
1404         * ddg.c (build_intra_loop_deps): Likewise.
1405         * sel-sched-ir.c (copy_deps_context, create_deps_context,
1406         reset_deps_context, deps_init_id): Likewise.
1407         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
1408         (free_data_for_scheduled_insn): New, break down from ...
1409         (free_first_time_insn_data): ... here.
1410         (has_dependence_p): Allocate reg_last now, when it is needed.
1411         (extend_insn_data): When maximal LUID is big enough, allocate
1412         per-insn data in smaller chunks.
1413         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
1414         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
1415         in scheduled insn.
1416
1417 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1418
1419         * config/i386/i386.md (call_value): Fix comment.
1420         (sibcall_value): Ditto.
1421
1422 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
1423
1424         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
1425         (MD_FROB_UPDATE_CONTEXT): Define.
1426
1427 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
1428             Laurent GUERBY  <laurent@guerby.net>
1429
1430         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
1431         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
1432         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
1433
1434 2009-11-12  Jan Hubicka  <jh@suse.cz>
1435
1436         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
1437         and clear DECL_COMMON on localized declarations.
1438
1439 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
1440
1441         PR rtl-opt/38582
1442         * regrename.c (struct du_head): New structure; some elements moved
1443         from...
1444         (struct du_chain): ... this one.
1445         (open_chains, closed_chains): Now of type struct du_head *.
1446         (do_replace): Accept du_head argument, not du_chain.  All callers
1447         changed.  Modified code to match new data structures.
1448         (build_def_use): Return a list of du_head structures.  Modified code
1449         to match new data structures.
1450         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
1451         callers changed.  Modified code to match new data structures.
1452         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
1453         callers changed.  Modified code to match new data structures.
1454         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
1455         Allocate a du_head structure as well as a du_chain when creating a
1456         new chain.  Modified other code to match new data structures.
1457
1458 2009-11-12  Jan Hubicka  <jh@suse.cz>
1459
1460         * cgraph.h (varpool_node_name): Declare.
1461         * cgraphunit.c (process_function_and_variable_attributes): Set
1462         force_output flag on used variables.
1463         * ipa.c (function_and_variable_visibility): Dump externally visible
1464         and needed variables.
1465         * varpool.c (varpool_node_name): Export.
1466         (decide_is_variable_needed): Check COMDAT for externally visible vars;
1467         ignore needed flag.
1468
1469 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
1470
1471         PR middle-end/41930
1472         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
1473         processing if XEXP (x, i) is NULL.
1474
1475 2009-11-12  Jan Hubicka  <jh@suse.cz>
1476
1477         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
1478         imply PUBLIC || EXTERNAL.
1479
1480 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1481
1482         PR middle-end/41440
1483         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
1484         single successor block, ending with jump created by RTL expander.
1485
1486 2009-11-11  Jan Hubicka  <jh@suse.cz>
1487
1488         PR middle-end/41729
1489         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
1490         and WEAK variables at -fwhole-program.
1491
1492         PR middle-end/41735
1493         * ipa.c (whole_program_function_and_variable_visility): COMDAT
1494         functions/variables are not needed even if they are externally visible.
1495
1496 2009-11-11  Jan Hubicka  <jh@suse.cz>
1497
1498         (patch by Richard Guenther)
1499         * lto-streamer-out.c (output_function): Output head of argument list
1500         earlier.
1501         * lto-streamer-in.c (input_function): Re-map arguments into merged
1502         declaration.
1503
1504 2009-11-11  Jan Hubicka  <jh@suse.cz>
1505
1506         * lto-cgraph.c: Include gcov-io.h
1507         (output_profile_summary): New function.
1508         (output_cgraph): Use it.
1509         (input_profile_summary): New function.
1510         (input_cgraph): Use it.
1511         * coverage.c (build_ctr_info_value): Use varpool; initalize
1512         DECL_ASSEMBLER_NAME.
1513         (create_coverage): Likewise.
1514         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
1515         (tree_init_edge_profiler): Likewise.
1516         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
1517
1518 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
1519
1520         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
1521         * c-pragma.c (def_pragma_macro_value): Likewise.
1522         (def_pragma_macro): Likewise.
1523         (pushed_macro_table): Likewise.
1524         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
1525         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
1526
1527 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
1528
1529         * doc/plugins.texi (Registering custom attributes): section
1530         renamed as (Registering custom attributes or pragmas).
1531         Mentions custom attributes & pragmas, and c_register_pragma, with
1532         a small example.
1533         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
1534         pragmas.
1535         * doc/extend.texi (Function Attributes): Mentions that plugin can
1536         provide their attributes.
1537
1538 2009-11-11  Jon Beniston  <jon@beniston.com>
1539
1540         * config.gcc: Add lm32 elf and uclinux targets.
1541         * config/lm32: New directory.
1542         * config/lm32/lm32.c: New file.
1543         * config/lm32/lm32.h: New file.
1544         * config/lm32/lm32.md: New file.
1545         * config/lm32/lm32.opt: New file.
1546         * config/lm32/lm32-protos.h: New file.
1547         * config/lm32/constraints.md: New file.
1548         * config/lm32/predicates.md: New file.
1549         * config/lm32/sfp-machine.h: New file.
1550         * config/lm32/t-fprules-softfp: New file.
1551         * config/lm32/uclinux-elf.h: New file.
1552         * doc/invoke.texi: Document lm32 options.
1553         * doc/contrib.texi: Document lm32 porter.
1554         * doc/install.texi: Document lm32 targets.
1555
1556 2009-11-11  Martin Jambor  <mjambor@suse.cz>
1557
1558         PR lto/41932
1559         * ipa-prop.c (ipa_update_after_lto_read): Call
1560         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
1561         call ipa_initialize_node_params instead of ipa_populate_param_decls.
1562
1563 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
1564
1565         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
1566         (neon_expand_vector_init): Use them.  Also handle non-constant
1567         vectors with identical elements and vectors with only one
1568         non-constant element.
1569         (arm_print_operand): Handle 'y' modifier.
1570         * config/arm/arm-protos.h (neon_make_constant): Declare.
1571         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
1572         patterns.  Use VX instead of VDQW for the first one.  Allow
1573         a VFP alternative and V32 modes for the second one.
1574         * config/arm/neon.ml (shape_elt): Add Alternatives.
1575         (ops): Use Alternatives for vdup lane instructions.
1576         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
1577         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
1578
1579 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
1580
1581         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
1582         operands.
1583         (movti, mov<mode>): Call force_reg on one operand if required.
1584         * config/arm/vec-common.md (mov<mode>): Likewise.
1585
1586 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
1587
1588         * config/arm/arm.c (arm_override_options): Enable scheduling for
1589         Thumb-2.
1590
1591 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
1592
1593         PR target/10127
1594         PR ada/20548
1595         * expr.h (anti_adjust_stack_and_probe): Declare.
1596         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
1597         parameter and rewrite head comment.
1598         (allocate_dynamic_stack_space): Adjust call to above function.
1599         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
1600
1601         * tree.h (dwarf2out_args_size): Delete.
1602         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
1603         (dwarf2out_args_size_adjust): Delete prototype and move around.
1604         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
1605         ACCUMULATE_OUTGOING_ARGS targets.
1606
1607 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
1608
1609         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
1610         DECL_SIZE of DECL_RESULT before evaluating it.
1611
1612 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1613
1614         PR tree-optimization/41987
1615         * fold-const.c (const_binop): Avoid using fold_buildN().
1616
1617 2009-11-10  Martin Jambor  <mjambor@suse.cz>
1618
1619         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
1620         (execute_all_ipa_stmt_fixups): Declare.
1621         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
1622         * ipa-inline.c (pass_ipa_inline): Likewise.
1623         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
1624         * ipa-reference.c (pass_ipa_reference): Likewise.
1625         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
1626         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
1627         (pass_ipa_lto_finish_out): Likewise.
1628         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
1629         * passes.c (execute_ipa_stmt_fixups): New function.
1630         (execute_all_ipa_stmt_fixups): New function.
1631         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
1632
1633 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
1634
1635         PR ada/20548
1636         * explow.c (probe_stack_range): Fix typo.
1637         * config/sparc/sparc.md (probe_stack): New expander.
1638
1639 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
1640
1641         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
1642
1643 2009-11-09  Jason Merrill  <jason@redhat.com>
1644
1645         * gdbinit.in (pgq): New function for printing gimple sequence.
1646
1647 2009-11-09  Paul Brook  <paul@codesourcery.com>
1648             Daniel Jacobowitz  <dan@codesourcery.com>
1649             Sandra Loosemore  <sandra@codesourcery.com>
1650
1651         * doc/extend.texi (Half-Precision): Update wording to reflect
1652         that there are now multiple -mfpu options that enable fp16
1653         hardware support.
1654         * doc/invoke.texi: Update list of ARM -mfpu= options.
1655         * config.gcc: Update ARM --with-fpu option list.
1656         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
1657         vfpv3xd and vfpv3xd-fp16.
1658         (use_vfp_abi): New function.
1659         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
1660         when undesirable.
1661         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
1662         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
1663         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
1664         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
1665         provides them.
1666         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
1667         NEON.
1668         (arm_print_operand): Handle 'p' modifier.
1669         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
1670         TARGET_FP16.
1671         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
1672         (TARGET_FP16): Define.
1673         * config/arm/vfp.md: Disable double-precision patterns if the FPU
1674         does not provide them.
1675         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
1676         double-precision values on a single-precision FPU.
1677         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
1678         double-precision constants.
1679         (movhf_vfp_neon): New pattern (was movhf_vfp).
1680         (movhf_vfp): Remove NEON instructions.
1681         * config/arm/constraints.md: Add new "Dy" constraint for
1682         double-precision constants.  Update description of "Dv".
1683         * config/arm/arm.md: Disable double-precision patterns if the FPU
1684         does not provide them
1685
1686 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
1687
1688         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
1689         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
1690         diagnostics.
1691
1692 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
1693
1694         * collect2.c (main): Search PLUGIN_LD for plugin linker.
1695
1696         * configure.ac (--with-plugin-ld): New.  Default to ld.
1697         * configure: Regenerated.
1698         * config.in: Likewise.
1699
1700         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
1701         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
1702
1703 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
1704
1705         * config/openbsd-stdint.h: Change to reflect what
1706         c_common_nodes_and_builtins expects.
1707
1708 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
1709
1710         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
1711
1712 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
1713
1714         PR target/41985
1715         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
1716         function contains at least one local dynamic name.
1717         (print_operand) <case '&'>: Instead output operand lossage diagnostics
1718         here if that happens.
1719
1720 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
1721             Joern Rennecke  <amylaar@spamcop.net>
1722
1723         * cfgrtl.c (pass_free_cfg): Add pass name.
1724         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
1725         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
1726         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
1727         * df-core.c (pass_df_initialize_no_opt): Likewise.
1728         * except.c (pass_rtl_eh): Likewise.
1729         * function.c (pass_init_function, pass_leaf_regs): Likewise.
1730         * gcse.c (pass_rtl_pre): Change pass name.
1731         * passes.c (pass_postreload): Add pass name.
1732         (make_pass_instance): Don't use duplicate-tracking logic for
1733         names starting with '*'.
1734         (next_pass_1): Assert that pass has a name.
1735         (register_one_dump_file): If there is an space in the name,
1736         skip past it.
1737         * predict.c (pass_strip_predict_hints): Add pass name.
1738         * reg-stack.c (pass_stack_regs): Likewise.
1739         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
1740         * tree-cfg.c (pass_warn_function_return,
1741         pass_warn_function_noreturn): Add pass name.
1742         * tree-dfa.c (pass_referenced_vars): Likewise.
1743         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
1744         Fix whitespace before comment.
1745         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
1746         (pass_init_datastructures): Add pass name.
1747         * tree-ssa-loop.c (pass_record_bounds): Likewise.
1748         * tree-ssa.c (pass_early_warn_uninitialized,
1749         pass_late_warn_uninitialized): Likewise.
1750         * tree.c (pass_ipa_free_lang_data): Likewise.
1751         * doc/passes.texi (pass manager): Document how to disambiguate
1752         pass names.
1753
1754 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
1755
1756         * df-problems.c: Fix documentation for forward simulation of LR.
1757         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
1758         (df_simulate_finalize_forwards): Remove.
1759         * df.h (df_simulate_finalize_forwards): Remove.
1760
1761 2009-11-08  Richard Guenther  <rguenther@suse.de>
1762
1763         * tree-ssa-structalias.c (build_succ_graph): Properly make
1764         variables escape if they are stored to anything.
1765
1766 2009-11-08  Richard Guenther  <rguenther@suse.de>
1767
1768         PR rtl-optimization/41928
1769         * loop-invariant.c (free_loop_data): If we didn't allocate
1770         loop data do not try to free it.
1771
1772 2009-11-07  Jason Merrill  <jason@redhat.com>
1773
1774         * tree.c (reconstruct_complex_type): Preserve attributes.
1775
1776 2009-11-07  Richard Guenther  <rguenther@suse.de>
1777
1778         * tree-ssa-structalias.c (build_succ_graph): Feed stores
1779         to anything only to variables that can take pointers.
1780         (get_constraint_for_ssa_var): Properly exclude full
1781         variables from expanding.
1782         (first_vi_for_offset): Avoid overflow in arithmetic.
1783         (first_or_preceding_vi_for_offset): Likewise.
1784         (count_num_arguments): Fix implementation.
1785         (gate_ipa_pta): Do not run when not optimizing.
1786
1787 2009-11-07  David Binderman <dcb314@hotmail.com>
1788
1789         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
1790         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
1791         set but not used variables.
1792         (apply_args_reg_offset): Comment out as unused.
1793         * calls.c (flags_from_decl_or_type): Likewise.
1794         * genautomata.c (check_regexp_units_distribution): Likewise.
1795
1796 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
1797
1798         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
1799         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
1800         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
1801         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
1802         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
1803         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
1804         operand alternatives.
1805
1806 2009-11-06  Michael Matz  <matz@suse.de>
1807
1808         PR middle-end/41963
1809         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
1810         of a potential reciprocal to really be reciprocals.
1811
1812 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
1813
1814         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
1815         lwpintrin.h after immintrin.h.
1816         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
1817         typedefs.
1818
1819         PR middle-end/41935
1820         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
1821         or non-constant index, allow index one past the last element and
1822         allow exceeding array bound in arrays that might be used as flexible
1823         array members.
1824
1825 2009-11-05  Richard Henderson  <rth@redhat.com>
1826
1827         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
1828
1829 2009-11-05  Paul Brook  <paul@codesourcery.com>
1830
1831         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
1832         (arm_fpu_desc): New.
1833         (all_fpus): Add FPU details.
1834         (fp_model_for_fpu): Remove.
1835         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
1836         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
1837         (arm_file_start): Use arm_fpu_desc.
1838         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
1839         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
1840         arm_fpu_desc.
1841         (TARGET_FPA_EMU2): Define.
1842         (arm_fp_model, fputype, arm_fpu_tune): Remove.
1843         (vfp_reg_type, arm_fpu_desc): New.
1844         * config/arm/arm.md (attr fpu): Simplify.
1845         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
1846         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
1847         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
1848         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
1849         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
1850
1851 2009-11-05  Michael Matz  <matz@suse.de>
1852
1853         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
1854         on TARGET_RECIP.
1855         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
1856         for 1/sqrtf.
1857
1858 2009-11-04  Jason Merrill  <jason@redhat.com>
1859
1860         PR c++/36912
1861         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
1862         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
1863         (output_constant): Avoid crash after error.
1864
1865 2009-11-05  Martin Jambor  <mjambor@suse.cz>
1866
1867         * tree-sra.c (struct access): Changed comment of next_sibling field.
1868         (analyze_modified_params): Loop over accesses of a group rather than
1869         over all with the ame base, pass a common bitmap to
1870         walk_aliased_vdefs.
1871         (unmodified_by_ref_scalar_representative): Build link lists of
1872         accesses of a group.
1873         (splice_param_accesses): Likewise.
1874
1875 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
1876
1877         * df-scan.c (df-uses-record): Add case zero_extract of mem.
1878
1879 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
1880
1881         PR target/10127
1882         PR ada/20548
1883         * config/i386/i386.md (probe_stack): New expander.
1884         (logical operation peepholes): Do not split stack checking probes.
1885
1886 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
1887             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1888
1889         * doc/invoke.texi (-mlwp): Add documentation.
1890         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
1891         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
1892         (x86_64-*-*): Ditto.
1893         * config/i386/lwpintrin.h: New file, provide x86 compiler
1894         intrinisics for LWP.
1895         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
1896         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
1897         * config/i386/i386-c.c (ix86_target_macros_internal): Check
1898         ISA_FLAG for LWP.
1899         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
1900         * config/i386/i386.opt (-mlwp): New switch for LWP support.
1901         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
1902         (OPTION_MASK_ISA_LWP_UNSET): New.
1903         (ix86_handle_option): Handle -mlwp.
1904         (isa_opts): Handle -mlwp.
1905         (enum pta_flags): Add PTA_LWP.
1906         (override_options): Add LWP support.
1907         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
1908         (IX86_BUILTIN_LLWPCB32): Ditto.
1909         (IX86_BUILTIN_LLWPCB64): Ditto.
1910         (IX86_BUILTIN_SLWPCB16): Ditto.
1911         (IX86_BUILTIN_SLWPCB32): Ditto.
1912         (IX86_BUILTIN_SLWPCB64): Ditto.
1913         (IX86_BUILTIN_LWPVAL16): Ditto.
1914         (IX86_BUILTIN_LWPVAL32): Ditto.
1915         (IX86_BUILTIN_LWPVAL64): Ditto.
1916         (IX86_BUILTIN_LWPINS16): Ditto.
1917         (IX86_BUILTIN_LWPINS32): Ditto.
1918         (IX86_BUILTIN_LWPINS64): Ditto.
1919         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
1920         (builtin_description): Ditto.
1921         (ix86_init_mmx_sse_builtins): Ditto.
1922         (ix86_expand_special_args_builtin): Ditto.
1923         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
1924         LWP support.
1925         (UNSPEC_SLWP_INTRINSIC): Ditto.
1926         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
1927         (UNSPECV_LWPINS_INTRINSIC): Ditto.
1928         (lwp_llwpcbhi1): New lwp pattern.
1929         (lwp_llwpcbsi1): Ditto.
1930         (lwp_llwpcbdi1): Ditto.
1931         (lwp_slwpcbhi1): Ditto.
1932         (lwp_slwpcbsi1): Ditto.
1933         (lwp_slwpcbdi1): Ditto.
1934         (lwp_lwpvalhi3): Ditto.
1935         (lwp_lwpvalsi3): Ditto.
1936         (lwp_lwpvaldi3): Ditto.
1937         (lwp_lwpinshi3): Ditto.
1938         (lwp_lwpinssi3): Ditto.
1939         (lwp_lwpinsdi3): Ditto.
1940
1941 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1942             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1943
1944         PR rtl-opt/41833
1945         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
1946         a vec_duplicate.
1947
1948 2009-11-04  Richard Guenther  <rguenther@suse.de>
1949             Rafael Avila de Espindola  <espindola@google.com>
1950
1951         * gcc.c (process_command): Handle arguments name@offset.
1952
1953 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
1954             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1955
1956         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
1957         (x86_64-*-*): Ditto.
1958         * config/i386/xopintrin.h: New file, provide common x86 compiler
1959         intrinisics for XOP.
1960         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
1961         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
1962         * config/i386/i386-c.c(ix86_target_macros_internal): Check
1963         ISA_FLAG for XOP.
1964         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
1965         * config/i386/i386.opt (-mxop): New switch for XOP support.
1966         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
1967         (UNSPEC_XOP_TRUEFALSE)
1968         (UNSPEC_XOP_PERMUTE)
1969         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
1970         (PPERM_*): New constants for vpperm instruction.
1971         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
1972         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
1973         (OPTION_MASK_ISA_XOP_UNSET): New.
1974         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
1975         (ix86_handle_option): Handle -mxop.
1976         (isa_opts): Handle -mxop.
1977         (enum pta_flags): Add PTA_XOP.
1978         (override_options): Add XOP support.
1979         (print_operand): Add code for XOP compare instructions.
1980         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
1981         (ix86_expand_int_vcond): Extend for XOP compare instruction.
1982
1983         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
1984         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
1985         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
1986         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
1987         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
1988         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
1989         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
1990
1991         (IX86_BUILTIN_VPCMOV256): Ditto.
1992         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
1993         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
1994         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
1995         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
1996         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
1997         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
1998
1999         (IX86_BUILTIN_VPPERM): Ditto.
2000
2001         (IX86_BUILTIN_VPMACSSWW): Ditto.
2002         (IX86_BUILTIN_VPMACSWW): Ditto.
2003         (IX86_BUILTIN_VPMACSSWD): Ditto.
2004         (IX86_BUILTIN_VPMACSWD): Ditto.
2005         (IX86_BUILTIN_VPMACSSDD): Ditto.
2006         (IX86_BUILTIN_VPMACSDD): Ditto.
2007         (IX86_BUILTIN_VPMACSSDQL): Ditto.
2008         (IX86_BUILTIN_VPMACSSDQH): Ditto.
2009         (IX86_BUILTIN_VPMACSDQL): Ditto.
2010         (IX86_BUILTIN_VPMACSDQH): Ditto.
2011         (IX86_BUILTIN_VPMADCSSWD): Ditto.
2012         (IX86_BUILTIN_VPMADCSWD): Ditto.
2013
2014         (IX86_BUILTIN_VPHADDBW): Ditto.
2015         (IX86_BUILTIN_VPHADDBD): Ditto.
2016         (IX86_BUILTIN_VPHADDBQ): Ditto.
2017         (IX86_BUILTIN_VPHADDWD): Ditto.
2018         (IX86_BUILTIN_VPHADDWQ): Ditto.
2019         (IX86_BUILTIN_VPHADDDQ): Ditto.
2020         (IX86_BUILTIN_VPHADDUBW): Ditto.
2021         (IX86_BUILTIN_VPHADDUBD): Ditto.
2022         (IX86_BUILTIN_VPHADDUBQ): Ditto.
2023         (IX86_BUILTIN_VPHADDUWD): Ditto.
2024         (IX86_BUILTIN_VPHADDUWQ): Ditto.
2025         (IX86_BUILTIN_VPHADDUDQ): Ditto.
2026         (IX86_BUILTIN_VPHSUBBW): Ditto.
2027         (IX86_BUILTIN_VPHSUBWD): Ditto.
2028         (IX86_BUILTIN_VPHSUBDQ): Ditto.
2029
2030         (IX86_BUILTIN_VPROTB): Ditto.
2031         (IX86_BUILTIN_VPROTW): Ditto.
2032         (IX86_BUILTIN_VPROTD): Ditto.
2033         (IX86_BUILTIN_VPROTQ): Ditto.
2034         (IX86_BUILTIN_VPROTB_IMM): Ditto.
2035         (IX86_BUILTIN_VPROTW_IMM): Ditto.
2036         (IX86_BUILTIN_VPROTD_IMM): Ditto.
2037         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
2038
2039         (IX86_BUILTIN_VPSHLB): Ditto.
2040         (IX86_BUILTIN_VPSHLW): Ditto.
2041         (IX86_BUILTIN_VPSHLD): Ditto.
2042         (IX86_BUILTIN_VPSHLQ): Ditto.
2043         (IX86_BUILTIN_VPSHAB): Ditto.
2044         (IX86_BUILTIN_VPSHAW): Ditto.
2045         (IX86_BUILTIN_VPSHAD): Ditto.
2046         (IX86_BUILTIN_VPSHAQ): Ditto.
2047
2048         (IX86_BUILTIN_VFRCZSS): Ditto.
2049         (IX86_BUILTIN_VFRCZSD): Ditto.
2050         (IX86_BUILTIN_VFRCZPS): Ditto.
2051         (IX86_BUILTIN_VFRCZPD): Ditto.
2052         (IX86_BUILTIN_VFRCZPS256): Ditto.
2053         (IX86_BUILTIN_VFRCZPD256): Ditto.
2054
2055         (IX86_BUILTIN_VPCOMEQUB): Ditto.
2056         (IX86_BUILTIN_VPCOMNEUB): Ditto.
2057         (IX86_BUILTIN_VPCOMLTUB): Ditto.
2058         (IX86_BUILTIN_VPCOMLEUB): Ditto.
2059         (IX86_BUILTIN_VPCOMGTUB): Ditto.
2060         (IX86_BUILTIN_VPCOMGEUB): Ditto.
2061         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
2062         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
2063
2064         (IX86_BUILTIN_VPCOMEQUW): Ditto.
2065         (IX86_BUILTIN_VPCOMNEUW): Ditto.
2066         (IX86_BUILTIN_VPCOMLTUW): Ditto.
2067         (IX86_BUILTIN_VPCOMLEUW): Ditto.
2068         (IX86_BUILTIN_VPCOMGTUW): Ditto.
2069         (IX86_BUILTIN_VPCOMGEUW): Ditto.
2070         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
2071         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
2072
2073         (IX86_BUILTIN_VPCOMEQUD): Ditto.
2074         (IX86_BUILTIN_VPCOMNEUD): Ditto.
2075         (IX86_BUILTIN_VPCOMLTUD): Ditto.
2076         (IX86_BUILTIN_VPCOMLEUD): Ditto.
2077         (IX86_BUILTIN_VPCOMGTUD): Ditto.
2078         (IX86_BUILTIN_VPCOMGEUD): Ditto.
2079         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
2080         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
2081
2082         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
2083         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
2084         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
2085         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
2086         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
2087         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
2088         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
2089         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
2090
2091         (IX86_BUILTIN_VPCOMEQB): Ditto.
2092         (IX86_BUILTIN_VPCOMNEB): Ditto.
2093         (IX86_BUILTIN_VPCOMLTB): Ditto.
2094         (IX86_BUILTIN_VPCOMLEB): Ditto.
2095         (IX86_BUILTIN_VPCOMGTB): Ditto.
2096         (IX86_BUILTIN_VPCOMGEB): Ditto.
2097         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
2098         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
2099
2100         (IX86_BUILTIN_VPCOMEQW): Ditto.
2101         (IX86_BUILTIN_VPCOMNEW): Ditto.
2102         (IX86_BUILTIN_VPCOMLTW): Ditto.
2103         (IX86_BUILTIN_VPCOMLEW): Ditto.
2104         (IX86_BUILTIN_VPCOMGTW): Ditto.
2105         (IX86_BUILTIN_VPCOMGEW): Ditto.
2106         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
2107         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
2108
2109         (IX86_BUILTIN_VPCOMEQD): Ditto.
2110         (IX86_BUILTIN_VPCOMNED): Ditto.
2111         (IX86_BUILTIN_VPCOMLTD): Ditto.
2112         (IX86_BUILTIN_VPCOMLED): Ditto.
2113         (IX86_BUILTIN_VPCOMGTD): Ditto.
2114         (IX86_BUILTIN_VPCOMGED): Ditto.
2115         (IX86_BUILTIN_VPCOMFALSED): Ditto.
2116         (IX86_BUILTIN_VPCOMTRUED): Ditto.
2117
2118         (IX86_BUILTIN_VPCOMEQQ): Ditto.
2119         (IX86_BUILTIN_VPCOMNEQ): Ditto.
2120         (IX86_BUILTIN_VPCOMLTQ): Ditto.
2121         (IX86_BUILTIN_VPCOMLEQ): Ditto.
2122         (IX86_BUILTIN_VPCOMGTQ): Ditto.
2123         (IX86_BUILTIN_VPCOMGEQ): Ditto.
2124         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
2125         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
2126
2127         (enum multi_arg_type): New enum for describing the various XOP
2128         intrinsic argument types.
2129         (bdesc_multi_arg): New table for XOP intrinsics.
2130         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
2131         (ix86_expand_multi_arg_builtin): New function for creating XOP
2132         intrinsics.
2133
2134         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
2135         (xop_pmacsww): Ditto.
2136         (xop_pmacssww): Ditto.
2137         (xop_pmacsdd): Ditto.
2138         (xop_pmacssdd): Ditto.
2139         (xop_pmacssdql): Ditto.
2140         (xop_pmacssdqh): Ditto.
2141         (xop_pmacsdql): Ditto.
2142         (xop_pmacsdql_mem): Ditto.
2143         (xop_mulv2div2di3_low): Ditto.
2144         (xop_pmacsdqh): Ditto.
2145         (xop_pmacsdqh_mem): Ditto.
2146         (xop_mulv2div2di3_high): Ditto.
2147         (xop_pmacsswd): Ditto.
2148         (xop_pmacswd): Ditto.
2149         (xop_pmadcsswd): Ditto.
2150         (xop_pmadcswd): Ditto.
2151         (xop_pcmov_<mode>): Ditto.
2152         (xop_pcmov_<mode>256): Ditto.
2153         (xop_phaddbw): Ditto.
2154         (xop_phaddbd): Ditto.
2155         (xop_phaddbq): Ditto.
2156         (xop_phaddwd): Ditto.
2157         (xop_phaddwq): Ditto.
2158         (xop_phadddq): Ditto.
2159         (xop_phaddubw): Ditto.
2160         (xop_phaddubd): Ditto.
2161         (xop_phaddubq): Ditto.
2162         (xop_phadduwd): Ditto.
2163         (xop_phadduwq): Ditto.
2164         (xop_phaddudq): Ditto.
2165         (xop_phsubbw): Ditto.
2166         (xop_phsubwd): Ditto.
2167         (xop_phsubdq): Ditto.
2168         (xop_pperm): Ditto.
2169         (rotl<mode>3): Ditto.
2170         (rotr<mode>3): Ditto.
2171         (xop_rotl<mode>3): Ditto.
2172         (xop_rotr<mode>3): Ditto.
2173         (vrotr<mode>3): Ditto.
2174         (vrotl<mode>3): Ditto.
2175         (xop_vrotl<mode>3): Ditto.
2176         (vlshr<mode>3): Ditto.
2177         (vashr<mode>3): Ditto.
2178         (vashl<mode>3
2179         (xop_ashl<mode>3): Ditto.
2180         (xop_lshl<mode>3): Ditto.
2181         (ashlv16qi3): Ditto.
2182         (lshlv16qi3): Ditto.
2183         (ashrv16qi3): Ditto.
2184         (ashrv2di3): Ditto.
2185         (xop_frcz<mode>2): Ditto.
2186         (xop_vmfrcz<mode>2): Ditto.
2187         (xop_frcz<mode>2256): Ditto.
2188         (xop_maskcmp<mode>3): Ditto.
2189         (xop_maskcmp_uns<mode>3): Ditto.
2190         (xop_maskcmp_uns2<mode>3): Ditto.
2191         (xop_pcom_tf<mode>3): Ditto.
2192
2193         * doc/invoke.texi (-mxop): Add documentation.
2194         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
2195
2196 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
2197
2198         PR driver/11810
2199         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
2200         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
2201         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
2202
2203 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
2204
2205         PR target/40835
2206         * arm.md (peephole2 patterns for move and compare): New.
2207
2208 2009-11-04  Nick Clifton  <nickc@redhat.com>
2209
2210         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
2211         Make sure that it does not allow CONST_DOUBLEs.
2212         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
2213         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
2214         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
2215         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
2216         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
2217         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
2218         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
2219         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
2220         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
2221         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
2222         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
2223         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
2224         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
2225         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
2226         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
2227
2228 2009-11-04  Richard Guenther  <rguenther@suse.de>
2229
2230         PR tree-optimization/41919
2231         * tree-vrp.c (test_for_singularity): Properly compare values.
2232
2233 2009-11-04  Revital Eres  <eres@il.ibm.com>
2234
2235         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
2236         Consider peeling for alignment only for stores and remove
2237         redundant assignment.
2238
2239 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
2240
2241         PR target/41302
2242         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
2243         (m68k_ok_for_sibcall_p): Handle different result return locations.
2244
2245 2009-11-04  Richard Guenther  <rguenther@suse.de>
2246
2247         * c-opts.c (c_common_post_options): Move LTO option processing
2248         code ...
2249         * opts.c (decode_options): ... here.
2250
2251 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
2252
2253         * c-common.c (fold_offsetof_1): Use %wd instead of
2254         HOST_WIDE_INT_PRINT_DEC.
2255
2256 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
2257
2258         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
2259         __pic__ or __PIC__.
2260
2261 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
2262
2263         * config.gcc (vax-*-linux*): Keep the original contents of
2264         tmake_file while adding vax/t-linux.
2265
2266 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
2267
2268         PR target/10127
2269         PR ada/20548
2270         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
2271         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
2272         (STACK_CHECK_MOVING_SP): Likewise.
2273         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
2274         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
2275         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
2276         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
2277         Document PROBE_STACK.
2278         * explow.c (anti_adjust_stack_and_probe): New function.
2279         (allocate_dynamic_stack_space): Do not directly allocate space if
2280         STACK_CHECK_MOVING_SP, instead invoke above function.
2281         (emit_stack_probe): Handle probe_stack insn.
2282         (PROBE_INTERVAL): New macro.
2283         (STACK_GROW_OPTAB): Likewise.
2284         (STACK_GROW_OFF): Likewise.
2285         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
2286         loop condition in the small constant case.  Rewrite in the general
2287         case to be immune to wraparounds.  Make sure the address of probes
2288         is valid.  Try to use [base + disp] addressing mode if possible.
2289         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
2290         checking is enabled and STACK_CHECK_MOVING_SP.
2291         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
2292         return 1 for volatile references to the stack pointer.
2293         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
2294         __builtin_alloca if stack checking is enabled.
2295         * unwind-dw2.c (uw_identify_context): Take into account whether the
2296         context is that of a signal frame or not.
2297         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
2298         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
2299
2300 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
2301
2302         PR rtl-optimization/41917
2303         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
2304         operand isn't known to be 0, return 1.
2305
2306 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
2307
2308         * config/mips/mips.md: Fix typos.
2309
2310 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
2311
2312         * doc/invoke.texi: Fix typo.
2313
2314 2009-11-03  Paul Brook  <paul@codesourcery.com>
2315
2316         * config/arm/neon.ml (vectype): Add T_floatSF.
2317         (string_of_vectype): Ditto.
2318         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
2319         (deftypes): Use float for float32_t.
2320         * config/arm/arm_neon.h: Regenerate.
2321
2322 2009-11-03  Nick Clifton  <nickc@redhat.com>
2323             Kevin Buettner  <kevinb@redhat.com>
2324
2325         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
2326         order of expected registers.
2327         (rx_load_multiple_vector): Likewise.
2328         (rx_rtsd_vector): Likewise.
2329         * config/rx/rx.c (rx_cpu_type): New variable.
2330         (rx_print_operand): Fix bug printing 64-bit constant values.
2331         (rx_emit_stack_pushm): Reverse order of pushed registers.
2332         (gen_rx_store_vector): Likewise.
2333         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
2334         attribute name.
2335         (is_exception_func): Rename to is_interrupt_func and only accept
2336         "interrupt" as the attribute name.
2337         (rx_get_stack_layout): Use new function name.
2338         (rx_func_attr_inlinable): Likewise.
2339         (rx_attribute_table): Remove "exception".
2340         (rx_expand_prologue): If necessary push the accumulator register
2341         in the prologue of interrupt functions.
2342         (rx_expand_epilogue): If necessary pop the accumulator.
2343         (rx_builtins): Add RX_BUILTIN_MVTIPL.
2344         (rx_expand_builtin_stz): Remove.
2345         (rx_expand_builtin_mvtipl): New function.
2346         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
2347         (rx_expand_builtin): Likewise.
2348         (rx_enable_fpu): New variable.
2349         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
2350         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
2351         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
2352         (enum rx_cpu_types): Define.
2353         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
2354         (INCOMING_FRAME_SP_OFFSET): Define.
2355         (ARG_POINTER_CFA_OFFSET): Define.
2356         (FRAME_POINTER_CFA_OFFSET): Define.
2357         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
2358         (ALLOW_RX_FPU_INSNS): Define.
2359         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
2360         fast_math_flags_set_p.
2361         (UNSPEC_BUILTIN_MVTIPL): Define.
2362         (revl): Rename to bswapsi2.
2363         (bswaphi2): New pattern.
2364         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
2365         (mvtaclo): Likewise.
2366         (racw): Likewise.
2367         (mvtc): Remove clobber of cc0.
2368         (mvtcp): Delete.
2369         (opecp): Delete.
2370         * config/rx/rx.opt (mieee): Remove.
2371         (fpu): Add.
2372         (nofpu): Add.
2373         (mcpu=): Add.
2374         (patch=): Add.
2375         (msave-acc-in-interrupts): Add.
2376         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
2377         (MULTILIB_DIRS): Likewise.
2378         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
2379         * doc/extend.texi: Remove description of "exception" function
2380         attribute.
2381         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
2382         -msave-acc-in-interrupts options.
2383
2384 2009-11-03  Richard Guenther  <rguenther@suse.de>
2385
2386         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
2387
2388 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
2389
2390         PR c++/38699
2391         * c-common.c (fold_offsetof_1): Issue errors when the member
2392         designator of the offsetof expression is not legitimate.
2393
2394 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2395
2396         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
2397         names instead of numerical constants.
2398         (sse_prologue_save): Ditto.
2399         (*sse_prologue_save_insn): Ditto.
2400
2401 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2402
2403         PR target/41900
2404         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
2405         (TARGET_CALL_ESP): New define.
2406         * config/i386/i386.c (initial_ix86_tune_features): Initialize
2407         X86_ARCH_CALL_ESP.
2408         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
2409         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
2410         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
2411         TARGET_CALL_ESP.
2412         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
2413         New patterns, use "lsm" as operand 1 constraint.
2414         * config/i386/predicates.md (call_insn_operand): Depend on
2415         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
2416
2417 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2418
2419         PR tree-optimization/41857
2420         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
2421         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
2422         to create_mem_ref.
2423         * tree-ssa-address.c (move_hint_to_base): New function.
2424         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
2425         address space associated with TYPE.
2426         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
2427         most_expensive_mult_to_index.  Call move_hint_to_base.
2428         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
2429         TYPE to addr_to_parts.
2430
2431 2009-11-02  Martin Jambor  <mjambor@suse.cz>
2432
2433         PR tree-optimization/41750
2434         * tree-sra.c (analyze_modified_params): Loop over all
2435         representatives of components of a parameter.
2436
2437 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
2438
2439         PR tree-optimization/41841
2440         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
2441         local variables of not yet materialized clones.
2442
2443         PR debug/41893
2444         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
2445         for a VOIDmode variable.
2446
2447         PR c++/41774
2448         * c-pragma.c (visstack): Change into vector of ints rather than
2449         enum symbol_visibility.
2450         (push_visibility): Add kind argument, push default_visibility together
2451         with kind.
2452         (pop_visibility): Add kind argument, return true if successful, fail
2453         if visibility stack is empty or if stack top is of different kind.
2454         (handle_pragma_visibility): Don't check length of visstack, instead
2455         call pop_visibility and issue diagnostics if it failed.  Pass 0
2456         as last argument to push_visibility and pop_visibility.
2457         * c-pragma.h (push_visibility): Add kind argument.
2458         (pop_visibility): Likewise.  Return bool instead of void.
2459
2460 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
2461
2462         * tree.def (TARGET_MEM_REF): Update comment.
2463         * alias.c (get_alias_set): Retrieve the original memory reference for
2464         a TARGET_MEM_REF before proceeding.
2465
2466 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
2467
2468         * config/frv/frv.c (frv_function_value, frv_libcall_value,
2469         frv_function_value_regno_p): New functions.
2470         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2471         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2472         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
2473         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
2474
2475 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
2476
2477         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
2478         new 'outgoing' argument.
2479         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
2480         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2481         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
2482         LIBCALL_VALUE): Remove.
2483         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
2484         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
2485         (mh10300_function_value_regno_p): Declare.
2486
2487 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2488
2489         * config/arm/cortex-a9.md: New - integer pipeline description.
2490
2491 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
2492
2493         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
2494         aborting if the sizes of the two references don't match.
2495
2496 2009-10-31  Toon Moene  <toon@moene.org>
2497
2498         * ipa-inline.c (cgraph_decide_inlining):
2499         Include reason for not inlining called-once functions in dump file.
2500
2501 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
2502
2503         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
2504         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
2505         (LINK_SPEC): BE_LINK_SPEC added.
2506
2507 2009-10-30  Richard Guenther  <rguenther@suse.de>
2508
2509         PR lto/41858
2510         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
2511
2512 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
2513
2514         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
2515         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
2516         label.
2517
2518 2009-10-30  Martin Jambor  <mjambor@suse.cz>
2519
2520         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
2521
2522 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
2523
2524         PR target/40838
2525         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
2526         first.  Move assert on stack_alignment_estimated just before
2527         setting stack_realign_needed.
2528         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
2529         Don't call update_stack_boundary.
2530
2531         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
2532         (verride_options): Don't check ix86_force_align_arg_pointer here.
2533         (ix86_function_ok_for_sibcall): Use it.
2534         (ix86_update_stack_boundary): Likewise.
2535
2536         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
2537
2538 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
2539
2540         * arm.md (QHSI): New mode iterator.
2541         (movqi): If generating for thumb, then truncate any immediate to
2542         8 bits.
2543         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
2544         with...
2545         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
2546         version.
2547
2548 2009-10-29  Cary Coutant  <ccoutant@google.com>
2549
2550         PR debug/41700
2551         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
2552         locations in the source).
2553         (store_vcall_insn): New function.
2554         (lookup_vcall_insn): New function.
2555         (dwarf2out_virtual_call_token): Use store_vcall_insn.
2556         (dwarf2out_copy_call_info): New function.
2557         (dwarf2out_virtual_call): Use lookup_vcall_insn.
2558         * emit-rtl.c (try_split): Call copy_call_info debug hook.
2559         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
2560         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
2561         (debug_nothing_rtx_rtx): New dummy hook.
2562         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
2563         (xcoff_debug_hooks): Likewise.
2564         * sdbout.c (sdb_debug_hooks): Likewise.
2565         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
2566
2567 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
2568
2569         * doc/invoke.texi (mmcount-ra-address): Document new command line
2570         option.
2571         * config/mips/mips.opt (mmcount-ra-address): New option.
2572         * config/mips/mips-protos.h (mips_function_profiler): Declare new
2573         function.
2574         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
2575         member.
2576         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
2577         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
2578         rewritten.
2579         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
2580         mips_function_profiler.
2581
2582 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
2583
2584         PR middle-end/37565
2585         PR target/38018
2586         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
2587         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
2588         * optc-gen.awk (cl_target_option_restore): Include call to
2589         targetm.override_options_after_change.
2590         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
2591         * target.h (override_options_after_change): New.
2592         * c-common.c (parse_optimize_options): Call
2593         targetm.override_options_after_change.
2594         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
2595         (ia64_override_options_after_change): New.
2596         (ia64_override_options) Add call to above.
2597
2598 2009-10-29  Michael Matz  <matz@suse.de>
2599
2600         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
2601         (gate_convert_to_rsqrt): Ditto.
2602         (pass_convert_to_rsqrt): Ditto.
2603         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
2604         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
2605         to pass list.
2606
2607         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
2608
2609 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2610
2611         * config/arm/arm.c (find_best_start): Fix type of remainder to be
2612         unsigned.
2613
2614 2009-10-29  Martin Jambor  <mjambor@suse.cz>
2615
2616         PR tree-optimization/41775
2617         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
2618         (generate_subtree_copies): Do not unshare agg.
2619         (load_assign_lhs_subreplacements): Do not unshare rhs.
2620         (sra_modify_assign): Do not unshare exprs.
2621         (propagate_subacesses_accross_link): Renamed to
2622         propagate_subaccesses_across_link.
2623
2624 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
2625
2626         * arm.c (count_insns_for_constant): Rework to support counting for
2627         thumb2 immediates as well.
2628         (find_best_start): Split out from arm_gen_constant.
2629         (arm_gen_constant): Rework to support XOR with immediate.
2630
2631 2009-10-29  Chao-ying Fu  <fu@mips.com>
2632
2633         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
2634         functions.
2635         (mips_expand_synci_loop):  Use the length rtx to control the
2636         synci loop from the begin rtx that points to the first byte of
2637         the cache line.
2638
2639 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
2640
2641         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
2642
2643 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
2644
2645         * dbxout.c (dbxout_common_check): Accept non public trees.
2646         * dwarf2out.c (fortran_common): Accept non public trees.
2647
2648 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
2649
2650         * common.opt (fuse-linker-plugin): New option.
2651         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
2652         fuse-linker-plugin.
2653         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
2654
2655 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2656
2657         PR rtl-optimization/39715
2658         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
2659         (gen_cstoresi_ltu_thumb1): New splitter.
2660
2661 2009-10-28  Richard Guenther  <rguenther@suse.de>
2662
2663         PR lto/41808
2664         PR lto/41839
2665         * tree-ssa.c (useless_type_conversion_p): Do not treat
2666         conversions to pointers to incomplete types as useless.
2667         * gimple.c (gimple_types_compatible_p): Compare struct tags,
2668         not typedef names.
2669
2670 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
2671
2672         * var-tracking.c (emit_note_insn_var_location): Don't call the second
2673         vt_expand_loc unnecessarily when location is not a register nor
2674         memory.
2675
2676         PR middle-end/41837
2677         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
2678         fields don't have DECL_NAME.
2679
2680         PR debug/41801
2681         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
2682         call convert_memory_address on addr.
2683
2684         PR target/41762
2685         * config/i386/i386.c (ix86_pic_register_p): Don't call
2686         rtx_equal_for_cselib_p for VALUEs discarded as useless.
2687
2688 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
2689
2690         * var-tracking.c (emit_note_insn_var_location): Get the mode of
2691         a variable part from its REG, MEM or VALUE.
2692
2693 2009-10-28  Richard Guenther  <rguenther@suse.de>
2694
2695         * gimple.c (gimple_get_alias_set): Fix comment typo.
2696
2697 2009-10-28  Richard Guenther  <rguenther@suse.de>
2698
2699         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
2700         (free_lang_data): Unconditionally compute alias sets for all
2701         standard integer types.  Bail out if gate bailed out previously.
2702         Do not reset the types_compatible_p langhook.
2703         (gate_free_lang_data): Remove.
2704         (struct pass_ipa_free_lang_data): Enable unconditionally.
2705         * gimple.c (gimple_get_alias_set): Use the same alias-set for
2706         all pointer types.
2707
2708 2009-10-28  Richard Guenther  <rguenther@suse.de>
2709
2710         PR middle-end/41855
2711         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
2712         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
2713         (call_may_clobber_ref_p_1): Likewise.
2714         * tree-ssa-structalias.c (find_func_aliases): Likewise.
2715         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
2716
2717 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2718
2719         PR rtl-optimization/41812
2720
2721         Revert:
2722         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2723
2724         * df-problems.c (df_md_scratch): New.
2725         (df_md_alloc, df_md_free): Allocate/free it.
2726         (df_md_local_compute): Only include live registers in init.
2727         (df_md_transfer_function): Prune the in-set computed by
2728         the confluence function, and the gen-set too.
2729
2730 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2731
2732         PR rtl-optimization/39715
2733         * combine.c (simplify_comparison): Use extensions to
2734         widen comparisons.  Try an ANDing first.
2735
2736 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2737
2738         PR rtl-optimization/40741
2739         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
2740         a small constant is cheap.
2741         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
2742         force_reg on the LHS.
2743         (xorsi3): Likewise, and split the XOR if the constant is complex
2744         and not in Thumb mode.
2745
2746 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2747
2748         * expmed.c (emit_store_flag): Check costs before
2749         transforming to the opposite representation.
2750
2751 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2752
2753         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
2754         cstore result to DImode.
2755
2756 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
2757
2758         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
2759         inside the unspec vector.
2760
2761 2009-10-27  Richard Henderson  <rth@redhat.com>
2762
2763         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
2764
2765 2009-10-27  Richard Henderson  <rth@redhat.com>
2766
2767         PR c++/41819
2768         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
2769         eh_region_may_contain_throw; update users.
2770         (eh_region_may_contain_throw): New function.
2771         (lower_catch): Check flag_exceptions before creating exception region.
2772         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
2773         (lower_cleanup): Tidy existing flag_exceptions check to match.
2774
2775 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
2776
2777         PR/41799
2778         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
2779         * config/i386/mingw.opt: Add fset-stack-executable.
2780         * config/i386/i386.c (ix86_trampoline_init): Make call to
2781         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
2782         defined and its value is not zero.
2783         * doc/invoke.texi
2784
2785 2009-10-27  Richard Guenther  <rguenther@suse.de>
2786
2787         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
2788         handle calls to externally visible functions like in regular mode.
2789         (create_variable_info_for): Do not create function infos here.
2790         (have_alias_info): Remove write-only variable.
2791         (solve_constraints): New function split out from common code
2792         in compute_points_to_sets and ipa_pta_execute.
2793         (compute_points_to_sets): Adjust.
2794         (ipa_pta_execute): Likewise.  Handle clones and externally visible
2795         functions like in non-IPA mode.
2796
2797 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
2798
2799         PR c/41842
2800         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
2801         error_mark_node.
2802
2803 2009-10-27  Richard Guenther  <rguenther@suse.de>
2804
2805         * tree-complex.c (expand_complex_div_wide): Check for
2806         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
2807
2808 2009-10-27  Revital Eres  <eres@il.ibm.com>
2809
2810         PR tree-optimization/40648
2811         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
2812         Change decision of when to peel for alignment.
2813
2814 2009-10-27  Richard Guenther  <rguenther@suse.de>
2815
2816         PR lto/41821
2817         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
2818
2819 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
2820
2821         PR bootstrap/41451
2822         * fold-const.c (fold_binary_loc): Do not call
2823         protected_set_expr_location.
2824
2825 2009-10-27  Wei Guozhi  <carrot@google.com>
2826
2827         PR target/41705
2828         * target.h (have_conditional_execution): Add a new target hook
2829         function.
2830         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
2831         * targhooks.h (default_have_conditional_execution): Likewise.
2832         * targhooks.c (default_have_conditional_execution): Likewise.
2833         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
2834         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
2835         (arm_have_conditional_execution): New function.
2836         * ifcvt.c (noce_process_if_block, find_if_header,
2837         cond_exec_find_if_block, dead_or_predicable): Change the usage of
2838         macro HAVE_conditional_execution to a target hook call.
2839         * recog.c (peephole2_optimize): Likewise.
2840         * sched-rgn.c (add_branch_dependences): Likewise.
2841         * final.c (asm_insn_count, final_scan_insn): Likewise.
2842         * bb-reorder.c (HAVE_conditional_execution): Remove it.
2843
2844 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2845             Michael Meissner  <meissner@linux.vnet.ibm.com>
2846             Ulrich Weigand  <uweigand@de.ibm.com>
2847
2848         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
2849         * config/spu/spu_cache.h: New file.
2850
2851         * config/spu/cachemgr.c: New file.
2852         * config/spu/cache.S: New file.
2853
2854         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
2855         (ADDR_SPACE_EA): Define.
2856         (TARGET_ADDR_SPACE_KEYWORDS): Define.
2857         * config/spu/spu.c (EAmode): New macro.
2858         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
2859         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2860         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
2861         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
2862         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
2863         (TARGET_ADDR_SPACE_CONVERT): Likewise.
2864         (TARGET_ASM_SELECT_SECTION): Likewise.
2865         (TARGET_ASM_UNIQUE_SECTION): Likewise.
2866         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
2867         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
2868         (ea_symbol_ref): New function.
2869         (spu_legitimate_constant_p): Handle __ea qualified addresses.
2870         (spu_addr_space_legitimate_address_p): New function.
2871         (spu_addr_space_legitimize_address): Likewise.
2872         (cache_fetch): New global.
2873         (cache_fetch_dirty): Likewise.
2874         (ea_alias_set): Likewise.
2875         (ea_load_store): New function.
2876         (ea_load_store_inline): Likewise.
2877         (expand_ea_mem): Likewise.
2878         (spu_expand_mov): Handle __ea qualified memory references.
2879         (spu_addr_space_pointer_mode): New function.
2880         (spu_addr_space_address_mode): Likewise.
2881         (spu_addr_space_subset_p): Likewise.
2882         (spu_addr_space_convert): Likewise.
2883         (spu_section_type_flags): Handle "._ea" section.
2884         (spu_select_section): New function.
2885         (spu_unique_section): Likewise.
2886         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
2887         and __EA64__ predefined macros.
2888         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
2889         -matomic-updates switches.
2890
2891         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
2892         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
2893         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
2894         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
2895         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
2896         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
2897         $(T)cache128k.o): Likewise.
2898         ($(T)libgcc_%.a): Likewise.
2899
2900         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
2901         * config/spu/spu.opt (-mea32/-mea64): Add switches.
2902         (-maddress-space-conversion): Likewise.
2903         (-mcache-size=): Likewise.
2904         (-matomic-updates): Likewise.
2905         * doc/invoke.texi (-mea32/-mea64): Document.
2906         (-maddress-space-conversion): Likewise.
2907         (-mcache-size=): Likewise.
2908         (-matomic-updates): Likewise.
2909
2910 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2911             Michael Meissner  <meissner@linux.vnet.ibm.com>
2912             Ulrich Weigand  <uweigand@de.ibm.com>
2913
2914         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
2915
2916         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
2917         defined, add the named address space keywords.
2918         (c_addr_space_name): New function.
2919         (complete_array_type): Preserve named address space.
2920         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
2921         instead of targetm.valid_pointer_mode.
2922
2923         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
2924         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
2925         (ADDR_SPACE_KEYWORD): New macro.
2926         (c_addr_space_name): Add prototype.
2927
2928         * c-tree.h (struct c_declspecs): Add address_space member.
2929         (declspecs_add_addrspace): Add prototype.
2930
2931         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
2932
2933         * c-parser.c (c_parse_init): Add assertion.
2934         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
2935         (c_lex_one_token): Handle address space keywords.
2936         (c_token_starts_typename): Likewise.
2937         (c_token_starts_declspecs): Likewise.
2938         (c_parser_declspecs): Likewise.
2939         (c_parser_postfix_expression_after_paren_type): Diagnose compound
2940         literal within function qualified with named address space.
2941
2942         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
2943         address space qualifiers.
2944         (shadow_tag_warned): Warn about useless address space qualifiers.
2945         (quals_from_declspecs): Handle address space qualifiers.
2946         (grokdeclarator): Likewise.
2947         (build_null_declspecs): Likewise.
2948         (declspecs_add_addrspace): New function.
2949
2950         * c-typeck.c (addr_space_superset): New function.
2951         (qualify_type): Handle named address spaces.
2952         (composite_type): Likewise.
2953         (common_pointer_type): Likewise.
2954         (comp_target_types): Likewise.
2955         (build_conditional_expr): Likewise.
2956         (handle_warn_cast_qual): Likewise.
2957         (build_c_cast): Likewise.
2958         (convert_for_assignment): Likewise.
2959         (build_binary_op): Likewise.
2960         (pointer_diff): Handle named address spaces.  Use intermediate
2961         integer type of sufficient size if required.
2962
2963 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2964             Michael Meissner  <meissner@linux.vnet.ibm.com>
2965             Ulrich Weigand  <uweigand@de.ibm.com>
2966
2967         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
2968         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2969         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
2970
2971         * target.h (struct target_def): Add pointer_mode, address_mode,
2972         and valid_pointer_mode to addr_space substructure.
2973         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
2974         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2975         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
2976         (TARGET_ADDR_SPACE_HOOKS): Add them.
2977         * targhooks.c (target_default_pointer_address_modes_p): New function.
2978         * target.h (target_default_pointer_address_modes_p): Add prototype.
2979         * targhooks.c (default_addr_space_pointer_mode): New function.
2980         (default_addr_space_address_mode): Likewise.
2981         (default_addr_space_valid_pointer_mode): Likewise.
2982         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
2983         (default_addr_space_address_mode): Likewise.
2984         (default_addr_space_valid_pointer_mode): Likewise.
2985         * output.h (default_valid_pointer_mode): Move to ...
2986         * targhooks.h (default_valid_pointer_mode): ... here.
2987         * varasm.c (default_valid_pointer_mode): Move to ...
2988         * targhooks.c (default_valid_pointer_mode): ... here.
2989
2990         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
2991         instead of targetm.valid_pointer_mode.
2992
2993         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
2994         * tree.c (integer_pow2p): Likewise.
2995         (tree_log2): Likewise.
2996         (tree_floor_log2): Likewise.
2997         (signed_or_unsigned_type_for): Support pointer type of different size.
2998         (int_or_pointer_precision): New function.
2999         * tree.h (int_or_pointer_precision): Add prototype.
3000         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
3001         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
3002         incoming pointer type instead of POINTER_SIZE.
3003
3004         * tree.c (build_pointer_type): Use appropriate pointer mode
3005         instead of ptr_mode.
3006         (build_reference_type): Likewise.
3007         * expr.c (store_expr): Likewise.
3008         (expand_expr_addr_expr): Likewise.
3009         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
3010         * cfgexpand.c (expand_debug_expr): Likewise.
3011
3012         * auto-inc-dec.c: Include "target.h".
3013         (try_merge): Use appropriate address mode instead of Pmode.
3014         (find_inc): Likewise.
3015         * combine.c (find_split_point): Likewise.
3016         * cselib.c (cselib_record_sets): Likewise.
3017         * dse.c (replace_inc_dec): Likewise.
3018         (canon_address): Likewise.
3019         * var-tracking.c (replace_expr_with_values): Likewise.
3020         (count_uses): Likewise.
3021         (add_uses): Likewise.
3022         (add_stores): Likewise.
3023         * emit-rtl.c: Include "target.h".
3024         (adjust_address_1): Use appropriate address mode instead of Pmode.
3025         (offset_address): Likewise.
3026         * explow.c (break_out_memory_refs): Likewise.
3027         (memory_address_addr_space): Likewise.
3028         (promote_mode): Likewise.
3029         * expr.c (move_by_pieces): Likewise.
3030         (emit_block_move_via_loop): Likewise.
3031         (store_by_pieces): Likewise.
3032         (store_by_pieces_1): Likewise.
3033         (expand_assignment): Likewise.
3034         (store_constructor): Likewise.
3035         (expand_expr_addr_expr): Likewise.
3036         (expand_expr_real_1): Likewise.
3037         * cfgexpand.c (expand_debug_expr): Likewise.
3038         * ifcvt.c (noce_try_cmove_arith): Likewise.
3039         * regcprop.c (kill_autoinc_value): Likewise.
3040         * regmove.c (try_auto_increment): Likewise.
3041         * reload.c (find_reloads): Likewise.
3042         (find_reloads_address): Likewise.
3043         (find_reloads_address_1): Likewise.
3044         * sched-deps.c: Include "target.h".
3045         (sched_analyze_1): Use appropriate address mode instead of Pmode.
3046         (sched_analyze_2): Likewise.
3047         * sel-sched-dump.c: Include "target.h".
3048         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
3049         * stor-layout.c (layout_type): Likewise.
3050         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
3051         (multiplier_allowed_in_address_p): Likewise.
3052         (get_address_cost): Likewise.
3053         * varasm.c (make_decl_rtl): Likewise.
3054
3055         * expr.c (expand_assignment): Always convert offsets to appropriate
3056         address mode.
3057         (store_expr): Likewise.
3058         (store_constructor): Likewise.
3059         (expand_expr_real_1): Likewise.
3060
3061         * reload.h (form_sum): Add MODE argument.
3062         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
3063         Update recursive calls.
3064         (subst_indexed_address): Update calls to form_sum.
3065
3066         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
3067         * tree-ssa-address.c: Include "target.h".
3068         (templates): Replace by ...
3069         (mem_addr_template_list): ... this new vector.
3070         (TEMPL_IDX): Handle address space numbers.
3071         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
3072         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
3073         instead of global cache.  Update call to gen_addr_rtx.
3074         (valid_mem_ref_p): Update call to addr_for_mem_ref.
3075         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
3076
3077         * rtl.h (convert_memory_address_addr_space): Add prototype.
3078         (convert_memory_address): Define as macro.
3079         * explow.c (convert_memory_address): Rename to ...
3080         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
3081         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
3082         Update recursive calls.
3083         (memory_address_addr_space): Call convert_memory_address_addr_space.
3084         * expmed.c (make_tree): Likewise.
3085         * expr.c (expand_assignment): Likewise.
3086         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
3087         (expand_expr_addr_expr): Likewise.  Also, update call.
3088
3089         * alias.c (find_base_value): Guard pointer size optimizations.
3090         (find_base_term): Likewise.
3091         * rtlanal.c (nonzero_bits1): Likewise.
3092         (num_sign_bit_copies1): Likewise.
3093         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
3094
3095         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
3096         (emit-rtl.o): Likewise.
3097         (auto-inc-dec.o): Likewise.
3098         (sched-deps.o): Likewise.
3099
3100 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3101             Michael Meissner  <meissner@linux.vnet.ibm.com>
3102             Ulrich Weigand  <uweigand@de.ibm.com>
3103
3104         * doc/extend.texi (Named Address Spaces): New section.
3105         * coretypes.h (addr_space_t): New type.
3106         (ADDR_SPACE_GENERIC): New define.
3107         (ADDR_SPACE_GENERIC_P): New macro.
3108
3109         * doc/tm.texi (Named Address Spaces): New section.
3110         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
3111         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
3112         (TARGET_ADDR_SPACE_SUBSET_P): Document.
3113         (TARGET_ADDR_SPACE_CONVERT): Document.
3114         * target.h (struct gcc_target): Add addr_space substructure.
3115         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
3116         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
3117         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
3118         (TARGET_ADDR_SPACE_CONVERT): Likewise.
3119         (TARGET_ADDR_SPACE_HOOKS): Likewise.
3120         (TARGET_INITIALIZER): Initialize addr_space hooks.
3121         * targhooks.c (default_addr_space_legitimate_address_p): New function.
3122         (default_addr_space_legitimize_address): Likewise.
3123         (default_addr_space_subset_p): Likewise.
3124         (default_addr_space_convert): Likewise.
3125         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
3126         (default_addr_space_legitimize_address): Likewise.
3127         (default_addr_space_subset_p): Likewise.
3128         (default_addr_space_convert): Likewise.
3129
3130         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
3131         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
3132         (MEM_ADDR_SPACE): New macro.
3133         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
3134         address space memory attribute.
3135         (mem_attrs_htab_hash): Handle address space memory attribute.
3136         (mem_attrs_htab_eq): Likewise.
3137         (set_mem_attributes_minus_bitpos): Likewise.
3138         (set_mem_alias_set): Likewise.
3139         (set_mem_align): Likewise.
3140         (set_mem_expr): Likewise.
3141         (set_mem_offset): Likewise.
3142         (set_mem_size): Likewise.
3143         (adjust_address_1): Likewise.
3144         (offset_address): Likewise.
3145         (widen_memoy_address): Likewise.
3146         (get_spill_slot_decl): Likewise.
3147         (set_mem_attrs_for_spill): Likewise.
3148         (set_mem_addr_space): New function.
3149         * emit-rtl.h (set_mem_addr_space): Add prototype.
3150         * print-rtl.c (print_rtx): Print address space memory attribute.
3151         * expr.c (expand_assignment): Set address space memory attribute
3152         of generated MEM RTXes as appropriate.
3153         (expand_expr_real_1): Likewise.
3154         * cfgexpand.c (expand_debug_expr): Likewise.
3155         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
3156
3157         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
3158         size of "spare" bitfield.
3159         (TYPE_ADDR_SPACE): New macro.
3160         (ENCODE_QUAL_ADDR_SPACE): Likewise.
3161         (DECODE_QUAL_ADDR_SPACE): Likewise.
3162         (CLEAR_QUAL_ADDR_SPACE): Likewise.
3163         (KEEP_QUAL_ADDR_SPACE): Likewise.
3164         (TYPE_QUALS): Encode type address space.
3165         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
3166         * tree.c (set_type_quals): Set type address space.
3167         (build_array_type): Inherit array address space from element type.
3168         * print-tree.c (print_node_brief): Print type address space.
3169         (print_node): Likewise.
3170         * tree-pretty-print.c (dump_generic_node): Likewise.
3171
3172         * explow.c (memory_address): Rename to ...
3173         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
3174         Use address-space aware variants of memory address routines.
3175         * recog.c (memory_address_p): Rename to ...
3176         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3177         Use address-space aware variants of memory address routines.
3178         (offsettable_address_p): Rename to ...
3179         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
3180         Use address-space aware variants of memory address routines.
3181         * reload.c (strict_memory_address_p): Rename to ...
3182         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3183         Use address-space aware variants of memory address routines.
3184         (maybe_memory_address_p): Rename to ...
3185         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3186         Use address-space aware variants of memory address routines.
3187         * expr.h (memory_address_addr_space): Add prototype.
3188         (memory_address): Define as macro.
3189         * recog.h (memory_address_addr_space_p): Add prototype.
3190         (memory_address_p): Define as macro.
3191         (offsettable_address_addr_space_p): Add prototype.
3192         (offsettable_address_p): Define as macro.
3193         (strict_memory_address_addr_space_p): Add prototype.
3194         (strict_memory_address_p): Define as macro.
3195
3196         * combine.c (find_split_point): Use address-space aware variants
3197         of memory address routines.
3198         * emit-rtl.c (operand_subword): Likewise.
3199         (change_address_1): Likewise.
3200         (adjust_address_1): Likewise.
3201         (offset_address): Likewise.
3202         * expr.c (emit_move_insn): Likewise.
3203         (expand_assignment): Likewise.
3204         (expand_expr_real_1): Likewise.
3205         * recog.c (verify_changes): Likewise.
3206         (general_operand): Likewise.
3207         (offsettable_memref_p): Likewise.
3208         (offsettable_nonstrict_memref_p): Likewise.
3209         (constrain_operands): Likewise.
3210         * reload.c (get_secondary_mem): Likewise.
3211         (find_reloads_toplev): Likewise.
3212         (find_reloads_address): Likewise.
3213         (find_reloads_subreg_address): Likewise.
3214         * reload1.c (reload): Likewise.
3215         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
3216         * rtl.h (address_cost): Add ADDRSPACE argument.
3217         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
3218         aware variant of memory address routines.
3219         * loop-invariant.c (create_new_invariant): Update address_cost call.
3220         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
3221         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
3222         Use address-space aware variant of memory address routines.
3223         (propagate_rtx_1): Update call to should_replace_address.
3224         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
3225         argument.
3226         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
3227         ADDRSPACE argument.  Use per-address-space instead of global cache.
3228         Use address-space aware variant of memory address routines.
3229         (get_address_cost): Likewise.
3230         (get_computation_cost_at): Update calls.
3231         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
3232         Use address-space aware variant of memory address routines.
3233         (create_mem_ref_raw): Update call to valid_mem_ref_p.
3234         (most_expensive_mult_to_index): Update call to
3235         multiplier_allowed_in_address_p.
3236
3237         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
3238         attribute to indicate named address spaces.
3239
3240         * varasm.c (get_variable_section): DECLs in named address spaces
3241         cannot be "common".
3242
3243         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
3244         for addresses in a non-generic address space.
3245
3246         * expr.c (emit_block_move_hints): Do not use libcalls for
3247         memory in non-generic address spaces.
3248         (clear_storage_hints): Likewise.
3249         (expand_assignment): Likewise.
3250
3251         * fold-const.c (operand_equal_p): Expressions refering to different
3252         address spaces are not equivalent.
3253
3254         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
3255         spaces are not equivalent.
3256         (rtx_equal_p): Likewise.
3257         * cse.c (exp_equiv_p): Likewise.
3258         * jump.c (rtx_renumbered_equal_p): Likewise.
3259         * reload.c (operands_match_p): Likewise.
3260
3261         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
3262         address spaces may alias.
3263         (true_dependence): Likewise.
3264         (canon_true_dependence): Likewise.
3265         (write_dependence_p): Likewise.
3266
3267         * dse.c (canon_address): Handle named address spaces.
3268         * ifcvt.c (noce_try_cmove_arith): Likewise.
3269
3270         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
3271         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
3272         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
3273         to handle conversions between different address spaces.
3274         * fold-const.c (fold_convert_loc): Likewise.
3275         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
3276         * tree-pretty-print.c (dump_generic_node): Likewise.
3277         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
3278         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
3279         * tree-inline.c (estimate_operator_cost): Likewise.
3280         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
3281         to different address spaces are not useless.
3282
3283 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
3284
3285         PR bootstrap/41345
3286         * cfgcleanup.c (trivially_empty_bb_p): New function.
3287         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
3288
3289         PR debug/41828
3290         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
3291         add_name_and_src_coords_attributes, gen_namespace_die,
3292         dwarf2out_set_name): Handle dwarf2_name returning NULL.
3293
3294 2009-10-26  Nick Clifton  <nickc@redhat.com>
3295
3296         * config.gcc: Add support for RX target.
3297         * config/rx: New directory.
3298         * config/rx/constraints.md: New file.
3299         * config/rx/predicates.md: New file.
3300         * config/rx/rx.c: New file.
3301         * config/rx/rx.h: New file.
3302         * config/rx/rx.md: New file.
3303         * config/rx/rx.opt: New file.
3304         * config/rx/rx-protos.h: New file.
3305         * config/rx/t-rx: New file.
3306         * doc/extend.texi: Document RX function attributes.
3307         * doc/invoke.texi: Document RX specific command line options.
3308         * doc/contrib.texi: Document RX contribution.
3309         * doc/md.texi: Document RX constraints.
3310         * doc/install.texi: Document RX support.
3311
3312 2009-10-26  Michael Matz  <matz@suse.de>
3313
3314         PR tree-optimization/41783
3315         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
3316         case for simple diamonds.
3317         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
3318         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
3319         argument, use alias oracle to skip some vdefs.
3320         (phi_translate_1): Change call to above, don't allocate new
3321         value ids if they can stay the same.
3322         (compute_avail): Allow vuse walking when looking up references.
3323
3324 2009-10-26  Richard Guenther  <rguenther@suse.de>
3325
3326         PR tree-optimization/41826
3327         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
3328         access to re-allocated vector fields.
3329
3330 2009-10-26  Richard Guenther  <rguenther@suse.de>
3331
3332         * graphite-sese-to-poly.c (check_poly_representation): Fix
3333         compile without checking.
3334
3335 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
3336
3337         PR fortran/41714
3338         * gimple.h (tree_annotate_all_with_location): Remove prototype.
3339         * gimplify.c (tree_should_carry_location_p,
3340         tree_annotate_one_with_location,tree_annotate_all_with_location):
3341         Remove obsolete functions.
3342
3343 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
3344
3345         PR target/41813
3346         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
3347
3348 2009-10-25  Richard Guenther  <rguenther@suse.de>
3349
3350         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
3351         Stream DECL_RESTRICTED_P.
3352         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
3353
3354 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
3355
3356         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
3357         a note when expanding to nothing.
3358
3359 2009-10-25  Richard Guenther  <rguenther@suse.de>
3360
3361         PR middle-end/41814
3362         * tree.c (find_decls_types_r): Deal with Java overloading
3363         BINFO_VIRTUALS for its own purpose.
3364
3365 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
3366
3367         * config/mips/predicates.md (hilo_operand): New predicate.
3368         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
3369         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
3370         splitter part from here ...:
3371         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
3372         op0 and op4 to match the DINS case.
3373         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
3374
3375 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
3376
3377         PR middle-end/19154
3378         * avr.md (QIDI): Add new mode iterator.
3379         (sbrx_branch<mode>): Create new zero extract bit, test and jump
3380         patterns for all QI thru DI modes combinations.
3381         (sbrx_and_branch<mode>): Create new and based bit test and jump
3382         patterns for QI thru SI modes.
3383         avr.c (avr_out_sbxx_branch): Use only bit number.
3384
3385 2009-10-24  Jan Hubicka  <jh@suse.cz>
3386
3387         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
3388         to memory.
3389         (analyze_function): When analyzing noreturn nothrow call, do not
3390         compute written stats; free bitmaps of vars early if possible.
3391         (generate_summary): Only update bitmaps if computed.
3392         (propagate): Only dump bitmaps if computed.
3393         (ipa_reference_read_summary): Fix pasto.
3394
3395 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
3396
3397         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
3398         (aliasing_component_refs_p): ...this.  Return true if there is no
3399         common base and the base access types have the same alias set.
3400         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
3401         (indirect_refs_may_alias_p): Likewise.
3402
3403 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
3404
3405         PR c/40033
3406         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
3407         a C_MAYBE_CONST_EXPR.
3408
3409 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
3410
3411         PR target/41787
3412         * config/rs6000/rs6000.c (struct machine_function): Add
3413         vsx_or_altivec_used_p to record if vector types are used.
3414         (rs6000_expand_to_rtl_hook): Rename from
3415         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
3416         any vector operations, so if there are, we can set VRSAVE to
3417         non-zero when only floating point vector registers are used.
3418         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
3419         (rs6000_check_vector_mode): Inner function to check if vector
3420         types are used in the code.
3421         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
3422         vector instructions are used.
3423
3424         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
3425         Indicate that VSX registers which overlap floating point
3426         registers, can't be used across a call, since the ABI only states
3427         the scalar part of the register will be saved and restored.
3428
3429 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
3430
3431         PR c/41673
3432         * alias.c (get_alias_set): Call langhook before returning 0 for
3433         types with structural equality.
3434         * c-common.c (c_common_get_alias_set): Use alias set of element
3435         type for arrays with structural comparison.
3436
3437 2009-10-23  Richard Guenther  <rguenther@suse.de>
3438
3439         PR middle-end/41805
3440         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
3441         gimple_call_nothrow_p.
3442
3443 2009-10-23  Richard Guenther  <rguenther@suse.de>
3444
3445         PR tree-optimization/41778
3446         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
3447         redundancy along a path in the CFG we want to optimize for speed
3448         is going to be removed.
3449         (execute_pre): Do partial-PRE only if the function is to be
3450         optimized for speed.
3451         (gate_pre): Do not turn off all of PRE when not optimizing a
3452         function for speed.
3453
3454 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3455
3456         * builtins.c (fold_builtin_cabs): Use validate_arg().
3457         (fold_builtin_cexp): Fix if-logic.
3458         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
3459
3460 2009-10-22  Jeff Law  <law@redhat.com>
3461
3462         * ira-lives.c (process_single_reg_class_operands): Update the
3463         hard reg costs for all the hard registers desired by the
3464         single reg class operand.
3465
3466 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
3467
3468         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
3469         for rtxes that aren't handled specially.
3470
3471 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
3472
3473         * rtl.h (shallow_copy_rtvec): Declare.
3474         * rtl.c (shallow_copy_rtvec): New function.
3475         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
3476         rtx field if the subrtx has changed.
3477
3478 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
3479
3480         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
3481         (m32c_function_value): Make static, add new 'outgoing' argument.
3482         (m32c_libcall_value): Make static, add new 'fun' argument.
3483         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3484         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3485         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
3486         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
3487         (m32c_function_value, m32c_libcall_value): Delete declaration.
3488
3489 2009-10-22  Diego Novillo  <dnovillo@google.com>
3490
3491         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
3492
3493 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
3494
3495         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
3496         space.
3497
3498 2009-10-22  Richard Guenther  <rguenther@suse.de>
3499
3500         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
3501         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
3502         (lto_symtab_merge): Do not merge cgraph nodes here.
3503         (lto_symtab_resolve_can_prevail_p): Simplify.
3504         (lto_symtab_resolve_symbols): Store cgraph node.
3505         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
3506         functions from the symtab.
3507         (lto_symtab_merge_cgraph_nodes_1): New function.
3508         (lto_symtab_merge_cgraph_nodes): Likewise.
3509
3510 2009-10-22  Richard Guenther  <rguenther@suse.de>
3511
3512         PR lto/41791
3513         * lto-streamer-out.c (lto_output_location): Stream the
3514         system header flag.
3515         * lto-streamer-in.c (lto_input_location): Likewise.
3516
3517 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
3518
3519         * cfgloopmanip.c (duplicate_subloops): Export.
3520         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
3521         (transform_to_exit_first_loop): Duplicate bbs starting from
3522         header up to loop->latch instead of exit->src.
3523         Initialize control variable to the correct number of iterations.
3524         (gather_scalar_reductions): Do not register double reductions.
3525         (parallelize_loops): Dump which loop is tested.
3526         Indicate whether the parallelized loop is inner or not.
3527         Remove the innermost-loop requirement.
3528         * cfgloop.h (duplicate_subloops): Export.
3529         * tree-cfg.c (add_phi_args_after_redirect): New function.
3530         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
3531         Call duplicate_subloops.
3532         Update number of iterations at the exit condition.
3533         Don't redirect nexits always to the loop exit.
3534         Redirect copied edges from latch to the loop exit.
3535
3536 2009-10-22  Jan Hubicka  <jh@suse.cz>
3537
3538         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
3539         flag_ltrans check.
3540         * ipa-inline.c (cgraph_mark_inline_edge,
3541         cgraph_decide_inlining_of_small_function,
3542         cgraph_decide_inlining, inline_read_summary): Disable indirect
3543         inlining for WPA for time being.
3544
3545         PR tree-optimize/40556
3546         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
3547
3548 2009-10-22  Richard Guenther  <rguenther@suse.de>
3549
3550         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
3551         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
3552
3553 2009-10-22  Jan Hubicka  <jh@suse.cz>
3554
3555         PR lto/41730
3556         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
3557         global vars.
3558         (check_call): Handle only indirect calls.
3559         (propagate_bits): Update comment.
3560         (write_node_summary_p): Turn bogus check to assert.
3561         (ipa_reference_write_summary): Stream calls_read_all properly.
3562         (ipa_reference_read_summary): Stream in calls_read_all properly.
3563         (read_write_all_from_decl): New function.
3564         (propagate): Handle OVERWRITABLE nodes and external calls here.
3565         * ipa-pre-const.c (check_call): In IPA mode handle indirect
3566         calls only.
3567         (analyze_function): Do not check visibility here.
3568         (add_new_function): We summary OVERWRITABLE too.
3569         (generate_summary): Stream OVERWRITABLE nodes too.
3570         (propagate): Handle external calls and OVERWRITABLE nodes here.
3571         (local_pure_const): Check visibility here.
3572
3573 2009-10-22  Jan Hubicka  <jh@suse.cz>
3574
3575         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
3576         (pass_ipa_cp): Register them.
3577         (ipcp_init_stage): Analyze all functions for whopr/lto.
3578         (ipcp_propagate_stage): Skip external calls.
3579         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
3580         * ipa-reference.c (write_node_summary_p): Fix thinko about
3581         availability.
3582         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
3583         when in ltrans, skip executing of ipa passes since everything
3584         should've been done.
3585         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
3586         (inline_generate_summary): Likewise.
3587         (inline_read_summary): New function.
3588         (inline_write_summary): New function.
3589         (pass_ipa_inline): Register new hooks.
3590         * ipa-prop.c: Inlcude lto-streamer.h
3591         (ipa_edge_args_vector): Update declaration.
3592         (ipa_count_arguments, ipa_compute_jump_functions,
3593         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
3594         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
3595         ipa_read_node_info): New static functions.
3596         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
3597         (duplicate_array): Use xmalloc.
3598         (duplicate_ggc_array): New.
3599         (ipa_edge_duplication_hook): Use it.
3600         (ipa_update_after_lto_read): New function.
3601         * ipa-prop.h (ipa_prop_write_jump_functions,
3602         ipa_prop_read_jump_functions): Declare.
3603         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
3604         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
3605         (ipa_edge_args_vector): Move into GGC.
3606         (ipa_check_create_edge_args): Update.
3607         (ipa_update_after_lto_read): New.
3608         * passes.c (ipa_write_summaries_1): When in wpa, do not write
3609         summaries.
3610         (ipa_read_summaries): When in ltrans, so not read summaries.
3611         * lto-streamer.c (lto_get_section_name): Add
3612         LTO_section_jump_functions.
3613         * lto-streamer.h (LTO_section_jump_functions): New section.
3614         (produce_asm): Declare.
3615         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
3616         * lto-streamer-out.c (produce_asm): Export.
3617         * lto-streamer-in.c: Include tree-pass.h
3618         (input_function): Free dominance info when done.
3619         (lto_read_body): Push ipa_inline in ltrans stage.
3620         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
3621         * Makefile.in (GTFILES): Add ipa-prop.h
3622
3623 2009-10-22  Matthias Klose  <doko@ubuntu.com>
3624
3625         * doc/install.texi: Document --enable-browser-plugin.
3626
3627 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
3628
3629         * doc/invoke.texi (fira-loop-pressure): Update default value.
3630         * opts.c (decode_options): Remove default value setting for
3631         flag_ira_loop_pressure.
3632         * config/ia64/ia64.c (ia64_override_options): Set
3633         flag_ira_loop_pressure up for -O3.
3634         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
3635
3636 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
3637
3638         PR tree-optimization/41497
3639         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
3640         chrec_dont_know if the evolution function returned by follow_ssa_edge
3641         is constant in the analyzed loop and is not compatible with the
3642         initial value before the loop.
3643         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
3644
3645 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
3646
3647         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
3648
3649 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
3650
3651         PR other/25507
3652         * doc/invoke.texi: Document -print-multi-os-directory.
3653
3654 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
3655
3656         PR c++/41313
3657         * gcc/config/darwin10.h: Use default_emit_unwind_label.
3658         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
3659         when darwin_emit_unwind_label is used.
3660
3661 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
3662
3663         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
3664         order of checks.
3665
3666 2009-10-20  Richard Henderson  <rth@redhat.com>
3667
3668         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
3669         before emit_post_landing_pad.
3670
3671 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
3672
3673         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
3674         Use when calling rtx_costs.
3675         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
3676         global optimize_size.  Pass speed to mips_binary_cost.
3677
3678 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
3679
3680         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
3681         of TREE_CONSTANT.
3682
3683 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
3684
3685         * rtl.h (simplify_replace_fn_rtx): Declare.
3686         (wrap_constant, unwrap_constant): Delete.
3687         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
3688         (expand_debug_expr): Don't call wrap_constant.
3689         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
3690         (auto_adjust_pair): Fold into...
3691         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
3692         Just return a new value.
3693         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
3694         otherwise use simplify_replace_rtx.
3695         * cselib.c (wrap_constant): Reinstate old definition.
3696         (cselib_expand_value_rtx_1): Don't wrap constants.
3697         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
3698         simplify_replace_rtx.
3699         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
3700         * reload1.c (reload): Skip all uses for an insn before adjusting it.
3701         Use simplify_replace_rtx.
3702         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
3703         adapted from...
3704         (simplify_replace_rtx): ...here.  Turn into a wrapper for
3705         simplify_replace_fn_rtx.
3706         (simplify_unary_operation): Don't unwrap CONSTs.
3707         * var-tracking.c (check_wrap_constant): Delete.
3708         (vt_expand_loc_callback): Don't call it.
3709         (vt_expand_loc): Likewise.
3710
3711 2009-10-20  Pascal Obry  <obry@adacore.com>
3712             Eric Botcazou  <ebotcazou@adacore.com>
3713
3714         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
3715
3716 2009-10-20  Michael Matz  <matz@suse.de>
3717
3718         * loop-invariant.c (create_new_invariant): Use different magic number.
3719
3720 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
3721
3722         PR target/39247
3723         * arm.c (arm_override_options): Forcibly disable hot/cold block
3724         partitioning.
3725
3726 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
3727
3728         PR debug/41739
3729         * haifa-sched.c (try_ready): Skip debug deps updating speculation
3730         status.
3731
3732 2009-10-20  Richard Guenther  <rguenther@suse.de>
3733
3734         * ggc-page.c: Include cfgloop.h.
3735         (struct max_alignment): Drop long double, add void *.
3736         (extra_order_size_table): Add low non-power-of-two multiples
3737         of MAX_ALIGNMENT.  Drop small type-based entries, add
3738         tree_type, cgraph_node and loop.
3739         * alloc-pool.c (struct allocation_object_def): Drop long double
3740         aligning element.
3741
3742 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
3743
3744         PR debug/41340
3745         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
3746         referenced just in DEBUG_INSNs.
3747
3748 2009-10-20  Richard Guenther  <rguenther@suse.de>
3749
3750         PR lto/41761
3751         * gimple.c (gimple_register_type): Make sure we register
3752         the types main variant first.
3753
3754 2009-10-20  Richard Guenther  <rguenther@suse.de>
3755
3756         * gimple.c (gimple_types_compatible_p): Simplify.  Move
3757         cheap checks before hashtable queries.  Add checks for
3758         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
3759
3760 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
3761
3762         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
3763         without size or with size that can't be represented as a host integer.
3764
3765 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
3766
3767         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
3768         the removal of a debug stmt as a significant change.
3769
3770 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
3771
3772         * config/s390/s390.md: Added agen condition to operand
3773         forwarding bypasses.  Added bypass for early address generation
3774         use of int results.  Updated comments.
3775
3776 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
3777
3778         * config/i386/i386.c: Remove signal.h #include.
3779
3780 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
3781
3782         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
3783         * doc/rtl.texi: Document ss_abs.
3784
3785 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3786
3787         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
3788         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
3789         instead of C_LEX_RAW_STRINGS.
3790         (lex_string): Handle CPP_UTF8STRING.
3791         * c-parser.c (c_parser_postfix_expression): Likewise.
3792         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
3793         (C_LEX_STRING_NO_JOIN): ... this.
3794
3795 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
3796
3797         * config/cris/cris.c (cris_function_value, cris_libcall_value,
3798         cris_function_value_regno_p): New functions.
3799         (cris_promote_function_mode): Update comment.
3800         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3801         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3802         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
3803         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
3804
3805 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3806
3807         * unwind-dw2.c (execute_stack_op): Fix operand order for
3808         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
3809
3810 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
3811
3812         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
3813         (lower_stmt) <GIMPLE_BIND>: Add comment.
3814         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
3815         and return.
3816         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
3817         Otherwise lower it and set cannot_fallthru to true.
3818         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
3819         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
3820         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
3821         to true for a noreturn call.  Do not remove statements.
3822         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
3823         Set cannot_fallthru to false on function exit.
3824         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
3825         <GIMPLE_ASSIGN>: Remove.
3826
3827 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3828
3829         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
3830
3831 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3832
3833         * config/s390/s390.c (s390_z10_optimize_cmp): Use
3834         next/prev_active_insn to skip DEBUG_INSNs as well.
3835
3836 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
3837
3838         * config/arm/arm.c (output_move_neon): Use DImode in call to
3839         adjust_address.
3840
3841 2009-10-19  Matthias Klose  <doko@ubuntu.com>
3842
3843         PR target/40134
3844         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
3845
3846 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3847
3848         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
3849
3850 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
3851
3852         PR middle-end/41738
3853         * optabs.c (expand_binop): Make mode of shift count expression mode
3854         of shift count not target.
3855         Remove indent nit.
3856
3857 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3858
3859         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
3860         case.  Force using values to replace references within the statement.
3861         (convert_local_reference_stmt): Likewise.
3862
3863 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3864
3865         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
3866         remove a subsequent GOTO or RETURN statement.
3867
3868 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
3869
3870         * config/avr.md (*movqi): Add zero as equally preferable constraint
3871         as general register.
3872         (*movhi): Ditto.
3873
3874 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3875
3876         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
3877
3878 2009-10-17  Richard Guenther  <rguenther@suse.de>
3879
3880         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
3881
3882 2009-10-17  Richard Guenther  <rguenther@suse.de>
3883
3884         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
3885         operands in COMPONENT_REFs.
3886
3887 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
3888
3889         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
3890         if not defined. Change type of second argument to const_rtx.
3891         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
3892         macro not defined.
3893         * targhooks.h (default_libcall_value): Update prototype.
3894         * target.h (struct gcc_target): Change type of second argument of
3895         libcall_value to const_rtx.
3896         * config/arm/arm.c (arm_libcall_value): Change type of second argument
3897         to const_rtx.
3898         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
3899         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
3900
3901 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
3902
3903         PR debug/40521
3904         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
3905         * cgraphunit.c (cgraph_optimize): Call it.
3906         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
3907         (dwarf2out_assembly_start): ... here.  New hook.
3908         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
3909         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
3910         hook.
3911         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
3912         * sdbout.c (sdb_debug_hooks): Likewise.
3913         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
3914         (vmsdbgout_assembly_start): New hook.
3915
3916 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3917
3918         * rtl.h (RTL_LOCATION): Fix typo.
3919
3920 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3921
3922         * print-rtl.c (print_rtx): Print locators in asm_operands
3923         and asm_input.
3924
3925 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3926
3927         PR debug/41535
3928         * sched-deps.c (depl_on_debug_p): New.
3929         (attach_dep_link): Reject debug deps before nondebug deps.
3930         (add_to_deps_list): Insert debug deps after nondebug deps.
3931         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
3932         deps.
3933         (sd_add_dep): Do not reject debug deps.
3934         (add_insn_mem_dependence): Don't count debug deps.
3935         (remove_from_deps): Likewise.
3936         (sched_analyze_2): Set up mem deps on debug insns.
3937         (sched_analyze_insn): Record reg uses for deps on debug insns.
3938         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
3939         try_ready nondebug insn after debug insn.
3940         * ddg.c (create_ddg_dep_from_intra_loop_link,
3941         create_ddg_dep_no_link): Don't reject debug deps.
3942
3943 2009-10-16  Richard Guenther  <rguenther@suse.de>
3944
3945         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
3946         (maybe_merge_incomplete_and_complete_type): Likewise.
3947         (lto_symtab_merge): Do not call them.  Do not warn for
3948         complete vs. incomplete compatible types.
3949         (lto_symtab_merge_decls_2): Simplify.
3950         * gimple.c (gimple_force_type_merge): Remove.
3951         (gimple_types_compatible_p): Make it static.
3952         * gimple.h (gimple_force_type_merge): Remove.
3953         (gimple_types_compatible_p): Likewise.
3954
3955 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
3956
3957         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
3958         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
3959
3960 2009-10-16  Richard Guenther  <rguenther@suse.de>
3961
3962         PR tree-optimization/41728
3963         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
3964         if fold_stmt did anything.
3965
3966 2009-10-16  Richard Guenther  <rguenther@suse.de>
3967
3968         PR lto/41715
3969         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
3970         (maybe_fixup_handled_component): New function.
3971         (input_gimple_stmt): Fixup mismatched decl replacements.
3972
3973 2009-10-16  Richard Guenther  <rguenther@suse.de>
3974
3975         PR lto/41713
3976         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
3977         the same as VAR_DECL.
3978
3979 2009-10-16  Richard Guenther  <rguenther@suse.de>
3980
3981         * gimple.c (iterative_hash_gimple_type): For integer types
3982         also hash their minimum and maximum values and the string flag.
3983         For array types hash their domain and the string flag.
3984
3985 2009-10-16  Richard Guenther  <rguenther@suse.de>
3986
3987         * gimple.c (gimple_types_compatible_p): Restrict completing
3988         types to record or unions.  Simplify completion.
3989         Do not merge records or unions with different
3990         TYPE_STRUCTURAL_EQUALITY_P tag.
3991         (iterative_hash_gimple_type): Restrict non-recursing into
3992         pointer targets for records and unions.
3993
3994 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
3995
3996         PR debug/41717
3997         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
3998         * dwarf2out.c (mem_loc_descriptor): Don't handle
3999         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
4000         punt if it is not lowpart subreg or if inner mode isn't
4001         MODE_INT.
4002
4003 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4004
4005         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
4006         investigating previous or next insns.
4007
4008 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
4009
4010         * tree-sra.c (build_ref_for_offset_1): Update comment.
4011
4012 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
4013
4014         * config/s390/s390.md (atype): Added missing values.
4015
4016 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4017
4018         PR target/41702
4019         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
4020         (casesi64p): Update pattern to reflect above.
4021
4022 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
4023
4024         PR rtl-optimization/41697
4025         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
4026
4027 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
4028
4029         PR target/23983
4030         * config/rs6000/predicates.md: Update copyright year.
4031         * config/rs6000/altivec.md: Ditto.
4032
4033         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
4034         (MD_INCLUDES): Add a2.md.
4035
4036         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
4037         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
4038         (builtin_classify): New static vector to classify various builtins
4039         to get the tree attributes correct.
4040         (def_builtin): Set the attributes of builtins based on what the
4041         builtin does (i.e. memory operation, floating point, saturation
4042         need special attributes, others are pure functions).
4043
4044         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
4045         the builtins.
4046         (enum rs6000_builtins): Include rs6000-builtin.def to define the
4047         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
4048         RS6000_BUILTIN_COUNT.
4049         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
4050         MAX_RS6000_BUILTINS.
4051
4052         * config/rs6000/rs6000-builtin.def: New file that combines the
4053         builtin enumeration name and attributes.
4054
4055 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
4056
4057         * config/i386/linux.h (ASM_SPEC): Add --32.
4058
4059 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4060
4061         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
4062         and DW_TAG_template_alias.
4063         (dwarf_attr_name): Handle DW_AT_main_subprogram,
4064         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
4065         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
4066         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
4067         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
4068         and DW_AT_GNU_odr_signature.
4069         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
4070         DW_FORM_flag_present and DW_FORM_ref_sig8.
4071         (output_signature): Only print name on the first byte.
4072         (output_die): Likewise for dw_val_class_data8.
4073
4074 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
4075
4076         * doc/invoke.texi: Clarify that most optimizations are not enabled
4077         without -O.
4078
4079 2009-10-15  Richard Guenther  <rguenther@suse.de>
4080
4081         PR lto/41668
4082         * gimple.c (compare_type_names_p): Handle anonymous names
4083         differently based on new mode argument.
4084         (gimple_types_compatible_p): For structs also compare the tags.
4085         (iterative_hash_type_name): Rename to ...
4086         (iterative_hash_name): ... this.  Hash all names.
4087         (iterative_hash_gimple_type): Fix hashing the struct tag of
4088         pointer targets.  Hash field decl names.
4089
4090 2009-10-15  Richard Guenther  <rguenther@suse.de>
4091
4092         PR lto/41669
4093         * gimple.c (gimple_get_alias_set): Avoid recursing on
4094         invalid type topology.
4095
4096 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4097
4098         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
4099
4100 2009-10-15  Richard Guenther  <rguenther@suse.de>
4101
4102         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
4103
4104 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4105
4106         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
4107         add --with-tune{,-32,-64} configured default for -mtune if explicit
4108         -mcpu is used.
4109
4110 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
4111
4112         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
4113
4114 2009-10-14  DJ Delorie  <dj@redhat.com>
4115
4116         * config/h8300/h8300.c (F): New.
4117         (Fpa): New.
4118         (h8300_emit_stack_adjustment): Call them.
4119         (push): Likewise.
4120         (h8300_push_pop): Likewise.
4121         (h8300_expand_prologue): Likewise.
4122         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
4123         (MUST_USE_SJLJ_EXCEPTIONS): Define.
4124         (INCOMING_RETURN_ADDR_RTX): Define.
4125         (INCOMING_FRAME_SP_OFFSET): Define.
4126         (DWARF_CIE_DATA_ALIGNMENT): Define.
4127
4128 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4129
4130         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
4131         fields in builtin structs.
4132         (finalize_record_size): Likewise.
4133
4134 2009-10-14  Richard Guenther  <rguenther@suse.de>
4135
4136         * gimple.c (gtc_ob): New global.
4137         (struct type_pair_d): Replace pointers with type UIDs.
4138         (type_pair_hash): Adjust.
4139         (type_pair_eq): Likewise.
4140         (lookup_type_pair): Likewise.  Allocate from an obstack.
4141         (gimple_force_type_merge): Adjust.
4142         (gimple_types_compatible_p): Likewise.
4143         (free_gimple_type_tables): Free the obstack.
4144
4145 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4146
4147         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
4148         stmts setting DEBUG_EXPR_DECLs.
4149
4150         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
4151         Don't crash if mode1 is VOIDmode.
4152
4153 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
4154
4155         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
4156         * params.h (IRA_LOOP_RESERVED_REGS): New.
4157         * tree-pass.h (pass_subregs_of_mode_init,
4158         pass_subregs_of_mode_finish): Remove.
4159         * passes.c (pass_subregs_of_mode_init,
4160         pass_subregs_of_mode_finish): Remove.
4161         (pass_reginfo_init): Move before loop optimizations.
4162         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
4163         * common.opt (fira-loop-pressure): New.
4164         * toplev.h (flag_ira_loop_pressure): New.
4165         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
4166         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
4167         Make external and void type functions.
4168         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
4169         pass_subregs_of_mode_finish): Remove.
4170         * ira-costs.c (init_costs): Call init_subregs_of_mode.
4171         * regmove.c: Include ira.h.
4172         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
4173         register pressure calculation in loops.
4174         * loop-invariant.c: Include REGS_H and ira.h.
4175         (struct loop_data): New members max_reg_pressure, regs_ref, and
4176         regs_live.
4177         (struct invariant): New member orig_regno.
4178         (curr_loop): New variable.
4179         (find_exits): Initialize regs_ref and regs_live.
4180         (create_new_invariant): Initialize orig_regno.
4181         (get_cover_class_and_nregs): New.
4182         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
4183         array.  Add code for flag_ira_loop_pressure.
4184         (gain_for_invariant): Make new_regs an array.  Add code for
4185         flag_ira_loop_pressure.
4186         (best_gain_for_invariant): Ditto.
4187         (set_move_mark): New parameter gain.  Use it for debugging output.
4188         (find_invariants_to_move): Make regs_needed and new_regs an array.
4189         Add code for flag_ira_loop_pressure.
4190         (move_invariant_reg): Set up orig_regno.
4191         (move_invariants): Set up reg classes for pseudos for
4192         flag_ira_loop_pressure.
4193         (free_loop_data): Clear regs_ref and regs_live.
4194         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
4195         get_regno_cover_class, change_pressure, mark_regno_live,
4196         mark_regno_death, mark_reg_store, mark_reg_clobber,
4197         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
4198         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
4199         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
4200         register pressure calculation in loops if new regs were added.
4201         Call finish_subregs_of_mode.
4202         * opts.c (decode_options): Set up flag_ira_loop_pressure.
4203         * Makefile.in (loop-invariant.o): Add ira.h.
4204         (regmove.o): Ditto.
4205         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
4206         Describe.
4207         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
4208
4209 2009-10-14  Richard Guenther  <rguenther@suse.de>
4210
4211         * lto-symtab.c (lto_symtab_compatible): Fold in ...
4212         (lto_symtab_merge): ... here.  Rewrite both to take the
4213         prevailing and a to-be-merged entry and to queue diagnostics properly.
4214         (lto_symtab_resolve_replaceable_p): New predicate for
4215         symbol resolution.
4216         (lto_symtab_resolve_can_prevail_p): Likewise.
4217         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
4218         handles merging commons by choosing the largest decl.  Fold
4219         in code that gives ODR errors.
4220         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
4221         diagnostics here.
4222         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
4223         case of no prevailing decl here.  Diagnose mismatches
4224         in object types here.  Drop all but the prevailing decls.
4225         (lto_symtab_prevailing_decl): Return the single prevailing decl.
4226         * lto-streamer-in.c (lto_input_tree_ref): Deal with
4227         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
4228
4229 2009-10-14  Richard Guenther  <rguenther@suse.de>
4230
4231         PR lto/41521
4232         * lto-streamer-in.c (input_bb): Replace debug stmts with
4233         nops instead of dropping them.
4234
4235 2009-10-14  Nick Clifton  <nickc@redhat.com>
4236
4237         * gcc/doc/extended.texi: Replace the dash character with @minus{}
4238         in situations where it is being used as a minus symbol.
4239         * gcc/doc/tm.texi: Likewise.
4240         * gcc/doc/md.texi: Likewise.
4241
4242 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4243
4244         PR preprocessor/41543
4245         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
4246         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
4247         * tree.c: Include intl.h.
4248         (expand_location): Handle BUILTINS_LOCATION.
4249         * Makefile.in (tree.o): Depend on intl.h.
4250
4251         PR debug/41695
4252         * dwarf2out.c (dwarf2out_var_location): Always clear
4253         last_postcall_label when changing last_label.
4254
4255 2009-10-14  Pascal Obry  <obry@adacore.com>
4256
4257         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
4258         (process_command): Handle -E as done with -c and -S.  Do not add
4259         the target executable suffix to the output file when -E is used.
4260         (main): Adjust error message accordingly.
4261
4262 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
4263
4264         PR debug/41343
4265         PR debug/41447
4266         PR debug/41264
4267         PR debug/41338
4268         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
4269         decl with rtl.
4270         (tree_code_size): Likewise.
4271
4272 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4273
4274         * builtins.c (fold_builtin_1): Support complex "arc" functions.
4275         * real.h (HAVE_mpc_arc): Define.
4276
4277 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
4278
4279         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
4280         (struct builtin_description): Add fndecl field.
4281         (bdesc): Remove const qualifier.  Update initializer.
4282         (sh_media_init_builtins): Remove const qualifier for d.  Record
4283         the result of add_builtin_function to the fndecl field.
4284         (sh_builtin_decl): New.
4285         (sh_media_builtin_decl): New.
4286
4287 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
4288
4289         PR target/38948
4290         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
4291         requests between special registers.
4292
4293 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
4294
4295         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
4296
4297 2009-10-13  Richard Henderson  <rth@redhat.com>
4298
4299         PR tree-optimization/41377
4300         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
4301         (cleanup_empty_eh_merge_phis): New change_region parameter;
4302         pass it on to redirect_eh_edge_1.  Update callers.
4303         (cleanup_empty_eh_unsplit): Don't require an existing EH label
4304         at the destination block.
4305
4306 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
4307
4308         * passes.c (register_pass): Replaced gcc_unreachable by
4309         fatal_error on failure. Mentions plugins in comments & messages.
4310
4311 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
4312
4313         PR target/41693
4314         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
4315         * sched-vis.c (print_value): Use it.
4316         * cselib.c (cselib_hash_rtx): Likewise.
4317         * print-rtl.c (print_rtx): Likewise.
4318         * cfgexpand.c (expand_debug_rtx): Likewise.
4319         * var-tracking.c (vt_expand_loc_callback): Likewise.
4320
4321 2009-10-13  Richard Guenther  <rguenther@suse.de>
4322
4323         PR lto/41565
4324         * opts.c (handle_option): Split out code to handle setting
4325         the options flag var ...
4326         (set_option): ... here.
4327         * opts.h (set_option): Declare.
4328         * lto-opts.c (register_user_option_p): Include -fexceptions
4329         and all position independent code variants.
4330         (handle_common_option): Remove.
4331         (lto_reissue_options): Use set_option.
4332
4333 2009-10-13  Martin Jambor  <mjambor@suse.cz>
4334
4335         PR tree-optimization/41661
4336         * ipa-prop.c (compute_complex_pass_through): Allow only operations
4337         that are tcc_comparisons or do not change the type in any
4338         un-usleless way.
4339         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
4340         folding tcc_comparison operations.
4341
4342 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4343
4344         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
4345         properly.
4346
4347 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
4348
4349         PR debug/41343
4350         PR debug/41447
4351         PR debug/41264
4352         PR debug/41338
4353         * tree.def (DEBUG_EXPR_DECL): New.
4354         * rtl.def (DEBUG_EXPR): New.
4355         * gengtype.c (adjust_field_rtx_def): Handle it.
4356         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
4357         (insert_debug_temp_for_var_def): ... this.  Drop support for
4358         moving.  Take iterator for def stmt; insert debug stmt before it.
4359         Scan early for use count and kind in debug stmts.
4360         (propagate_defs_into_debug_stmts): Rename to...
4361         (insert_debug_temps_for_defs): ... this.  Likewise.
4362         * tree.h (DEBUG_TEMP_UID): New.
4363         * tree.c (next_debug_decl_uid): New.
4364         (make_node_stat): Count debug decls separately.
4365         (copy_node_stat): Likewise.
4366         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
4367         * var-tracking.c (dv_is_decl_p): Recognize it.
4368         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
4369         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
4370         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
4371         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
4372         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
4373         (cselib_hash_rtx): Likewise.
4374         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
4375         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
4376         debug bind stmts.
4377         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
4378         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
4379         * rtl.c (copy_rtx): Likewise.
4380         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
4381         * print-rtl.c (print_rtx): Likewise.
4382         * sched-vis.c (print_value): Likewise.
4383         (print_insn): Handle DEBUG_EXPR_DECL.
4384         * tree-dump.c (dequeue_and_dump): Likewise.
4385         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
4386         * gimple-iterator (gsi_replace): Check for same lhs.
4387         (gsi_remove): Insert debug temps.
4388         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
4389         (move_computations_stmt): Drop explicit propagation into debug stmts.
4390         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
4391         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
4392         * tree-ssa-sink.c (statement_sink_location): Likewise.
4393         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
4394         * tree-ssanames.c (release_ssa_name): Adjust for rename.
4395         * tree-flow.h: Likewise.
4396         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
4397         debug temps without values.
4398         (eliminate_unnecessary_stmts): Don't discard just-inserted
4399         debug stmts.
4400
4401 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
4402
4403         PR target/26515
4404         * config/cris/cris.md (andu): Check that operand 1 is one of the
4405         general registers.  Fix typo in head comment.
4406
4407 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
4408
4409         * config/i386/i386.md (vswapmov): New.
4410         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
4411         (ix86_function_ms_hook_prologue): New.
4412         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
4413         * configure.ac: Test for swap suffix support in as.
4414         * configure: Rebuild.
4415
4416 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
4417
4418         PR target/41680
4419         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
4420         paradoxical subregs to prevent partial register stalls if the inner
4421         mode is integer mode.
4422
4423 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
4424
4425         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
4426
4427 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
4428
4429         PR c++/41570
4430         * gcc/dwarf2out.c (template_parameter_pack_die,
4431         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
4432
4433 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
4434
4435         PR debug/41616
4436         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
4437         on updates too.
4438         (maybe_register_def): Likewise.  Take stmt iterator.
4439         (rewrite_update_stmt): Take stmt iterator and pass it on.
4440         (rewrite_update_enter_block): Pass stmt iterator.
4441
4442 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4443
4444         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
4445         (spu_builtin_decl): New function.
4446
4447 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
4448
4449         * config/i386/i386.md (SWIM): New mode iterator.
4450         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
4451         using SWIM mode iterator.
4452         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
4453         patterns using SWI48 mode iterator.
4454         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
4455         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
4456         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
4457         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
4458         patterns using SWI248 mode iterator.
4459         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
4460         gen_x86_movdicc_0_m1_rex64 for renamed function
4461
4462 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
4463             Eric Botcazou  <ebotcazou@adacore.com>
4464
4465         PR target/33743
4466         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
4467         * config/sparc/sol2-unwind.h: New file.
4468
4469 2009-10-11  Olivier Hainque  <hainque@adacore.com>
4470             Eric Botcazou  <ebotcazou@adacore.com>
4471
4472         PR target/33743
4473         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
4474         * config/i386/sol2-unwind.h: New file.
4475
4476 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
4477
4478         PR target/41665
4479         * config/i386/i386.md (addsi_1_zext): Get the proper second
4480         operand for lea.
4481
4482 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
4483
4484         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
4485         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
4486         replacement value.
4487
4488 2009-10-11  Richard Guenther  <rguenther@suse.de>
4489
4490         * gimple.c (iterative_hash_type_name): Do not handle special
4491         anonymous names.
4492
4493 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
4494
4495         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
4496         (*setcc_si_1_and): Ditto.
4497         (*setcc_si_1_movzbl): Ditto.
4498         (*setcc_<mode>_2): Ditto.
4499         (*setcc_qi): Rename from *setcc_1.
4500         (*setcc_qi_slp): Rename from *setcc_2.
4501
4502         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
4503         (*zero_extendqisi2_movzbw_and splitter): Ditto.
4504
4505         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
4506         "if" condition, there is already assert with reload_completed present.
4507
4508 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
4509
4510         * plugin.c (try_init_one_plugin): Improve constness of variable err.
4511
4512 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
4513
4514         * doc/install.texi (Final install): Refer to
4515         http://gcc.gnu.org/bugs/ for bug reporting.
4516
4517 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
4518
4519         * configure.ac: Add test for dci instruction.
4520         * configure: Regenerate.
4521         * config.in: Likewise.
4522         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
4523         * doc/invoke.texi: Add cpu_type 476 and 476fp.
4524         (-mmulhw): Add 476 to description.
4525         (-mdlmzb): Likewise.
4526         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
4527         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
4528         (processor_target_table): Add 476 and 476fp entries.
4529         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
4530         (rs6000_issue_rate): Add CPU_PPC476.
4531         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
4532         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
4533         (processor_type): Add PROCESSOR_PPC476.
4534         (EXTRA_SPECS): Add asm_cpu_476 string.
4535         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
4536         (define_attr "cpu"): Add ppc476.
4537         Include 476.md.
4538         Update comments for 476.
4539         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
4540         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
4541         Update copyright year.
4542         * config/rs6000/476.md: New file.
4543         * config/rs6000/40x.md: Add description for "isel" attribute.
4544         Update copyright year.
4545         * config/rs6000/440.md: Likewise.
4546         * config/rs6000/603.md: Likewise.
4547         * config/rs6000/6xx.md: Likewise.
4548         * config/rs6000/7450.md: Likewise.
4549         * config/rs6000/7xx.md: Likewise.
4550         * config/rs6000/8540.md: Likewise.
4551         * config/rs6000/cell.md: Likewise.
4552         * config/rs6000/e300c2c3.md: Likewise.
4553         * config/rs6000/e500mc.md: Likewise.
4554         * config/rs6000/mpc.md: Likewise.
4555         * config/rs6000/power4.md: Likewise.
4556         * config/rs6000/power5.md: Likewise.
4557         * config/rs6000/power6.md: Likewise.
4558         * config/rs6000/power7.md: Likewise.
4559         * config/rs6000/rios1.md: Likewise.
4560         * config/rs6000/rios2.md: Likewise.
4561         * config/rs6000/rs64.md: Likewise.
4562
4563 2009-10-10  Richard Guenther  <rguenther@suse.de>
4564
4565         PR tree-optimization/41654
4566         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
4567         a cond expr before calling gimple_cond_set_condition_from_tree.
4568         (ifcombine_iforif): Likewise.
4569
4570 2009-10-09  Ian Lance Taylor  <iant@google.com>
4571
4572         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
4573         * configure: Rebuild.
4574
4575 2009-10-09  Neil Vachharajani <nvachhar@google.com>
4576
4577         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
4578         deprecated.
4579
4580 2009-10-09  Richard Guenther  <rguenther@suse.de>
4581
4582         PR lto/41638
4583         * target-def.h (TARGET_BUILTIN_DECL): Define.
4584         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
4585         * target.h (struct gcc_target): Add builtin_decl target hook.
4586         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
4587         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
4588         target builtins.
4589         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
4590         not gcc_unreachable.
4591         (lto_output_builtin_tree): Sorry if the target does not support
4592         streaming target builtins.
4593         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
4594         (rs6000_builtin_decl): New function.
4595         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
4596         (ix86_builtin_decl): New function.
4597
4598 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
4599
4600         PR preprocessor/41445
4601         * c-ppoutput.c (do_line_change): New function.
4602         (cb_line_change): Use it.
4603         (scan_translation_unit): Call do_line_change if
4604         avoid_paste or PREV_WHITE and token location is on a different line
4605         than print.src_line.
4606
4607         PR debug/40521
4608         * dwarf2out.c (dwarf2out_init): Test whether
4609         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
4610         it is defined.
4611
4612         PR rtl-optimization/41646
4613         * calls.c (expand_call): For BLKmode types returned in registers
4614         avoid likely spilled hard regs in copy_blkmode_from_reg generated
4615         insns.
4616
4617 2009-10-09  Richard Guenther  <rguenther@suse.de>
4618
4619         PR tree-optimization/41634
4620         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
4621         we remove the correct elements.
4622         (optimize_stmt): Make sure to update stmt operands before
4623         optimizing redundancies.
4624
4625 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4626
4627         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
4628
4629 2009-10-09  Richard Guenther  <rguenther@suse.de>
4630
4631         PR driver/41637
4632         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
4633         globals.
4634         (lto_wrapper_exit): New function.
4635         (fatal): Use it.
4636         (fatal_perror): Likewise.
4637         (fork_execute): Use global args_name, do not free it.
4638         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
4639         * lto-streamer.h: Remove duplicate prototypes.
4640
4641 2009-10-09  Richard Guenther  <rguenther@suse.de>
4642
4643         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
4644         before calling stmt_can_throw_external.
4645
4646 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
4647
4648         PR tree-optimization/40071
4649         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
4650         pointer if the original data reference doesn't conflict with the
4651         created vector data reference.  Fix long line.
4652
4653 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
4654
4655         * config/i386/i386.md (any_div): New code iterator.
4656         (u): Handle div and udiv.
4657         (sgnprefix): Ditto.
4658         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
4659         code iterator.
4660         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
4661         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
4662         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
4663         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
4664
4665 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
4666
4667         * gcc.c (main): Remove trailing "." from diagnostics.
4668
4669 2009-10-08  Cary Coutant  <ccoutant@google.com>
4670
4671         Add support for debugging with ICF (Identical Code Folding).
4672         * calls.c (debug.h): New #include.
4673         (emit_call_1): Call virtual_call_token debug hook.
4674         * common.opt (-fenable-icf-debug): New option.
4675         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
4676         locations in the source).
4677         (poc_label_num): New variable.
4678         (dcall_entry, vcall_entry): New typedefs.
4679         (dcall_table, vcall_table): New variables.
4680         (struct vcall_insn): New type.
4681         (vcall_insn_table): New variable.
4682         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
4683         (size_of_dcall_table): New function.
4684         (output_dcall_table): New function.
4685         (size_of_vcall_table): New function.
4686         (output_vcall_table): New function.
4687         (dwarf2out_direct_call): New function.
4688         (vcall_insn_table_hash): New function.
4689         (vcall_insn_table_eq): New function.
4690         (dwarf2out_virtual_call_token): New function.
4691         (dwarf2out_virtual_call): New function.
4692         (dwarf2out_init): Allocate new tables and sections.
4693         (prune_unused_types): Mark DIEs referenced from direct call table.
4694         (dwarf2out_finish): Output direct and virtual call tables.
4695         * final.c (final_scan_insn): Call direct_call and virtual_call
4696         debug hooks.
4697         * debug.h (struct gcc_debug_hooks): Add direct_call,
4698         virtual_call_token, virtual_call hooks.
4699         (debug_nothing_uid): New function.
4700         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
4701         (debug_nothing_uid): New function.
4702         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
4703         (xcoff_debug_hooks): Likewise.
4704         * sdbout.c (sdb_debug_hooks): Likewise.
4705         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
4706         * doc/invoke.texi (-fenable-icf-debug): New option.
4707
4708 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
4709
4710         PR debug/41353
4711         * regmove.c (regmove_backward_pass): Replace src with dst in the
4712         debug insn, and check for dst before rather than after.
4713
4714 2009-10-08  Janis Johnson <janis187@us.ibm.com>
4715
4716         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
4717         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
4718
4719 2009-10-08  Jan Hubicka  <jh@suse.cz>
4720
4721         PR middle-end/41626
4722         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
4723         do not mark cgraph nodes as needed.
4724         (record_references_in_initializer): Add new only_vars parameter.
4725         * cgraph.h (record_references_in_initializer): New parameter.
4726         * varasm.c (assemble_variable): Update call.
4727         * varpool.c (varpool_analyze_pending_decls): Always look for
4728         referenced vars.
4729
4730 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
4731
4732         * config/avr/avr.c (last_insn_address) Remove variable.
4733         (expand_prologue): Don't initialise last_insn_address variable.
4734         (final_prescan_insn): Don't output insn size.
4735         * config/avr/avr.opt (msize): Remove switch.
4736         * doc/invoke.texi (AVR Options): Remove documentation of -msize
4737         switch.
4738
4739 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
4740
4741         * combine.c (label_tick_ebb_start): Fix comment.
4742         (combine_instructions): Set label_tick and label_tick_ebb_start before
4743         calling setup_incoming_promotions.  Start them from 1.  Increment
4744         label_tick instead of deriving it from the BB index.  Rather than
4745         comparing ticks use the block from the previous iteration to decide
4746         whether to start a new EBB.  Remove empty lines before function.
4747
4748 2009-10-08  Michael Matz  <matz@suse.de>
4749
4750         PR middle-end/41573
4751         * builtins.c (fold_builtin_isascii): Use fold_build2.
4752         (fold_builtin_isdigit): Ditto.
4753         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
4754         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
4755         remove_useless_stmts_cond, remove_useless_stmts_tf,
4756         remove_useless_stmts_tc, remove_useless_stmts_bind,
4757         remove_useless_stmts_goto, remove_useless_stmts_label,
4758         remove_useless_stmts_1, remove_useless_stmts,
4759         pass_remove_useless_stmts): Remove.
4760         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
4761         * passes.c (init_optimization_passes): Don't add
4762         pass_remove_useless_stmts.
4763         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
4764         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
4765         static constants.
4766         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
4767         for static constants.
4768         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
4769         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
4770
4771 2009-10-08  Richard Guenther  <rguenther@suse.de>
4772
4773         * gimple.c (free_gimple_type_tables): New function.
4774         * gimple.h (free_gimple_type_tables): Declare.
4775
4776 2009-10-07  Mark Heffernan  <meheff@google.com>
4777
4778         * ipa-prop.c (ipa_print_node_params) Only print
4779         names of named arguments.
4780
4781 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
4782
4783         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
4784         being statically linked.
4785
4786 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4787
4788         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
4789
4790 2009-10-08  Jan Hubicka  <jh@suse.cz>
4791
4792         PR bootstrap/41620
4793         * ipa.c (cgraph_externally_visible_p,
4794         function_and_variable_visibility,
4795         whole_program_function_and_variable_visibility): Skip non-finalized
4796         nodes.
4797
4798 2009-10-08  Nick Clifton  <nickc@redhat.com>
4799
4800         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
4801         CONST_DOUBLEs.
4802
4803 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
4804
4805         PR bootstrap/37739
4806         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
4807
4808 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
4809
4810         PR c/41182
4811         * c-common.c (c_fully_fold_internal): Strip nops from the result
4812         of recursive calls to c_fully_fold_internal.
4813         (c_wrap_maybe_const): New.
4814         (c_save_expr): Use c_wrap_maybe_const.
4815         * c-common.h (c_wrap_maybe_const): Declare.
4816         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
4817         build_binary_op): Use c_wrap_maybe_const.
4818
4819 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4820
4821         * real.c: Fix comment to reflect actual exponent size.
4822
4823 2009-10-08  Ben Elliston  <bje@au.ibm.com>
4824
4825         * config/rs6000/a2.md: Add FSF comment header.
4826
4827 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
4828
4829         * config/i386/i386.md (any_extend): New code iterator.
4830         (u, s): New code attributes.
4831         (sgnprefix): Ditto.
4832         (DWIH): Rewrite as code iterator for SI and DI modes.
4833         (DWI): Rewrite as mode attribute.
4834         (dwi): New mode attribute.
4835         (di): Depend on SI mode and DI mode.
4836         (doubleint_general_operand): Remove mode attribute.
4837
4838         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
4839         DWIH mode iterator.
4840
4841         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
4842         (*sub<mode>3_doubleword): Ditto.
4843
4844         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
4845         using SWIM248 mode iterator.
4846         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
4847         using SWI48 mode iterator.
4848         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
4849         patterns using DWIH mode iterator and any_extend code iterator.
4850         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
4851         using any_extend code iterator.
4852         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
4853         patterns using DWIH mode iterator and any_extend code iterator.
4854         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
4855         using any_extend code iterator.
4856         (<s>mul<mode>3_highpart): Macroize expander from
4857         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
4858         and any_extend code iterator.
4859         (*<s>muldi3_highpart_1): Macroize insn from
4860         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
4861         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
4862         patterns using any_extend code iterator.
4863         (*<s>mulsi3_highpart_zext): Macroize insn from
4864         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
4865
4866 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
4867
4868         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
4869         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
4870         refering to a DIE with DW_AT_const_value.
4871
4872 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
4873
4874         PR middle-end/22072
4875         * ira-lives.c (check_and_make_def_conflict): Process all operands.
4876
4877 2009-10-06  Jan Hubicka  <jh@suse.cz>
4878
4879         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
4880         correctly.
4881
4882 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4883
4884         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
4885         *lea_2_rex64): Move before *add<mode>_1 pattern.
4886
4887 2009-10-07  Jan Hubicka  <jh@suse.cz>
4888
4889         * collect2.c (main): Add -fno-whole-program.
4890         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
4891
4892 2009-10-07  Jan Hubicka  <jh@suse.cz>
4893
4894         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
4895         has no address taken.
4896         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
4897         never needed.
4898         (cgraph_clone_node): Clear externally_visible flag for clones.
4899         * cgraph.h (cgraph_only_called_directly_p,
4900         cgraph_can_remove_if_no_direct_calls_p): New predicates.
4901         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
4902         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
4903         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
4904         ipcp_insert_stage): Likwise.
4905         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
4906         externally_visible flag.
4907         (verify_cgraph_node): Verify that inline clones look right.
4908         (process_function_and_variable_attributes): Do not set
4909         externally_visible flags.
4910         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
4911         been already run.
4912         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
4913         boundaries.
4914         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
4915         clear externally_visible when turning into inline clones
4916         (cgraph_mark_inline_edge): Use new predicates.
4917         (cgraph_estimate_growth): Likewise.
4918         (cgraph_decide_inlining): Likewise.
4919         * ipa.c (cgraph_postorder): Likewise.
4920         (cgraph_remove_unreachable_nodes): Likewise; sanity check
4921         that inline clones are not needed.
4922         (cgraph_externally_visible_p): New predicate.
4923         (function_and_variable_visibility): Add whole_program parameter;
4924         always set externally_visible flag; handle COMDAT function
4925         privatization.
4926         (local_function_and_variable_visibility): New function.
4927         (gate_whole_program_function_and_variable_visibility): New function.
4928         (whole_program_function_and_variable_visibility): New function.
4929         (pass_ipa_whole_program_visibility): New function.
4930         * passes.c  (init_optimization_passes): Add whole program visibility
4931         pass.
4932         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
4933         not care about needed/reachable flags.
4934         * varpool.c: Include flags.h
4935         (decide_is_variable_needed): When doing LTO assume whole-program mode.
4936         (varpool_finalize_decl): When we are in LTO read-back, all variables
4937         are analyzed.
4938         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
4939
4940 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4941
4942         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
4943         add MASK_HARD_DFP.
4944
4945 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4946
4947         * config.gcc: Don't include the makefile fragments intended for
4948         libgcc.
4949         * config/s390/fixdfdi.h: File removed.
4950         * config/s390/libgcc-glibc.ver: File removed.
4951         * config/s390/s390.h: Remove the fixdfdi.h hack.
4952         * config/s390/t-crtstuff: File moved to libgcc dir.
4953         * config/s390/t-linux: Likewise.
4954         * config/s390/t-tpf: libgcc specific parts removed.
4955         * config/s390/t-linux64: Likewise.
4956
4957 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
4958
4959         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
4960         (lto-compress.o): Likewise.
4961
4962 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
4963
4964         PR target/41512
4965         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
4966         dllexport to class members here.
4967         (i386_pe_determine_dllimport_p): Only check static class data for
4968         definition.
4969         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
4970         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
4971         functions for vague linkage.
4972         (i386_pe_type_dllexport_p): Fix formatting.
4973         (maybe_add_dllexport) New function.
4974         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
4975         to class members.
4976
4977 2009-10-07  Ben Elliston  <bje@au.ibm.com>
4978
4979         * config/rs6000/a2.md: Remove duplicated lines.
4980
4981 2009-10-07  Ben Elliston  <bje@au.ibm.com>
4982
4983         * config.gcc (powerpc*-*-*): Handle a2.
4984         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
4985         * config/rs6000/a2.md: New file.
4986         * config/rs6000/rs6000.opt (mno-update): New.
4987         (mupdate): Return to using a mask, not a var.
4988         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
4989         (enum processor_type): Add PROCESSOR_PPCA2.
4990         * config/rs6000/rs6000.c (ppca2_cost): New costs.
4991         (rs6000_override_options): Add "a2" to processor_target_table.
4992         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
4993         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
4994
4995 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4996
4997         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
4998         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
4999         reference to nonexistent gen_truncxfxf2 function.
5000
5001 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5002
5003         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
5004         (DWIH, g, di, doubleint_general_operand): New mode attributes.
5005         (general_operand): Handle TI mode.
5006         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
5007         using SDWIM mode iterator.
5008         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
5009         pattern from *add{di,ti}3_1 patterns and corresponding splitters
5010         using DWI mode iterator.
5011         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
5012         patterns using SWI mode iterator.
5013         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
5014         using SWI48 mode iterator.
5015         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
5016         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
5017         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
5018         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
5019         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
5020         using SDWIM mode iterator.
5021         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
5022         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
5023         using DWI mode iterator.
5024         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
5025         patterns using SWI mode iterator.
5026         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
5027         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
5028         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
5029         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
5030         patterns using plusminus code iterator.
5031         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
5032         sub<mode>3 patterns using plusminus code iterator.
5033         * config/i386/i386.c (override_options): Update the call to
5034         gen_subdi_carry_rex64 for renamed function.
5035         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
5036         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
5037         calls to instruction expanders.
5038
5039 2009-10-06  Martin Jambor  <mjambor@suse.cz>
5040
5041         PR bootstrap/41395
5042         * opts.c (decode_options): Run IPA-SRA at -O2.
5043
5044 2009-10-06  Richard Guenther  <rguenther@suse.de>
5045
5046         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
5047
5048 2009-10-06  Tobias Burnus  <burnus@net-b.de>
5049
5050         PR lto/41591
5051         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
5052         -flto and -fwhole-program flags can be combined.
5053
5054 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
5055
5056         PR driver/41217
5057         * gcc.c (process_command): Check that -o argument was specified.
5058
5059 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
5060
5061         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
5062
5063 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5064
5065         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
5066         * doc/invoke.texi (Warning Options): Annotate allowed languages
5067         for -Wunsuffixed-float-constants.
5068
5069 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
5070
5071         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
5072         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
5073         same name and isn't the main variant.
5074
5075         PR debug/41558
5076         * dwarf2out.c (loc_by_reference): Removed.
5077         (dw_loc_list_1): New function.
5078         (dw_loc_list): Remove toplev argument, add want_address argument.
5079         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
5080         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
5081         want_address == 2 to dw_loc_list.  For successful dw_loc_list
5082         set have_address to 1 only if want_address is not 0.
5083
5084 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
5085
5086         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
5087         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
5088         a code block followed by two pointers.
5089         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
5090         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
5091         (MIPS_MOVE): Likewise.
5092         (MIPS_LUI): Likewise.
5093         (MIPS_JR): Likewise.
5094         (MIPS_BAL): Likewise.
5095         (MIPS_NOP): Likewise.
5096         (mips_asm_trampoline_template): Delete.
5097         (mips_trampoline_code_size): New function.
5098         (mips_trampoline_init): Add shorter sequences for all cases
5099         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
5100         Calculate the opcodes directly, rather than copying from a template.
5101         Only flush the code part of the trampoline.
5102         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
5103
5104 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
5105
5106         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
5107         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
5108         (INCOMING_RETURN_ADDR_RTX): Likewise.
5109         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
5110         with AT_REGNUM.
5111         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
5112         with RETURN_ADDR_REGNUM.
5113         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
5114         * config/mips/mips.c (mips16_build_call_stub): Replace
5115         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
5116         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
5117         (mips_print_operand_punctuation): Likewise.
5118         (mips_frame_set): Likewise.
5119         (mips16e_output_save_restore): Likewise.
5120         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
5121         (mips_save_reg_p): Likewise.
5122         (mips_return_addr): Likewise.
5123         (mips_set_return_address): Likewise.
5124         (mips_direct_save_slot_move_p): Likewise.
5125         (mips_output_function_prologue): Likewise.
5126         (mips_restore_reg): Likewise.
5127         (mips_expand_epilogue): Likewise.
5128         (mips_epilogue_uses): Likewise.
5129         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
5130         (*mov<mode>_ra): Use it instead of a hard-coded 31.
5131         (clear_hazard_<mode>): Likewise.
5132         (call_internal): Likewise.
5133         (call_internal_direct): Likewise.
5134         (call_direct_split): Likewise.
5135         (call_value_internal): Likewise.
5136         (call_value_split): Likewise.
5137         (call_value_internal_direct): Likewise.
5138         (call_value_direct_split): Likewise.
5139         (call_value_multiple_internal): Likewise.
5140         (call_value_multiple_split): Likewise.
5141
5142 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
5143             Jakub Jelinek  <jakub@redhat.com>
5144
5145         PR rtl-optimization/41511
5146         * combine.c (record_value_for_reg): Pass explicit values as argument
5147         to get_last_value_validate.
5148         (get_last_value_validate): Document INSN parameter.
5149         For non-readonly MEMs, assume they might have been modified if INSN
5150         was in another basic block.
5151         (get_last_value): Minor reformatting.
5152
5153 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5154
5155         PR tree-opt/40992
5156         * final.c (asm_str_count): Split out from asm_insn_count.
5157         * rtl.h (asm_str_count): New prototype.
5158         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
5159         asm_str_count.
5160
5161 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
5162
5163         * doc/plugins.texi: Change plugin_pass to register_pass_info.
5164
5165 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
5166             Rafael Espindola  <espindola@google.com>
5167
5168         * gengtype.c (write_types): Moved call to write_func_for_structure
5169         into seperate loops.
5170
5171 2009-10-05  Richard Guenther  <rguenther@suse.de>
5172
5173         PR lto/41281
5174         * lto-cgraph.c (output_cgraph): Output toplevel asms.
5175         (input_cgraph_1): Input toplevel asms.
5176
5177 2009-10-05  Richard Guenther  <rguenther@suse.de>
5178
5179         PR lto/40902
5180         * lto-symtab.c (lto_compatible_attributes_p): Remove.
5181         (external_aggregate_decl_p): Likewise.
5182         (lto_symtab_compatible): Re-structure.  Remove dead code.
5183         For variables ignore toplevel qualifiers when comparing types.
5184         Issue warnings, not errors for mismatched user-alignment.
5185
5186 2009-10-05  Richard Guenther  <rguenther@suse.de>
5187
5188         PR lto/41552
5189         PR lto/41487
5190         * lto-symtab.c (struct lto_symtab_base_def): Remove.
5191         (struct lto_symtab_identifier_def): Likewise.
5192         (struct lto_symtab_decl_def): Likewise.
5193         (struct lto_symtab_entry_def): New.
5194         (lto_symtab_identifier_t): Rename to ...
5195         (lto_symtab_entry_t): ... this.
5196         (lto_symtab_decls): Remove.
5197         (lto_symtab_base_hash): Rename to ...
5198         (lto_symtab_entry_hash): ... this.
5199         (lto_symtab_base_eq): Rename to ...
5200         (lto_symtab_entry_eq): ... this.
5201         (lto_symtab_base_marked_p): Rename to ...
5202         (lto_symtab_entry_marked_p): ... this.
5203         (lto_symtab_identifier_marked_p): Remove.
5204         (lto_symtab_decl_marked_p): Likewise.
5205         (lto_symtab_maybe_init_hash_tables): Rename to ...
5206         (lto_symtab_maybe_init_hash_table): ... this.
5207         (lto_symtab_set_resolution_and_file_data): Remove.
5208         (lto_symtab_register_decl): New function.
5209         (lto_symtab_get_identifier): Remove.
5210         (lto_symtab_get): New function.
5211         (lto_symtab_get_resolution): Adjust.
5212         (lto_symtab_get_identifier_decl): Remove.
5213         (lto_symtab_set_identifier_decl): Likewise.
5214         (lto_symtab_merge_decl): Rename to ...
5215         (lto_symtab_merge): ... this.  Rewrite.
5216         (lto_symtab_merge_var): Remove.
5217         (lto_symtab_merge_fn): Likewise.
5218         (lto_symtab_prevailing_decl): Adjust.
5219         (lto_cgraph_replace_node): New function.
5220         (lto_symtab_merge_decls_2): Likewise.
5221         (lto_symtab_merge_decls_1): Likewise.
5222         (lto_symtab_fixup_var_decls): Likewise.
5223         (lto_symtab_resolve_symbols): Likewise.
5224         (lto_symtab_merge_decls): Likewise.
5225         (lto_symtab_prevailing_decl): Adjust.
5226         (lto_symtab_get_symtab_def): Remove.
5227         (lto_symtab_get_file_data): Likewise.
5228         (lto_symtab_clear_resolution): Adjust.
5229         (lto_symtab_clear_resolution): Likewise.
5230         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
5231         (input_cgraph_1): Likewise.
5232         * lto-streamer-in.c (get_resolution): Do not provide fake
5233         symbol resolutions here.
5234         (deferred_global_decls): Remove.
5235         (lto_register_deferred_decls_in_symtab): Likewise.
5236         (lto_register_var_decl_in_symtab): Change signature, register
5237         variable via lto_symtab_register_decl.
5238         (lto_register_function_decl_in_symtab): Likewise.
5239         (lto_read_tree): Adjust.
5240         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
5241         (lto_symtab_merge_var): Likewise.
5242         (lto_symtab_merge_fn): Likewise.
5243         (lto_symtab_register_decl): Declare.
5244         (lto_symtab_merge_decls): Likewise.
5245
5246 2009-10-05  Richard Guenther  <rguenther@suse.de>
5247
5248         PR tree-optimization/23821
5249         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
5250         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
5251         simple IV increments.
5252
5253 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5254
5255         * config/arm/arm.c (arm_override_options): Really initialize
5256         flag_dwarf2_cfi_asm to 0.
5257
5258 2009-10-05  Doug Kwan  <dougkwan@google.com>
5259
5260         PR rtl-optimization/41574
5261         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
5262         floating point and we are not doing unsafe math optimizations.
5263
5264 2009-10-03  Simon Baldwin  <simonb@google.com>
5265             Cary Coutant  <ccoutant@google.com>
5266             Rafael Espindola  <espindola@google.com>
5267             Richard Guenther  <rguenther@suse.de>
5268             Jan Hubicka  <jh@suse.cz>
5269             Doug Kwan <dougkwan@google.com>
5270             H.J. Lu  <hongjiu.lu@intel.com>
5271             Bill Maddox  <maddox@google.com>
5272             Ryan Mansfield  <rmansfield@qnx.com>
5273             Diego Novillo  <dnovillo@google.com>
5274             Ollie Wild  <aaw@google.com>
5275             Kenneth Zadeck <zadeck@naturalbridge.com>
5276
5277         * lto-cgraph.c: New file.
5278         * lto-compress.c: New file.
5279         * lto-compress.h: New file.
5280         * lto-opts.c: New file.
5281         * lto-section-in.c: New file.
5282         * lto-section-out.c: New file.
5283         * lto-streamer-in.c: New file.
5284         * lto-streamer-out.c: New file.
5285         * lto-streamer.c: New file.
5286         * lto-streamer.h: New file.
5287         * lto-symtab.c: New file.
5288         * lto-wpa-fixup.c: New file.
5289         * lto-wrapper.c: New file.
5290
5291 2009-10-03  Simon Baldwin  <baldwin@google.com>
5292             Ben Elliston  <bje@au.ibm.com>
5293             Rafael Espindola  <espindola@google.com>
5294             Nathan Froyd  <froydnj@codesourcery.com>
5295             Jan Hubicka  <jh@suse.cz>
5296             Doug Kwan  <dougkwan@google.com>
5297             Diego Novillo  <dnovillo@google.com>
5298             Kenneth Zadeck  <zadeck@naturalbridge.com>
5299
5300         * Makefile.in (enable_lto): New.
5301         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
5302         (LINKER_PLUGIN_API_H): Define.
5303         (LTO_SYMTAB_H): Define.
5304         (LTO_STREAMER_H): Define.
5305         (TREE_VECTORIZER_H): Define.
5306         (INCLUDES): Add LIBELFINC.
5307         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
5308         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
5309         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
5310         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
5311         (native): Add lto-wrapper$(exeext)
5312         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
5313         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
5314         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
5315         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
5316         (varasm.o): Add dependency on tree-iterator.h.
5317         (cgraph.o): Add dependency on cif-code.def.
5318         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
5319         (ipa-pure-const.o): Likewise.
5320         (GTFILES): Add lto-symtab.c.
5321         (install-lto-wrapper): New.
5322         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
5323         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
5324         * config.in: Regenerate.
5325
5326 2009-10-03  Rafael Espindola  <espindola@google.com>
5327             Diego Novillo  <dnovillo@google.com>
5328
5329         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
5330         ipa_write_summaries.
5331         Call execute_ipa_summary_passes for all_regular_ipa_passes and
5332         all_lto_gen_passes.
5333         (cgraph_optimize): Make extern.
5334
5335 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
5336             Kenneth Zadeck <zadeck@naturalbridge.com>
5337
5338         * toplev.c (in_lto_p): Declare.
5339         * collect2.c (scan_prog_file): Read all the output when reading
5340         information for LTO.
5341         (enum lto_mode_d): Declare.
5342
5343 2009-10-03  Richard Guenther  <rguenther@suse.de>
5344             Diego Novillo  <dnovillo@google.com>
5345
5346         * gimple.c: Include target.h and alias.h.
5347         (gimple_types): Declare.
5348         (type_hash_cache): Declare.
5349         (gimple_alloc_stat): Make extern.
5350         (gimple_build_eh_must_not_throw): Call
5351         gimple_eh_must_not_throw_set_fndecl.
5352         (struct type_pair_d): Declare.
5353         (type_pair_t): Declare.
5354         (type_pair_hash): New.
5355         (type_pair_eq): New.
5356         (lookup_type_pair): New.
5357         (gimple_force_type_merge): New.
5358         (compare_type_names_p): New.
5359         (compare_field_offset): New.
5360         (gimple_types_compatible_p): New.
5361         (struct sccs): Declare.
5362         (next_dfs_num): Declare.
5363         (iterative_hash_gimple_type): New.
5364         (visit): New.
5365         (iterative_hash_type_name): New.
5366         (iterative_hash_gimple_type): New.
5367         (gimple_type_hash): New.
5368         (gimple_type_eq): New.
5369         (gimple_register_type): New.
5370         (print_gimple_types_stats): New.
5371         (gimple_signed_or_unsigned_type): New.
5372         (gimple_unsigned_type): New.
5373         (gimple_signed_type): New.
5374         (gimple_get_alias_set): New.
5375         (gimple_decl_printable_name): Do not use DMGL_TYPES.
5376         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
5377         (gimple_force_type_merge): Declare.
5378         (gimple_types_compatible_p): Declare.
5379         (gimple_register_type): Declare.
5380         (print_gimple_types_stats): Declare.
5381         (gimple_unsigned_type): Declare.
5382         (gimple_signed_type): Declare.
5383         (gimple_get_alias_set): Declare.
5384         (gimple_eh_must_not_throw_set_fndecl): New.
5385
5386 2009-10-03  Jan Hubicka  <jh@suse.cz>
5387             Kenneth Zadeck <zadeck@naturalbridge.com>
5388
5389         * ipa-pure-const.c: Include lto-streamer.h.
5390         (register_hooks): Factor out of ...
5391         (generate_summary): ... here.
5392         (pure_const_write_summary): New.
5393         (pure_const_read_summary): New.
5394         (pass_ipa_pure_const): Add pure_const_write_summary and
5395         pure_const_read_summary.
5396         * ipa-reference.c: Include lto-streamer.h.
5397         (add_new_function): New.
5398         (remove_node_data): New.
5399         (duplicate_node_data): New.
5400         (ipa_init): Guard against multiple calls.
5401         Move hook setup from analyze_function.
5402         (write_node_summary_p): New.
5403         (ipa_reference_write_summary): New.
5404         (ipa_reference_read_summary): New.
5405         (pass_ipa_reference): Add ipa_reference_write_summary and
5406         ipa_reference_read_summary.
5407         * cgraph.h (cgraph_local_info): Add field lto_file_data.
5408         (struct cgraph_edge): Add fields lto_stmt_uid and
5409         call_stmt_cannot_inline_p.
5410         (cgraph_optimize): Declare.
5411         (cgraph_decide_is_function_needed): Declare.
5412         (reset_inline_failed): Declare.
5413         (enum LTO_cgraph_tags): Declare.
5414         (LTO_cgraph_tag_names): Declare.
5415         (LCC_NOT_FOUND): Define.
5416
5417 2009-10-03  Doug Kwan  <dougkwan@google.com>
5418             Rafael Espindola  <espindola@google.com>
5419             Jan Hubicka  <jh@suse.cz>
5420             Diego Novillo  <dnovillo@google.com>
5421             Kenneth Zadeck  <zadeck@naturalbridge.com>
5422
5423         * passes.c (all_regular_ipa_passes): New.
5424         (all_ipa_passes): Rename to all_small_ipa_passes.
5425         (init_optimization_passes): Init all_regular_ipa_passes.
5426         * tree-pass.h (all_regular_ipa_passes): New.
5427         (all_ipa_passes): Rename to all_small_ipa_passes.
5428         * passes.c (all_lto_gen_passes): New.
5429         (init_optimization_passes): Initialize all_lto_gen_passes.
5430         (execute_ipa_summary_passes): Make non-static.
5431         (ipa_write_summaries_1): New.
5432         (ipa_write_summaries_2): New.
5433         (ipa_write_summaries): New.
5434         (ipa_write_summaries_of_cgraph_node_set): New.
5435         (ipa_read_summaries_1): New.
5436         (ipa_read_summaries): New.
5437         (execute_ipa_pass_list): Call cgraph_process_new_functions.
5438         (execute_regular_ipa_pass_list): Remove.
5439         (init_optimization_passes): Schedule
5440         pass_rebuild_cgraph_edges and pass_early_inline outside
5441         of pass_all_early_optimizations.  Document reason.
5442         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
5443         pass_ipa_lto_finish_out): New pass.
5444         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
5445         (execute_all_ipa_transforms): New.
5446         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
5447         (dump_properties, debug_properties): New.
5448         * tree-optimize.c (gate_all_early_local_passes): Return
5449         false if we are in lto1.
5450         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
5451         * tree-pass.h (execute_all_ipa_transforms): Declare.
5452         (pass_ipa_function_and_variable_visibility): Declare.
5453         (pass_ipa_early_inline): Declare.
5454         (pass_ipa_lto_gimple_out): Declare.
5455         (pass_ipa_lto_wpa_fixup): Declare.
5456         (pass_ipa_lto_finish_out): Declare.
5457         (all_small_ipa_passes, all_regular_ipa_passes,
5458         all_lto_gen_passes): Declare.
5459         (execute_ipa_summary_passes): Declare.
5460         (execute_all_ipa_transforms): Declare.
5461         (ipa_write_summaries): Declare
5462         (ipa_write_summaries_of_cgraph_node_set): Declare.
5463         (ipa_read_summaries): Declare.
5464
5465 2009-10-03  Doug Kwan  <dougkwan@google.com>
5466             Ollie Wild  <aaw@google.com>
5467
5468         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
5469
5470         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
5471         (lto_mode): New variable.
5472         (maybe_run_lto_and_relink): Handle the -fwpa option.
5473         (main): Handle the -fwpa option.
5474         (maybe_unlink_list): New function.
5475         * gcc.c (link_lto_options): Replace -flto with -fwpa.
5476         * common.opt (flto): New flag.
5477         * toplev.c (flag_generate_lto): Declare.
5478
5479 2009-10-03  Simon Baldwin  <simonb@google.com>
5480
5481         * common.opt (flto-compression-level): New flag.
5482
5483         * opts.c: Include lto-opts.h.
5484         (handle_option): Call lto_register_user_option for each
5485         valid option handled.
5486         (decode_options): Clear registered options before the options
5487         handling loop.
5488
5489 2009-10-03  Cary Coutant  <ccoutant@google.com>
5490
5491         * collect2.c (is_elf): New function.
5492         (scan_prog_file): Require LTO object to be in ELF format.
5493
5494 2009-10-03  Rafael Espindola  <espindola@google.com>
5495
5496         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
5497         libgcc to the linker.
5498
5499         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
5500
5501         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
5502         (collect_execute): Add flags argument. Pass flags to pex_run. Update
5503         all callers.
5504         * collect2.h (collect_execute): Add flags argument.
5505         * tlink.c (tlink_execute): Update call to collect_execute.
5506         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
5507         (use_linker_plugin): New.
5508         (use_linker_plugin_spec_function): New.
5509         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
5510         (linker_plugin_file_spec): New.
5511         (lto_wrapper_spec): New.
5512         (lto_gcc_spec): New.
5513         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
5514         (static_spec_functions): Add use-linker-plugin.
5515         (process_command): Handle -use-linker-plugin.
5516         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
5517         linker_plugin_file_spec and lto_gcc_spec.
5518         (use_linker_plugin_spec_function): New.
5519
5520 2009-10-03  Richard Guenther  <rguenther@suse.de>
5521
5522         PR lto/41547
5523         PR lto/41548
5524         * tree.h (is_lang_specific): Include LANG_TYPE.
5525         * tree.c (find_decls_types_r): Manually add interesting parts
5526         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
5527
5528         * gimple.c (type_pair_hash): Make symmetric.
5529         (type_pair_eq): Likewise.
5530         (lookup_type_pair): Increase initial hashtable size.
5531         (gimple_force_type_merge): Rely on type-pair symmetry.
5532         (visit): Remove excessive checking code.
5533         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
5534         (gimple_register_type): Remove getenv calls, shrink initial
5535         hashtable size.
5536
5537         PR middle-end/41502
5538         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
5539         inline functions if not generating lto output.
5540
5541         PR lto/41379
5542         * toplev.c (finalize): In WPA mode remove the asm file.
5543
5544 2009-10-03  Doug Kwan  <dougkwan@google.com>
5545
5546         * ipa-inline.c (cgraph_mark_inline): Check
5547         edge->call_stmt_cannot_inline_p instead of calling
5548         gimple_call_cannot_inline_p.
5549         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
5550         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
5551         (inline_generate_summary): Do nothing in LTRANS.
5552         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
5553         exists before calling gimple_call_cannot_inline_p.
5554         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
5555         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
5556         Update new_edge->lto_stmt_uid.
5557         * cgraphbuild.c (reset_inline_failed): New.
5558
5559         * common.opt (fwpa): New flag.
5560         (fltrans): New option.
5561         * gcc.c (gcc_lto_option_t): New type.
5562         (current_lto_option): New variable.
5563         (lto_single_spec_function): Remove and is replaced by ..
5564         (lto_option_spec_function): New function.
5565         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
5566         passing the -flto flag.
5567         (cc1_options): Separate non-LTO related parts into ..
5568         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
5569         (lto1_options): New spec for lto FE.
5570         (link_lto_options): New spec for handling LTO flags in linker.
5571         (invoke_lto_single): Re-format to fit in 80 column.  Replace
5572         lto-single with lto-option.
5573         (static_specs): Add cc1_non_lto_options, lto1_options and
5574         link_lto_options.
5575         (static_spec_function): Replace lto-single with lto-option.
5576         (process_command): Handle -flto, -fwpa and -fltran by setting
5577         current_lto_option and not passing it to subprocess unconditionally.
5578
5579 2009-10-03  Bill Maddox  <maddox@google.com>
5580
5581         Add `gcc' driver support for link-time code generation (LTO).
5582
5583         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
5584         (lto_flag, lto_objects, lto_o_file): New variables.
5585         (struct lto_object, struct lto_object_list): New structures.
5586         (collect_exit, handler): Remove LTO temporary output file on exit.
5587         (add_lto_object): New function.
5588         (maybe_run_lto_and_relink): New function. Perform link time code
5589         generation and relinking for object files containing LTO information.
5590         (main): Invoke maybe_run_lto_and_relink().
5591         (dump_argv): New function.  For debugging, currently disabled.
5592         (scan_prog_file): Add LTO information pass.
5593         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
5594         collect2.
5595         * toplev.c (compile_file): Emit assembler directive to create
5596         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
5597
5598 2009-10-03  Diego Novillo  <dnovillo@google.com>
5599
5600         * c.opt: Add LTO to warn_abi and warn_psabi.
5601
5602         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
5603         inline function.  Ignore language-specific nodes.  Update all users.
5604         (find_decls_types_r): Do not traverse the subtrees of
5605         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
5606         * tree.h (is_lang_specific): New.
5607         * langhooks.h (struct lang_hooks_for_decls): Remove
5608         may_need_assembler_name_p.  Update all users.
5609
5610         * c-common.c (set_builtin_user_assembler_name): Move ...
5611         * builtins.c (set_builtin_user_assembler_name): ... here.
5612         (is_builtin_name): Add comment
5613         (is_builtin_fn): New.
5614         * except.c (output_ttype): Only call
5615         lookup_type_for_runtime if TYPE is not a runtime type.
5616
5617         * passes.c (register_pass): Call position_pass on
5618         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
5619         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
5620         (TV_IPA_LTO_DECL_IO): Define.
5621         (TV_IPA_LTO_CGRAPH_IO): Define.
5622         (TV_LTO): Define.
5623         (TV_WHOPR_WPA): Define.
5624         (TV_WHOPR_WPA_IO): Define.
5625         (TV_WHOPR_LTRANS): Define.
5626         (TV_WHOPR_WPA_FIXUP): Define.
5627         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
5628         * tree-cfg.c (tree_node_can_be_shared): Make extern.
5629         * tree-flow.h (tree_node_can_be_shared): Declare.
5630         * tree-inline.c (tree_can_inline_p): Check that E has a
5631         statement associated with it.
5632         * tree.c (free_lang_data_in_binf): Factor out of ...
5633         (free_lang_data_in_type): ... here.
5634         Call RECORD_OR_UNION_TYPE_P.
5635         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
5636         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
5637         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
5638         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
5639         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
5640         (gate_free_lang_data): Return true if flag_generate_lto is set.
5641         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
5642         * c-common.h (set_builtin_user_assembler_name): Move ...
5643         * tree.h (set_builtin_user_assembler_name): ... here.
5644
5645         * common.opt (flto-report): New flag.
5646         * opts.c (complain_wrong_lang): Do not complain if running lto1.
5647         * collect2.c (scan_prog_file): Send the error output of
5648         'nm' to HOST_BIT_BUCKET.
5649
5650 2009-10-03  Ollie Wild  <aaw@google.com>
5651
5652         * langhooks-def.h (lhd_begin_section): New function declaration.
5653         (lhd_write_section): New function declaration.
5654         (lhd_end_section): New function declaration.
5655         (LANG_HOOKS_BEGIN_SECTION): New macro.
5656         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
5657         (LANG_HOOKS_END_SECTION): New macro.
5658         (LANG_HOOKS_LTO): New macro.
5659         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
5660         * langhooks.c (output.h): Add include.
5661         (saved_section): New static variable.
5662         (lhd_begin_section): New function.
5663         (lhd_write_section_data): New function.
5664         (lhd_end_section): New function.
5665         * langhooks.h (struct lang_hooks_for_lto): New structure.
5666         (struct lang_hooks): Add member lto.
5667         * Makefile.in (langhooks.o): Add dependency on output.h.
5668
5669         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
5670
5671 2009-10-03  Richard Guenther  <rguenther@suse.de>
5672
5673         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
5674         Handle LTO.
5675
5676 2009-10-03  Simon Baldwin  <simonb@google.com>
5677             Richard Guenther  <rguenther@suse.de>
5678             Janis Johnson  <janis187@us.ibm.com>
5679             Doug Kwan  <dougkwan@google.com>
5680             Diego Novillo  <dnovillo@google.com>
5681             Ramana Radhakrishnan  <ramana.r@gmail.com>
5682             Ollie Wild  <aaw@google.com>
5683
5684         * doc/install.texi: Add documentation for libelf and --enable-lto.
5685         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
5686         -flto-report, -flto-compression-level and -use-linker-plugin.
5687         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
5688         Add section for LTO Testing.
5689
5690 2009-10-02  Cary Coutant  <ccoutant@google.com>
5691
5692         Add support for comdat type sections for DWARF v4.
5693         Merge from dwarf4 branch.
5694
5695         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
5696         (dw_die_ref): Define vector type.
5697         (enum dw_val_class): Add dw_val_class_data8.
5698         (struct dw_val_struct): Add v.val_data8.
5699         (comdat_type_node_ref): New type.
5700         (struct die_struct): Move die_symbol into a union; add new field
5701         die_type_node.  Change all uses.
5702         (comdat_type_node): New type.
5703         (skeleton_chain_node): New type.
5704         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
5705         (comdat_type_list): New variable.
5706         (dwarf_tag_name): Add DW_TAG_type_unit.
5707         (dwarf_attr_name): Add DW_AT_signature.
5708         (add_AT_data8): New function.
5709         (replace_child): New function.
5710         (move_all_children): New function.
5711         (print_signature): New function.
5712         (print_die): Print signature information; add dw_val_class_data8.
5713         (attr_checksum): Support dw_val_class_data8.
5714         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
5715         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
5716         (checksum_sleb128, checksum_uleb128): New functions.
5717         (checksum_die_context): New function.
5718         (loc_checksum_ordered): New function.
5719         (attr_checksum_ordered): New function.
5720         (struct checksum_attributes): New structure.
5721         (collect_checksum_attributes): New function.
5722         (die_checksum_ordered): New function.
5723         (generate_type_signature): New function.
5724         (same_dw_val_p): Add dw_val_class_data8.
5725         (is_symbol_die): Use new is_declaration_die function.
5726         (is_declaration_die): New function.
5727         (should_move_die_to_comdat): New function.
5728         (clone_die): New function.
5729         (clone_tree): New function.
5730         (clone_as_declaration): New function.
5731         (copy_declaration_context): New function.
5732         (generate_skeleton_ancestor_tree): New function.
5733         (generate_skeleton_bottom_up): New function.
5734         (generate_skeleton): New function.
5735         (remove_child_or_replace_with_skeleton): New function.
5736         (break_out_comdat_types): New function.
5737         (struct decl_table_entry): New type.
5738         (htab_decl_hash): New function.
5739         (htab_decl_eq): New function.
5740         (htab_decl_del): New function.
5741         (copy_ancestor_tree): New function.
5742         (copy_decls_walk): New function.
5743         (copy_decls_for_unworthy_types): New function.
5744         (build_abbrev_table): Don't assert on missing die_symbol when doing
5745         comdat type sections.
5746         (size_of_die): Use DW_FORM_sig8 for external references.  Add
5747         dw_val_class_data8.
5748         (unmark_dies): Don't assert for unmarked dies when doing comdat
5749         type sections.
5750         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
5751         (output_signature): New function.
5752         (output_die): Likewise.
5753         (output_compilation_unit_header): Mark output as DWARF version 3
5754         even if generating DWARF 4.
5755         (output_comdat_type_unit): New function.
5756         (output_line_info): Mark output as DWARF version 3 even if generating
5757         DWARF 4.
5758         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
5759         DWARF-4.
5760         (dwarf2out_end_source_file): Likewise.
5761         (prune_unused_types_walk_attribs): Don't follow references into
5762         comdat type sections.
5763         (prune_unused_types_mark): When generating type units, do not mark
5764         children of non-defining declarations of types; do mark children of
5765         type entries.
5766         (prune_unused_types): Process comdat type sections.
5767         (htab_ct_hash): New function.
5768         (htab_ct_eq): New function.
5769         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
5770         Add a pointer to the line table from type unit entries so
5771         DW_AT_decl_file has meaning.
5772         * varasm.c (default_elf_asm_named_section): Use identifier name as
5773         comdat key instead of lang hook.
5774
5775 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
5776
5777         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
5778
5779 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
5780
5781         * config/i386/i386.md (SWIM248): New mode iterator.
5782         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
5783         divmodhi4 patterns using SWIM248 macro.
5784         (*divmod<mode>4): Macroize insn_and_split pattern from
5785         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
5786         and their corresponding splitters usign SWIM248 macro.  Split SImode
5787         insn to generate cltd and DImode insn to generate cqto instead of
5788         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
5789         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
5790         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
5791         *divmodsi_noext patterns using SWIM248 macro.
5792         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
5793         udivmodhi4 patterns using SWIM248 macro.
5794         (*udivmod<mode>4): Macroize insn_and_split pattern from
5795         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
5796         corresponding splitters using SWIM248 macro.
5797         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
5798         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
5799
5800 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
5801
5802         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
5803         of zero-sized element is zero-sized regardless of its extent.
5804
5805 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
5806
5807         PR debug/40521
5808         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
5809         * configure: Regenerated.
5810         * config.in: Regenerated.
5811         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
5812         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
5813         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
5814         not emitting .eh_frame, emit .cfi_sections .debug_frame
5815         directive.
5816
5817         PR debug/41404
5818         PR debug/41353
5819         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
5820         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
5821         with '\0'.
5822         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
5823         vars use DECL_RTL with resetting it back to NULL afterwards.
5824         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
5825         rtx_equal_p instead of asserting it is a SYMBOL_REF.
5826         (value_format): For dw_val_class_addr only use DW_FORM_addr if
5827         the attribute type allows it, otherwise use DW_FORM_dataN.
5828         (mem_loc_descriptor): Handle CONST_STRING.
5829         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
5830         Handle MEM with CONST_STRING address using add_AT_string.
5831         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
5832         CONST_STRING for const arrays initialized with a string literal.
5833         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
5834         (dwarf2out_finish): Call resolve_addr.
5835
5836 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
5837             Maxim Kuvyrkov  <maxim@codesourcery.com>
5838
5839         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
5840
5841 2009-10-02  Nick Clifton  <nickc@redhat.com>
5842
5843         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
5844         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
5845
5846 2009-10-01  Jan Hubicka  <jh@suse.cz>
5847
5848         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
5849         (cgraph_create_virtual_clone): Just pass redirect_callers
5850         around.
5851         * cgraph.h (cgraph_clone_node): Update prototype.
5852         * ipa-pure-const.c (self_recursive_p): New function.
5853         (propagate): Use it.
5854         * ipa-inline.c (cgraph_clone_inlined_nodes,
5855         cgraph_decide_recursive_inlining): Update.
5856
5857 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
5858
5859         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
5860         instructions for TARGET_OCTEON.
5861
5862 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5863
5864         * config/arm/arm.c (arm_override_options): Turn off
5865         flag_dwarf2_cfi_asm for AAPCS variants.
5866
5867 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5868
5869         PR middle-end/12392
5870         * tree-sra.c (convert_callers): Do not call
5871         compute_inline_parameters on one caller more than once.
5872
5873 2009-10-01  Nick Clifton  <nickc@redhat.com>
5874
5875         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
5876         an empty string if not already defined.
5877
5878 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5879
5880         PR bootstrap/41395
5881         * tree-sra.c (is_va_list_type): New function.
5882         (find_var_candidates): Call is_va_list_type.
5883         (find_param_candidates): Check that the type or the type pointed
5884         to are not va_list types.
5885
5886 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5887
5888         PR c++/41503
5889         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
5890         DECL_ARTIFICIAL (param_decl) is true.
5891
5892 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
5893
5894         * tree.h (tree_decl_common::lang_flag_8): New.
5895         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
5896         keyword.
5897         * c-common.h (RID_CONSTEXPR): New.
5898
5899 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
5900
5901         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
5902         Use ref-all pointers.
5903         (alpha_gimplify_va_arg): Ditto.
5904
5905 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
5906
5907         PR target/41279
5908         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
5909         before insn counting loop now that BB_END (bb) is counted.  Ensure
5910         the return value isn't zero.
5911
5912 2009-09-30  Nick Clifton  <nickc@redhat.com>
5913
5914         * config.gcc (sh-symbianelf): Replace definition of extra_objs
5915         with separate definitions of c_target_objs and cxx_target_objs.
5916         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
5917         and symbian-base.o.
5918         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
5919         sh_symbian_import_export_class.
5920         * config/sh/sh-protos.h: Fix names of exported symbian functions.
5921         * config/sh/symbian.c: Delete, moving code into...
5922         * config/sh/symbian-base.c: ... here
5923         * config/sh/symbian-c.c: ... and here
5924         * config/sh/symbian-cxx.c: ... and here.
5925
5926 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
5927
5928         PR target/22093
5929         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
5930         of plus RTX into register.
5931
5932 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5933
5934         * doc/install.texi: Linguistic and markup fixes.
5935         (Configuration) <--disable-cpp>: Remove description.
5936         <--enable-maintainer-mode>: Autotools files are affected, too.
5937         <--with-sysroot>: Improve description.
5938         (Building): Bump required GNU make version.
5939
5940 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
5941
5942         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
5943         (x86_64-*-*): Ditto.
5944
5945         * config/i386/fma4intrin.h: New file, provide common x86 compiler
5946         intrinisics for FMA4.
5947         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
5948         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
5949         Add FMA4 check and fma4intrin.h.
5950         * config/i386/i386-c.c(ix86_target_macros_internal): Check
5951         ISA_FLAG for FMA4.
5952         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
5953         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
5954         constant for FMA4 support.
5955         (UNSPEC_FMA4_FMADDSUB): Ditto.
5956         (UNSPEC_FMA4_FMSUBADD): Ditto.
5957         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
5958         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
5959         (ix86_expand_fma4_multiple_memory): Ditto.
5960         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
5961         (OPTION_MASK_ISA_FMA4_UNSET): New.
5962         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
5963         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
5964         (ix86_handle_option): Handle -mfma4.
5965         (isa_opts): Handle -mfma4.
5966         (enum pta_flags): Add PTA_FMA4.
5967         (override_options): Add FMA4 support.
5968         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
5969         (IX86_BUILTIN_VFMADDSD): Ditto.
5970         (IX86_BUILTIN_VFMADDPS): Ditto.
5971         (IX86_BUILTIN_VFMADDPD): Ditto.
5972         (IX86_BUILTIN_VFMSUBSS): Ditto.
5973         (IX86_BUILTIN_VFMSUBSD): Ditto.
5974         (IX86_BUILTIN_VFMSUBPS): Ditto.
5975         (IX86_BUILTIN_VFMSUBPD): Ditto.
5976         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
5977         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
5978         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
5979         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
5980         (IX86_BUILTIN_VFNMADDSS): Ditto.
5981         (IX86_BUILTIN_VFNMADDSD): Ditto.
5982         (IX86_BUILTIN_VFNMADDPS): Ditto.
5983         (IX86_BUILTIN_VFNMADDPD): Ditto.
5984         (IX86_BUILTIN_VFNMSUBSS): Ditto.
5985         (IX86_BUILTIN_VFNMSUBSD): Ditto.
5986         (IX86_BUILTIN_VFNMSUBPS): Ditto.
5987         (IX86_BUILTIN_VFNMSUBPD): Ditto.
5988         (IX86_BUILTIN_VFMADDPS256): Ditto.
5989         (IX86_BUILTIN_VFMADDPD256): Ditto.
5990         (IX86_BUILTIN_VFMSUBPS256): Ditto.
5991         (IX86_BUILTIN_VFMSUBPD256): Ditto.
5992         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
5993         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
5994         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
5995         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
5996         (IX86_BUILTIN_VFNMADDPS256): Ditto.
5997         (IX86_BUILTIN_VFNMADDPD256): Ditto.
5998         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
5999         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
6000         (enum multi_arg_type): New enum for describing the various FMA4
6001         intrinsic argument types.
6002         (bdesc_multi_arg): New table for FMA4 intrinsics.
6003         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
6004         (ix86_expand_multi_arg_builtin): New function for creating FMA4
6005         intrinsics.
6006         (ix86_expand_builtin): Add FMA4 intrinsic support.
6007         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
6008         operand instructions.
6009         (ix86_expand_fma4_multiple_memory): New function to split the
6010         second memory reference from FMA4 instructions.
6011         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
6012         (ssemodesuffixf2s): Ditto.
6013         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
6014         instructions.
6015         (fma4_fmsub<mode>4): Ditto.
6016         (fma4_fnmadd<mode>4): Ditto.
6017         (fma4_fnmsub<mode>4): Ditto.
6018         (fma4_vmfmadd<mode>4): Ditto.
6019         (fma4_vmfmsub<mode>4): Ditto.
6020         (fma4_vmfnmadd<mode>4): Ditto.
6021         (fma4_vmfnmsub<mode>4): Ditto.
6022         (fma4_fmadd<mode>4256): Ditto.
6023         (fma4_fmsub<mode>4256): Ditto.
6024         (fma4_fnmadd<mode>4256): Ditto.
6025         (fma4_fnmsub<mode>4256): Ditto.
6026         (fma4_fmaddsubv8sf4): Ditto.
6027         (fma4_fmaddsubv4sf4): Ditto.
6028         (fma4_fmaddsubv4df4): Ditto.
6029         (fma4_fmaddsubv2df4): Ditto.
6030         (fma4_fmsubaddv8sf4): Ditto.
6031         (fma4_fmsubaddv4sf4): Ditto.
6032         (fma4_fmsubaddv4df4): Ditto.
6033         (fma4_fmsubaddv2df4): Ditto.
6034         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
6035         instructions for intrinsics.
6036         (fma4i_fmsub<mode>4): Ditto.
6037         (fma4i_fnmadd<mode>4): Ditto.
6038         (fma4i_fnmsub<mode>4): Ditto.
6039         (fma4i_vmfmadd<mode>4): Ditto.
6040         (fma4i_vmfmsub<mode>4): Ditto.
6041         (fma4i_vmfnmadd<mode>4): Ditto.
6042         (fma4i_vmfnmsub<mode>4): Ditto.
6043         (fma4i_fmadd<mode>4256): Ditto.
6044         (fma4i_fmsub<mode>4256): Ditto.
6045         (fma4i_fnmadd<mode>4256): Ditto.
6046         (fma4i_fnmsub<mode>4256): Ditto.
6047         (fma4i_fmaddsubv8sf4): Ditto.
6048         (fma4i_fmaddsubv4sf4): Ditto.
6049         (fma4i_fmaddsubv4df4): Ditto.
6050         (fma4i_fmaddsubv2df4): Ditto.
6051         (fma4i_fmsubaddv8sf4): Ditto.
6052         (fma4i_fmsubaddv4sf4): Ditto.
6053         (fma4i_fmsubaddv4df4): Ditto.
6054         (fma4i_fmsubaddv2df4): Ditto.
6055
6056         * doc/invoke.texi (-mfma4): Add documentation.
6057         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
6058
6059 2009-09-29  Richard Henderson  <rth@redhat.com>
6060
6061         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
6062         an edge to the new destination block.
6063
6064 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6065
6066         PR target/41393
6067         * pa.c (hppa_profile_hook): Use
6068         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
6069
6070 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
6071             Alexander Monakov  <amonakov@ispras.ru>
6072
6073         PR target/41365
6074         * config/ia64/predicates.md (not_postinc_destination_operand): New.
6075         (not_postinc_memory_operand): New.
6076         (not_postinc_move_operand): New.
6077         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
6078         (*cmovsi_internal): Ditto.
6079
6080 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
6081
6082         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
6083         restrict issue_rate in first pass when scheduling for register
6084         pressure.
6085
6086 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
6087             Rafael Avila de Espindola  <espindola@google.com>
6088
6089         * gengtype.c (plugin_output): New.
6090         (get_output_file_with_visibility): Return plugin_output for plugins.
6091         (main): Parse and use the -P option.
6092         * gty.texi: Update the command line format.
6093
6094 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
6095
6096         PR debug/41438
6097         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
6098         functions.
6099         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
6100         out if !const_ok_for_output.
6101
6102         PR debug/41474
6103         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
6104         case VAR_LOCATION>: Remove gcc_unreachable ().
6105
6106 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
6107
6108         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
6109         (x86_64-*-*): Ditto.
6110         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
6111         back to smmintrin.h.
6112         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
6113         * config/i386/x86intrin.h: Remove SSE5.
6114         * config/i386/mmintrin-common.h: Delete file.
6115         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
6116
6117 2009-09-29  Richard Guenther  <rguenther@suse.de>
6118
6119         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
6120         resulting from stack temporaries on STRICT_ALIGNMENT targets.
6121
6122 2009-09-29  Nick Clifton  <nickc@redhat.com>
6123
6124         * function.c (current_function_name): If there is no current
6125         function just return "<none>".
6126
6127 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
6128
6129         * tree-pass.h (register_pass_info): New structure.
6130         (pass_positioning_ops): Move enum from gcc-plugin.h.
6131         (register_pass): New function.
6132         * gcc-plugin.h (plugin_pass): Delete structure.
6133         (pass_positioning_ops): Delete enum.
6134         * plugin.c (regsiter_pass): Delete function.
6135         (position_pass): Delete function.
6136         (added_pass_nodes): Delete variable.
6137         (prev_added_pass_nodes): Delete variable.
6138         (pass_list_node): Delete structure.
6139         * passes.c (make_pass_instance): New function.
6140         (next_pass_1): Change to call make_pass_instance.
6141         (pass_list_node): Move structure from gcc-plugin.h.
6142         (added_pass_nodes): Move variable from plugin.c.
6143         (prev_added_pass_nodes): Move variable from plugin.c.
6144         (position_pass): New function.
6145         (register_pass): New function.
6146
6147 2009-09-28  Easwaran Raman  <eraman@google.com>
6148
6149         * ifcvt.c (noce_try_abs): Recognize pattern and call
6150         expand_one_cmpl_abs_nojump.
6151         * optabs.c (expand_one_cmpl_abs_nojump): New function.
6152         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
6153
6154 2009-09-28  Ian Lance Taylor  <iant@google.com>
6155
6156         PR middle-end/40500
6157         * c-opts.c (c_common_handle_option): Don't set
6158         warn_jump_misses_init for -Wall.
6159         * doc/invoke.texi (Warning Options): Update documentation.
6160
6161 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6162
6163         * Makefile.in ($(out_object_file)): Depend on
6164         gt-$(basename $(notdir $(out_file))).h.
6165
6166 2009-09-28  Richard Henderson  <rth@redhat.com>
6167
6168         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
6169         * except.c (gen_eh_region): Set it.
6170         (duplicate_eh_regions_1): Copy it.
6171         * tree-eh.c (lower_resx): Use it to determine which function
6172         to call to resume.
6173
6174         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
6175         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
6176         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
6177         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
6178         BUILT_IN_CXA_END_CLEANUP if necessary.
6179
6180         * c-common.c (c_define_builtins): Update call to
6181         build_common_builtin_nodes.
6182
6183 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6184
6185         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
6186
6187 2009-09-28  Michael Matz  <matz@suse.de>
6188
6189         * builtins.c (interclass_mathfn_icode): New helper.
6190         (expand_builtin_interclass_mathfn): Use it here, and split folding
6191         into ...
6192         (fold_builtin_interclass_mathfn): ... this new folder.
6193         (build_call_nofold_loc): New static helper.
6194         (build_call_nofold): New wrapper macro for above.
6195         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
6196         (expand_builtin_pow): Ditto.
6197         (expand_builtin_memset_args): Ditto.
6198         (expand_builtin_printf): Ditto.
6199         (expand_builtin_fprintf): Ditto.
6200         (expand_builtin_sprintf): Ditto.
6201         (expand_builtin_memory_chk): Ditto.
6202         (expand_builtin_mempcpy_args): Ditto and don't call folders.
6203         (expand_builtin_stpcpy): Ditto.
6204         (expand_builtin_strcmp): Ditto.
6205         (expand_builtin_strncmp): Ditto.
6206         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
6207         (expand_builtin_strcpy_args): Don't call folders.
6208         (expand_builtin_memcmp): Ditto.
6209         (expand_builtin_strncpy): Ditto, and use target.
6210         (expand_builtin_memcpy): Ditto.
6211         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
6212         expand_builtin_strpbrk, expand_builtin_memmove,
6213         expand_builtin_memmove_args, expand_builtin_bcopy,
6214         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
6215         expand_builtin_strspn, expand_builtin_strcspn,
6216         expand_builtin_fputs): Remove these.
6217         (expand_builtin): Don't call the above, change calls to other
6218         expanders that changed prototype.
6219         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
6220         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
6221         fold_builtin_interclass_mathfn.
6222         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
6223         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
6224
6225         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
6226         * passes.c (init_optimization_passes): Move pass_fold_builtins
6227         after last phiopt pass.
6228         * tree-inline.c (fold_marked_statements): When folding builtins
6229         iterate over all instruction potentially generated.
6230         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
6231         earlier.
6232         (fold_gimple_call): Use it to always fold calls (into potentially
6233         multiple instructions).
6234         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
6235         calls into zero at this time.
6236         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
6237         statements generated by builtin folding.
6238
6239 2009-09-28  Nick Clifton  <nickc@redhat.com>
6240
6241         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
6242
6243 2009-09-28  Duncan Sands  <baldrick@free.fr>
6244
6245         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
6246         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
6247         (register_callback): Dispatch it.
6248         (invoke_plugin_callbacks): Incorporate in sanity check.
6249         * ggc.h (ggc_register_cache_tab): Add declaration.
6250         * ggc-common.c (ggc_register_root_tab): Simplify.
6251         (const_ggc_cache_tab_t): New typedef.
6252         (extra_cache_vec): New vector of dynamically added cache tables.
6253         (ggc_register_cache_tab): New function.
6254         (ggc_scan_cache_tab): New function.
6255         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
6256         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
6257
6258 2009-09-27  Richard Henderson  <rth@redhat.com>
6259
6260         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
6261         which we remove __builtin_stack_restore.
6262
6263 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
6264
6265         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
6266         to test for GRD_INVARIANT.
6267         (simple_rhs_p): Anything that's function_invariant_p is fine.
6268
6269 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
6270
6271         * gengtype.c (main): Use plunge_files instead of plugin_output.
6272
6273 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
6274             Rafael Avila de Espindola  <espindola@google.com>
6275
6276         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
6277         Don't print pch related info if it is false.
6278         (main): Don't print pch info in plugin mode.
6279
6280 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
6281
6282         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
6283         with dw_val_class_const_double.
6284         (struct dw_val_struct): Replace val_long_long with val_double and
6285         adjust for above change.
6286         (output_loc_operands): Likewise.
6287         (add_AT_long_long): Rename into...
6288         (add_AT_double): ...this.
6289         (print_die): Replace dw_val_class_long_long with
6290         dw_val_class_const_double and adjust.
6291         (attr_checksum): Likewise.
6292         (same_dw_val_p): Likewise.
6293         (size_of_die): Likewise.
6294         (value_format): Likewise.
6295         (output_die): Likewise.
6296         (loc_descriptor) <CONST_DOUBLE>: Likewise.
6297         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
6298         instead of add_AT_long_long.
6299         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
6300         value with the precision of its type.
6301
6302 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
6303
6304         PR c/41476
6305         * c-typeck.c (build_conditional_expr): Use the readonly and
6306         volatile flags of the operand types, not of the operands itself.
6307
6308 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
6309
6310         * collect2.c (main): Look for -brtl before adding libraries.
6311
6312 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
6313
6314         * config.gcc: Update OpenBSD targets.
6315         * config/openbsd-stdint.h: New file.
6316         * config/openbsd-libpthread.h: New file.
6317         * config/openbsd.h: Update and break out LIB_SPEC definition.
6318         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
6319         * config/i386/openbsdelf.h: Correct types.
6320         * config/m68k/openbsd.h: Likewise.
6321         * config/mips/openbsd.h: Likewise.
6322         * config/vax/openbsd.h: Likewise.
6323
6324 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
6325
6326         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
6327         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
6328         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
6329         of the length and zero.
6330
6331 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6332
6333         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
6334         (FLAGS_H): Add options.h $(REAL_H).
6335         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
6336         (TREE_VECTORIZER_H): New.
6337         (EBITMAP_H): Renamed from EBIMAP_H.
6338         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
6339         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
6340         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
6341         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
6342         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
6343         (graphite-clast-to-gimple.o, graphite-dependences.o)
6344         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
6345         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
6346         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
6347         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
6348         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
6349         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
6350         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
6351         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
6352         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
6353         updated and fixed as per above changes and per
6354         check_makefile_deps.sh output.
6355
6356         PR bootstrap/40928
6357         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
6358         * configure: Regenerate.
6359
6360 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6361
6362         * doc/install.texi: Update minimum MPC version to 0.7.
6363
6364 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
6365
6366         * doc/install.texi (Binaries): Remove reference to the binary
6367         distribution CD-ROM from the FSF.
6368
6369 2009-09-26  Michael Matz  <matz@suse.de>
6370
6371         PR lto/40758
6372         PR middle-end/41470
6373         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
6374         that are mentioned in the body.
6375
6376 2009-09-26  Michael Matz  <matz@suse.de>
6377
6378         PR tree-optimization/41454
6379         * tree-ssa-dom (stmts_to_rescan): Remove variable.
6380         (tree_ssa_dominator_optimize): Don't allocate and free it.
6381         (dom_opt_leave_block): Don't iterate over it.
6382         (eliminate_redundant_computations): Don't return a value.
6383         (cprop_operand, cprop_into_stmt): Ditto.
6384         (optimize_stmt): Don't defer updating stmts.
6385
6386 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
6387
6388         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
6389         generic_parameter_die, template_parameter_pack_die,
6390         gen_formal_parameter_die, gen_subprogram_die): Adjust after
6391         renaming DW_TAG_formal_parameter_pack and
6392         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
6393         and DW_TAG_GNU_template_parameter_pack.
6394
6395 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
6396
6397         * config/v850/v850.h (FUNCTION_VALUE): Remove.
6398         * config/v850/v850.c (v850_function_value): New function.
6399         (TARGET_FUNCTION_VALUE): Define.
6400
6401 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
6402
6403         * tree-vect-stmts.c (vectorizable_call): Call
6404         mark_symbols_for_renaming after vect_finish_stmt_generation.
6405
6406         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
6407         to loc_descriptor_from_tree.
6408         (add_location_or_const_value_attribute): Pass 0 instead of 2
6409         for decl_by_reference_p decls.
6410
6411 2009-09-25  Richard Guenther  <rguenther@suse.de>
6412
6413         PR middle-end/41463
6414         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
6415         arrays again.
6416
6417 2009-09-25  Ben Elliston  <bje@au.ibm.com>
6418
6419         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
6420         after `power7'.
6421
6422 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
6423
6424         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
6425         form of instruction.
6426
6427 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6428
6429         PR middle-end/41435
6430         * fold-const.c (const_binop): Handle complex int division.
6431         * tree-complex.c (expand_complex_div_straight,
6432         expand_complex_div_wide): Update comments.
6433
6434 2009-09-24  DJ Delorie  <dj@redhat.com>
6435
6436         PR target/41456
6437         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
6438         (reg_class): Likewise.
6439         (REG_CLASS_NAMES): Likewise.
6440         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
6441         (m32c_override_options): Disable -fivopts for M32C.
6442
6443 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
6444
6445         * config/rs6000/predicates.md (indexed_or_indirect_operand):
6446         Delete VSX load/store with update support.
6447         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
6448         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
6449         (vsx_movti): Ditto.
6450         (VSX_U): Delete.
6451         (VSbit): Ditto.
6452         (VStype_load_update): Ditto.
6453         (VStype_store_update): Ditto.
6454         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
6455         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
6456
6457         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
6458         load/store with update builtins.
6459
6460 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
6461
6462         * libgcc2.c (L_trampoline): Prototype for getpagesize
6463         and mprotect in WINNT case.
6464
6465 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
6466
6467         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
6468         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
6469         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
6470         'outgoing' argument.
6471         (TARGET_FUNCTION_VALUE): Define.
6472
6473 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
6474
6475         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
6476
6477 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
6478
6479         PR bootstrap/41405
6480         * common.opt: Initialize dwarf_strict to -1.
6481         * toplev.c (process_options): Catch unset dwarf_strict
6482         and set to 0 for all targets not overriding.
6483         * config/darwin.c (darwin_override_options): Catch unset
6484         dwarf_strict and override to 1.
6485
6486 2009-09-24  Jeff Law  <law@redhat.com>
6487
6488         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
6489
6490 2009-09-24  Richard Guenther  <rguenther@suse.de>
6491
6492         PR tree-optimization/36143
6493         PR tree-optimization/38747
6494         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
6495         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
6496
6497 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
6498
6499         PR bootstrap/41457
6500         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
6501         return false instead of gcc_unreachable ().  For CONST return the
6502         value returned by recursive call instead of always returning true.
6503         (tree_add_const_value_attribute): Return the value returned by
6504         add_const_value_attribute instead of always returning true if rtl
6505         is non-NULL.
6506
6507 2009-09-23  Justin Seyster  <jrseys@gmail.com>
6508
6509         * Makefile.in (PLUGIN_HEADERS): Include real.h.
6510
6511 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
6512
6513         * cgraphunit.c (cgraph_lower_function): Revert last change.
6514         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
6515         instead of DECL_NO_STATIC_CHAIN.
6516         * tree-cfg.c (verify_gimple_call): Likewise.
6517         * tree-nested.c (get_chain_decl, get_chain_field,
6518         convert_tramp_reference_op, convert_gimple_call): Likewise.
6519         (convert_all_function_calls): Likewise.  Always set or clear
6520         DECL_STATIC_CHAIN initially, for !n->outer clear it.
6521         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
6522         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
6523         if nested.
6524         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
6525         DECL_NO_STATIC_CHAIN.
6526         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
6527         instead of DECL_NO_STATIC_CHAIN.
6528         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
6529         decl_function_context.
6530         * varasm.c (initializer_constant_valid_p): Likewise.
6531         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
6532         (DECL_STATIC_CHAIN): ... this.
6533         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
6534         instead of DECL_NO_STATIC_CHAIN.
6535
6536 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
6537             Rafael Avila de Espindola  <espindola@google.com>
6538
6539         * gengtype.c (nb_plugin_files): Make it unsigned to match
6540         num_gt_files. Adjust other variables to avoid warnings.
6541         (main): Allocate an all zero lang_bitmap before each plugin file name
6542         to match regular file names.
6543
6544 2009-09-23  Richard Henderson  <rth@redhat.com>
6545
6546         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
6547         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
6548         static chain passed in memory.
6549         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
6550         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
6551         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
6552         STATIC_CHAIN_REGNUM defined.
6553
6554         * config/picochip/picochip-protos.h: s/class/klass/.
6555         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
6556         (picochip_static_chain): New.
6557         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
6558         (STATIC_CHAIN_INCOMING): Remove.
6559
6560         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
6561         (xtensa_static_chain): New.
6562         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
6563         (STATIC_CHAIN_INCOMING): Remove.
6564
6565 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
6566
6567         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
6568         * config/pa/pa-protos.h (function_value): Remove.
6569         * config/pa/pa.c (pa_function_value): Rename from function_value.
6570         Make static, add 'outgoing' argument.
6571         (TARGET_FUNCTION_VALUE): Define.
6572
6573 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
6574
6575         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
6576         instead of cfun->machine->is_leaf.
6577         * config/avr/avr.h (machine_function): Remove is_leaf field.
6578
6579 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
6580
6581         PR debug/41439
6582         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
6583         DW_OP_piece after DW_OP_stack_value, adjust size calculations
6584         for it, when DW_OP_stack_value and DW_OP_implicit_value has
6585         the same size, prefer DW_OP_stack_value.
6586         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
6587         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
6588
6589 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
6590
6591         PR debug/41353
6592         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
6593
6594 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
6595
6596         PR debug/41248
6597         * cfgexpand.c (convert_debug_memory_address): New.
6598         (expand_debug_expr): Convert base address and offset to the same
6599         mode.  Use it to convert addresses to other modes.  Accept
6600         ptr_mode addresses.
6601
6602 2009-09-23  Dodji Seketeli <dodji@redhat.com>
6603
6604         PR debug/41065
6605         * function.h (types_used_by_vars_hash): Declare new hash table.
6606         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
6607         equality and hash function for the hash table.
6608         (types_used_by_cur_var_decl): Declare a new global chained list.
6609         (types_used_by_var_decl_insert): Declare new function.
6610         * function.c (types_used_by_vars_hash): Define the hashtable ...
6611         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
6612         its equality and hash functions.
6613         (hash_types_used_by_vars_entry): New hash helper.
6614         (types_used_by_cur_var_decl): Define the global chained list.
6615         (used_types_insert): Update the list of types used by the global
6616         variable being parsed.
6617         (types_used_by_var_decl_insert): Define new function.
6618         * c-common.h (record_types_used_by_current_var_decl): Declare ...
6619         * c-common.c (record_types_used_by_current_var_decl): ... new
6620         function.
6621         * c-decl.c (finish_decl): Record the types used by the global
6622         variable declaration we've just parsed.
6623         * dwarf2out.c (premark_used_types): Insert a new line between
6624         comment and function.
6625         (premark_used_types_helper): Fix comment.
6626         (premark_types_used_by_global_vars_helper,
6627         premark_types_used_by_global_vars): New functions.
6628         (prune_unused_types): Do not prune types used by global variables.
6629
6630 2009-09-23  Richard Guenther  <rguenther@suse.de>
6631
6632         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
6633         produced for bigendian targets with promoted subregs.
6634
6635 2009-09-23  Richard Guenther  <rguenther@suse.de>
6636
6637         * value-prof.c (gimple_ic): Purge old EH edges only after building
6638         the new ones.
6639
6640 2009-09-23  Nick Clifton  <nickc@redhat.com>
6641
6642         * config/arc/arc.c (arc_trampoline_init): Fix typo.
6643
6644 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
6645
6646         PR bootstrap/41405
6647         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
6648
6649         PR bootstrap/41436
6650         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
6651         on non-nested functions.
6652
6653 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
6654             Jan Hubicka  <jh@suse.cz>
6655
6656         * dwarf2out.c (loc_list_plus_const): Only define if
6657         DWARF2_DEBUGGING_INFO.
6658         (address_of_int_loc_descriptor): Likewise.
6659
6660         PR debug/41411
6661         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
6662
6663 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
6664
6665         PR c/39779
6666         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
6667         constant is more than zero.
6668
6669 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
6670
6671         PR target/40473
6672         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
6673         call final to emit non-scheduled prologue, instead insert at entry.
6674
6675 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
6676             Joseph S. Myers  <joseph@codesourcery.com>
6677
6678         * doc/install.texi (*-*-freebsd*): Add proper format codes.
6679
6680 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
6681             Rafael Avila de Espindola  <espindola@google.com>
6682
6683         * gengtype.c (is_file_equal): New function.
6684         (close_output_files): Use is_file_equal. Free of->buf.
6685
6686 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
6687             Rafael Avila de Espindola  <espindola@google.com>
6688
6689         * gengtype.c (write_types, write_local): Add the output_header
6690         argument. Update all callers.
6691
6692 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
6693
6694         * dwarf2out.c (template_parameter_pack_die,
6695         gen_formal_parameter_pack_die ): New functions.
6696         (make_ith_pack_parameter_name): Remove this function.
6697         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
6698         DW_TAG_formal_parameter_pack.
6699         (gen_generic_params_dies): Represent each template parameter pack
6700         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
6701         represented by usual DW_TAG_template_*_parameter DIEs that are
6702         children of the DW_TAG_template_parameter_pack element DIE.
6703         (generic_parameter_die): This doesn't deal with parameter pack
6704         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
6705         of parameter pack DIEs.
6706         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
6707         in certain cases, e.g. for pack elements.
6708         (gen_formal_types_die, gen_decl_die): Adjust usage of
6709         gen_formal_parameter_die.
6710         (gen_subprogram_die): Represent each function parameter pack by a
6711         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
6712         represented by usual DW_TAG_formal_parameter DIEs that are children
6713         of the DW_TAG_formal_parameter_pack DIE. Remove references to
6714         ____builtin_va_alist decls as no part of the compiler uses those
6715         anymore.
6716         * langhooks.h (struct lang_hooks_for_decls): Add
6717         function_parm_expanded_from_pack_p, get_generic_function_decl
6718         and function_parameter_pack_p hooks.  Fix comment for
6719         get_innermost_generic_parms hook.
6720         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
6721         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
6722         macros and use them to initialize lang_hook.
6723
6724 2009-09-22  Richard Henderson  <rth@redhat.com>
6725
6726         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
6727         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
6728         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
6729         on TRAMPOLINE_TEMPLATE.
6730         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
6731         TRAMPOLINE_ADJUST_ADDRESS.
6732         * targhooks.c (default_asm_trampoline_template): Remove.
6733         (default_trampoline_adjust_address): Remove.
6734         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
6735         * targhooks.h: Update decls.
6736
6737 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6738
6739         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
6740         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
6741         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
6742
6743 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
6744
6745         PR debug/41295
6746         * reload1.c (reload): Reset debug insns with pseudos without
6747         equivalences.
6748
6749 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
6750
6751         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
6752         unconditional true for decimal float modes.
6753         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
6754         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
6755
6756 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
6757
6758         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
6759         Enable a new case for __FreeBSD__ >= 7.
6760         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
6761         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
6762         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
6763         and USE_LD_AS_NEEDED.
6764
6765         * doc/install.texi (*-*-freebsd*): Update target information.
6766
6767 2009-09-22  Richard Guenther  <rguenther@suse.de>
6768
6769         PR middle-end/41395
6770         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
6771         arrays really properly.
6772
6773 2009-09-22  Richard Henderson  <rth@redhat.com>
6774
6775         PR target/41246
6776         * target.h (struct gcc_target): Add asm_out.trampoline_template,
6777         calls.static_chain, calls.trampoline_init,
6778         calls.trampoline_adjust_address.
6779         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6780         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
6781         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6782         * builtins.c (expand_builtin_setjmp_receiver): Use
6783         targetm.calls.static_chain; only clobber registers.
6784         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
6785         set up memory attributes properly for the trampoline block.
6786         (expand_builtin_adjust_trampoline): Use
6787         targetm.calls.trampoline_adjust_address.
6788         * calls.c (prepare_call_address): Add fndecl argument.  Use
6789         targetm.calls.static_chain.
6790         * df-scan.c (df_need_static_chain_reg): Remove.
6791         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
6792         consolodate static chain handling.
6793         * doc/tm.texi: Document new hooks.
6794         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
6795         (init_emit_regs): Don't initialize them.
6796         * expr.h (prepare_call_address): Update decl.
6797         * final.c (profile_function): Use targetm.calls.static_chain.
6798         * function.c (expand_function_start): Likewise.
6799         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
6800         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
6801         only clobber registers.
6802         * targhooks.c (default_static_chain): New.
6803         (default_asm_trampoline_template, default_trampoline_init): New.
6804         (default_trampoline_adjust_address): New.
6805         * targhooks.h: Declare them.
6806         * varasm.c (assemble_trampoline_template): Use
6807         targetm.asm_out.trampoline_template.  Make the memory block const
6808         and set its size.
6809
6810         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
6811         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
6812         differences into the TARGET_ABI_OPEN_VMS code block.
6813         (TARGET_TRAMPOLINE_INIT): New.
6814         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
6815         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
6816         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
6817         (INITIALIZE_TRAMPOLINE): Remove.
6818
6819         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
6820         (TRAMPOLINE_TEMPLATE): Merge with ...
6821         (INITIALIZE_TRAMPOLINE): ... this and move ...
6822         * config/arc/arc.c (arc_trampoline_init): ... here.
6823         (TARGET_TRAMPOLINE_INIT): New.
6824
6825         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6826         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6827         (arm_asm_trampoline_template): New.
6828         (arm_trampoline_init, arm_trampoline_adjust_address): New.
6829         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
6830         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
6831         code to arm_asm_trampoline_template.
6832         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
6833         arm_trampoline_adjust_address.
6834         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
6835         adjust for target hook parameters.
6836
6837         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
6838         Remove.
6839
6840         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
6841         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
6842         (bfin_trampoline_init): Rename from initialize_trampoline;
6843         make static; update for target hook parameters.
6844         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
6845         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
6846         bfin_asm_trampoline_template.
6847         (INITIALIZE_TRAMPOLINE): Remove.
6848
6849         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6850         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
6851         cris_trampoline_init): New.
6852         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
6853         cris_asm_trampoline_template.
6854         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
6855         adjust for target hook parameters.
6856
6857         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
6858
6859         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6860         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
6861         fr30_trampoline_init): New.
6862         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
6863         fr30_asm_trampoline_template.
6864         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
6865         adjust for target hook parameters.
6866
6867         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
6868         (frv_trampoline_init): Rename from frv_initialize_trampoline;
6869         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
6870         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
6871         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
6872
6873         * config/h8300/h8300.c (h8300_trampoline_init): New.
6874         (TARGET_TRAMPOLINE_INIT): New.
6875         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
6876         to h8300_trampoline_init and adjust for hook parameters.
6877
6878         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
6879         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
6880         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
6881         make static; adjust for hook parameters.
6882         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
6883
6884         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6885         (TARGET_TRAMPOLINE_INIT): New.
6886         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
6887         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
6888         iq2000_asm_trampoline_template.
6889         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
6890         (TRAMPOLINE_CODE_SIZE): New.
6891         (TRAMPOLINE_SIZE): Use it.
6892         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
6893
6894         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
6895         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
6896         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
6897         adjust for hook parameters.
6898         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
6899
6900         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
6901         (m32r_trampoline_init): New.
6902         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
6903         m32r_trampoline_init.
6904
6905         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
6906         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
6907         make static; update for hook parameters.
6908         * config/m68hc11/m68hc11-protos.h: Update.
6909         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
6910
6911         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6912         (TARGET_TRAMPOLINE_INIT): New.
6913         (mcore_function_value): Fix typo.
6914         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
6915         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
6916         to mcore_asm_trampoline_template.
6917         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
6918
6919         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
6920         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
6921         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
6922         update for hook parameters.
6923         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
6924
6925         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6926         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6927         mips_trampoline_init): New.
6928         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
6929         mips_asm_trampoline_template.
6930         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
6931         update for hook parameters.
6932
6933         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6934         (TARGET_TRAMPOLINE_INIT): New.
6935         (mmix_trampoline_size): Remove.
6936         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
6937         make static.  Remove out-of-date tetra vs octa comment.
6938         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
6939         make static; update for hook parameters.
6940         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
6941         (INITIALIZE_TRAMPOLINE): Remove.
6942         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
6943         (TRAMPOLINE_ALIGNMENT): New.
6944         * gcc/config/mmix/mmix-protos.h: Update.
6945
6946         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6947         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6948         mn10300_trampoline_init): New.
6949         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
6950         mn10300_asm_trampoline_template.
6951         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
6952
6953         * config/moxie/moxie.c (moxie_static_chain,
6954         moxie_asm_trampoline_template, moxie_trampoline_init,
6955         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
6956         TARGET_TRAMPOLINE_INIT): New.
6957         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
6958         moxie_trampoline_init.
6959         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
6960         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
6961
6962         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6963         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6964         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
6965         pa_trampoline_adjust_address): New.
6966         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
6967         pa_asm_trampoline_template.
6968         (TRAMPOLINE_ALIGNMENT): New.
6969         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
6970         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
6971         adjust for hook parameters.
6972         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
6973
6974         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
6975         (TARGET_TRAMPOLINE_INIT): New.
6976         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
6977         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
6978
6979         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
6980
6981         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
6982         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
6983         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
6984         make static; adjust parameters for the hook.
6985         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
6986
6987         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
6988         s390_trampoline_template; make static.
6989         (s390_trampoline_init): Rename from s390_initialize_trampoline;
6990         make static; adjust for target hook.
6991         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
6992         * config/s390/s390-protos.h: Remove trampoline decls.
6993         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
6994         (TRAMPOLINE_TEMPLATE): Remove.
6995         (TRAMPOLINE_ALIGNMENT): New.
6996
6997         * config/score/score-protos.h (score_initialize_trampoline): Remove.
6998         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6999         (TARGET_TRAMPOLINE_INIT): New.
7000         (score_asm_trampoline_template): New.
7001         (score_trampoline_init): Rename from score_initialize_trampoline;
7002         make static; adjust for hook parameters.
7003         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
7004         score[37]_asm_trampoline_template.
7005         (INITIALIZE_TRAMPOLINE): Remove.
7006         * config/score/score3.c (score3_asm_trampoline_template): New.
7007         (score3_trampoline_init): Rename from score3_initialize_trampoline;
7008         adjust for target hook.
7009         * config/score/score7.c (score7_asm_trampoline_template): New.
7010         (score7_trampoline_init): Rename from score7_initialize_trampoline;
7011         adjust for target hook.
7012         * config/score/score3.h, config/score/score7.h: Update.
7013
7014         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
7015         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
7016         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7017         (sh_trampoline_init): Rename from sh_initialize_trampoline;
7018         make static; adjust for target hook parameters.
7019         (sh_trampoline_adjust_address): New.
7020         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
7021         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
7022
7023         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
7024         (sparc32_initialize_trampoline): Rename from
7025         sparc_initialize_trampoline; make static; replace tramp parameter
7026         with m_tramp and update memory accesses.
7027         (sparc64_initialize_trampoline): Similarly.
7028         (sparc_trampoline_init): New.
7029         * config/sparc/sparc-protos.h: Remove trampoline decls.
7030         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
7031         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
7032
7033         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
7034         (array_to_constant): Make ARR parameter const.
7035         (spu_trampoline_init): Rename from spu_initialize_trampoline;
7036         make static; update for hook parameters.
7037         * config/spu/spu-protos.h: Update decls.
7038         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
7039
7040         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
7041         from xstormy16_initialize_trampoline; make static; update for
7042         hook parameters.
7043         (TARGET_TRAMPOLINE_INIT): New.
7044         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
7045
7046         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7047         (TARGET_TRAMPOLINE_INIT): New.
7048         (v850_can_eliminate): Make static.
7049         (v850_asm_trampoline_template, v850_trampoline_init): New.
7050         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
7051         v850_asm_trampoline_template.
7052         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
7053         and adjust for target hook parameters.
7054
7055         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7056         (TARGET_TRAMPOLINE_INIT): New.
7057         (vax_asm_trampoline_template, vax_trampoline_init): New.
7058         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
7059         vax_asm_trampoline_template.
7060         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
7061
7062         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7063         (TARGET_TRAMPOLINE_INIT): New.
7064         (xtensa_asm_trampoline_template): Rename from
7065         xtensa_trampoline_template; make static.
7066         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
7067         make static; update for hook parameters.
7068         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
7069         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
7070         (INITIALIZE_TRAMPOLINE): Remove.
7071
7072         * config/i386/i386.c (ix86_function_regparm): Do not issue an
7073         error for nested functions with regparm=3.
7074         (ix86_compute_frame_layout): Adjust frame pointer offset for
7075         ix86_static_chain_on_stack.
7076         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
7077         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
7078         don't reset to UNITS_PER_WORD.
7079         (ix86_emit_leave): Adjust ix86_cfa_state.
7080         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
7081         (ix86_static_chain): New.
7082         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
7083         make static; update for target hook parameters; use ix86_static_chain.
7084         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
7085         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
7086         (INITIALIZE_TRAMPOLINE): Remove.
7087         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
7088         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
7089         to the end.  Add static_chain_on_stack.
7090         (ix86_static_chain_on_stack): New.
7091
7092         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
7093         (m68k_output_mi_thunk): Don't use static_chain_rtx.
7094         (m68k_trampoline_init): New.
7095         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
7096         m68k_trampoline_init and adjust for hook parameters.
7097         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
7098         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
7099
7100 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
7101
7102         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
7103         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
7104
7105         * reload1.c (reload): Call wrap_constant when substituting
7106         reg for equiv inside of DEBUG_INSNs.
7107
7108         PR bootstrap/41405
7109         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
7110         add_call_src_coords_attributes, add_high_low_attributes,
7111         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
7112         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
7113         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
7114         when -gdwarf-2 -gstrict-dwarf.
7115         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
7116         -gdwarf-[23] -gstrict-dwarf.
7117         (address_of_int_loc_descriptor, loc_descriptor,
7118         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
7119         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
7120         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
7121
7122 2009-09-22  Richard Guenther  <rguenther@suse.de>
7123
7124         PR tree-optimization/41428
7125         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
7126         (ccp_finalize): Pass it to substitute_and_fold.
7127
7128 2009-09-22  Richard Guenther  <rguenther@suse.de>
7129
7130         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
7131         (substitute_and_fold): Adjust prototype.
7132         * tree-vrp.c (vrp_evaluate_conditional): Make static.
7133         (simplify_stmt_using_ranges): Likewise.
7134         (fold_predicate_in): Move here from tree-ssa-propagate.c.
7135         (vrp_fold_stmt): New function.
7136         (vrp_finalize): Pass it to substitute_and_fold.
7137         * tree-flow.h (vrp_evaluate_conditional): Remove.
7138         (simplify_stmt_using_ranges): Likewise.
7139         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
7140         * tree-ssa-copy.c (fini_copy_prop): Likewise.
7141         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
7142         member.
7143         (fold_predicate_in): Move to tree-vrp.c.
7144         (substitute_and_fold): Use the callback instead of calling into
7145         tree-vrp.c functions directly.
7146
7147 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
7148
7149         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
7150         comparison warning on rs6000.
7151
7152         PR middle-end/41429
7153         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
7154         GIMPLE_EH_MUST_NOT_THROW cleanup.
7155         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
7156
7157 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
7158
7159         PR middle-end/41260
7160         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
7161         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
7162         LIB_SPEC for darwin10 and later since it always uses the unwinder in
7163         libSystem which is derived from the gcc 4.2.1 unwinder.
7164
7165 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7166
7167         PR middle-end/41357
7168         * varasm.c (default_encode_section_info): Copy TLS model into
7169         sym_ref flags regardless of backend support for TLS, for all
7170         model types except TLS_MODEL_EMULATED.
7171
7172 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7173
7174         PR bootstrap/41404
7175         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
7176         we can handle it correctly.
7177
7178 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
7179
7180         * doc/install.texi (os2): Remove section.
7181
7182 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
7183
7184         * doc/standards.texi (Objective-C): Adjust two URLs.
7185
7186 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
7187
7188         * tree-tailcall.c (process_assignment): Don't check if a
7189         multiplication or an addition are already present.
7190         (find_tail_calls): Combine multiple additions and multiplications.
7191         (adjust_accumulator_values): Emit accumulators.
7192
7193 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
7194
7195         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
7196         xmm register restore.
7197
7198 2009-09-21  Jan Hubicka  <jh@suse.cz>
7199
7200         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
7201         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
7202         restore at the end.
7203
7204 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
7205
7206         * stor-layout.c (layout_type): Remove obsolete code.
7207
7208 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
7209
7210         PR middle-end/41395
7211         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
7212
7213 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7214
7215         PR middle-end/30789
7216         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
7217         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
7218         (fold_builtin_2, do_mpc_arg1): Update accordingly.
7219         * fold-const.c (const_binop): Likewise.
7220         * real.h (do_mpc_arg2): Update prototype.
7221
7222 2009-09-20  Jan Hubicka  <jh@suse.cz>
7223
7224         * dwarf2out.c (add_const_value_attribute): Return true if successful.
7225         (add_location_or_const_value_attribute): Rewrite using
7226         loc_list_from_tree.
7227         (tree_add_const_value_attribute): Return true if successful.
7228         (tree_add_const_value_attribute_for_decl): Likewise.
7229
7230         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
7231         (loc_descriptor): ... here;
7232         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7233         (cst_pool_loc_descr): Break out from ...; do not reffer constant
7234         pool items that was not marked for output.
7235         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
7236         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7237         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7238         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
7239         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
7240         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
7241         DW_OP_stack_value to get address of items that are not available
7242         as addresses.
7243         (dw_loc_list): Handle single element lists correctly.
7244
7245 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
7246             Pascal Obry  <obry@adacore.com>
7247
7248         * unwind-dw2-fde.c (classify_object_over_fdes):
7249         Cast the constant 1 to _Unwind_Ptr.
7250         (add_fdes): Likewise.
7251         (linear_search_fdes): Likewise.
7252
7253 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
7254
7255         * stor-layout.c (set_sizetype): Avoid useless type copy.
7256
7257 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
7258
7259         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
7260         feature check.
7261         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
7262         * configure, config.in: Regenerate.
7263         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
7264         DW_EH_PE_absptr.
7265         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
7266         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
7267         for global data if the output could be used in a shared library.
7268         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
7269         to 0 if TARGET_WRITABLE_EH_FRAME.
7270
7271 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
7272
7273         PR rtl-optimization/39886
7274         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
7275         just when insn is equal to BB_END (bb).
7276
7277 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
7278
7279         * config/mips/mips.opt (mrelax-pic-calls): New option.
7280         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
7281         the file.
7282         (mips_unspec_call): Change "unspec_call" expander into this.
7283         (mips_strip_unspec_call): New function.
7284         (mips_got_load): Call mips_unspec_call instead of
7285         gen_unspec_call<mode>.
7286         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
7287         MIPS_CALL.
7288         (mips_cfg_in_reorg): New function.
7289         (mips16_lay_out_constants): Use it to decide whether to call
7290         CFG-aware insn splitting.
7291         (r10k_insert_cache_barriers): Move CFG set-up code from here to
7292         mips_reorg.  Move DF set-up code from here ...
7293         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
7294         from here.
7295         (mips_reorg): Call mips_df_reorg instead of
7296         r10k_insert_cache_barriers.  Move CFG set-up code here from
7297         r10k_insert_cache_barriers.
7298         (mips_call_expr_from_insn): New function.
7299         (mips_pic_call_symbol_from_set): Likewise.
7300         (mips_find_pic_call_symbol): Likewise.
7301         (mips_annotate_pic_call_expr): Likewise.
7302         (mips_get_pic_call_symbol): Likewise.
7303         (mips_annotate_pic_calls): Likewise.
7304         (mips_override_options): Disable -mrelax-pic-calls unless PIC
7305         calls are used.
7306         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
7307         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
7308         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
7309         directive.
7310         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
7311         (unspec_call<mode>): Remove it.
7312         (sibcall_internal, sibcall_value_internal,
7313         sibcall_value_multiple_internal, call_internal, call_split,
7314         call_value_internal, call_value_split,
7315         call_value_multiple_internal, call_value_multiple_split): Pass
7316         SIZE_OPNO to MIPS_CALL.
7317         (call_internal_direct, call_direct_split,
7318         call_value_internal_direct, call_value_direct_split): Pass -1 as
7319         SIZE_OPNO to MIPS_CALL.
7320         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
7321         * configure: Regenerate.
7322         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
7323         and -mno-relax-pic-calls.
7324         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
7325
7326 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7327
7328         PR bootstrap/35619
7329         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
7330         in the directory this rule is called from, rather than the
7331         toplevel 'gcc' directory, to fix in-tree build.
7332
7333 2009-09-19  Chris Demetriou  <cgd@google.com>
7334
7335         PR preprocessor/28435:
7336         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
7337         to cpplib that the preprocessor output is needed.
7338
7339 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
7340
7341         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
7342         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
7343         *return_and_restore_fpregs_<mode>,
7344         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
7345
7346         PR bootstrap/41397
7347         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
7348         instead of assuming it has always a REG inside of it.
7349
7350 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
7351
7352         * config/freebsd.h: Update comment on types.
7353         (WINT_TYPE): Define.
7354
7355 2009-09-18  Jason Merrill  <jason@redhat.com>
7356
7357         * c.opt: Add -fno-deduce-init-list.
7358
7359 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
7360
7361         * value-prof.c (interesting_stringop_to_profile_p): Added output
7362         argument to indicate which parameter is the size parameter.
7363         * value-prof.c (gimple_stringop_fixed_value): Use
7364         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
7365         * value-prof.c (gimple_stringops_transform): Update call sites to
7366         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
7367
7368 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
7369
7370         PR target/38288
7371         From David Binderman <dcb314@hotmail.com>:
7372         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
7373         local variable f.  Remove stale comments.
7374         (ix86_compute_frame_layout): Remove useless local variable total_size.
7375         Remove #if 0'd code.
7376         (legitimate_address_p): Remove useless local variables
7377         reason_rtx and reason.
7378         (ix86_split_copysign_const): Remove useless local variable op1.
7379         (scale_counter): Remove useless local variable piece_size_mask.
7380
7381 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
7382
7383         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
7384         output decl.
7385
7386 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
7387
7388         PR target/40913
7389         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
7390
7391 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
7392
7393         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
7394         TYPE_STUB_DECL.
7395
7396 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
7397
7398         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
7399         DW_OP_implicit_value even without dwarf_version 4.
7400
7401 2009-09-17  Jan Hubicka  <jh@suse.cz>
7402
7403         * dwarf2out.c: Include tree-pass.h and gimple.h.
7404         (loc_list_plus_const): New function.
7405         (loc_descriptor_from_tree_1): Rename to ...
7406         (loc_descriptor_from_tree): ... remove original.
7407         (loc_list_from_tree): New function.
7408         (add_AT_location_description): Accept location list.
7409         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
7410         (concatn_mem_loc_descriptor): Remove.
7411         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
7412         returning NULL.
7413         (secname_for_decl): Move up.
7414         (hidden_reference_p): New function; break out from ...
7415         (loc_by_refernece): ... here; move up.
7416         (dw_loc_list): New function.
7417         (single_element_loc_list): New function.
7418         (single_element_loc_list_p): New function.
7419         (add_loc_descr_to_each): New function.
7420         (add_loc_list): New function.
7421         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
7422         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
7423         add diagnostics why expansion failed.
7424         (add_location_or_const_value_attribute): Support location lists.
7425         (add_bound_info): Likewise.
7426         (descr_info_loc): Update call of loc_descriptor_from_tree.
7427         (gen_variable_die): Work on location lists.
7428         * final.c (pass_final): Add dump file.
7429         * Makefile.in (dwarf2out.o): Add new dependencies.
7430
7431 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
7432
7433         PR c/41049
7434         * real.c decimal_from_integer, decimal_integer_string): New.
7435         (real_from_integer): Use them as special case for decimal float.
7436         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
7437         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
7438         Do not append zero after the decimal point in string to convert.
7439
7440 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
7441
7442         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
7443         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
7444
7445 2009-09-17  Martin Jambor  <mjambor@suse.cz>
7446
7447         * common.opt (fipa-sra): New switch.
7448         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
7449         * timevar.def (TV_IPA_SRA): New timevar.
7450         * params.def (ipa-sra-ptr-growth-factor): New parameter.
7451         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
7452         * tree-sra.c: Include cgraph.c.
7453         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
7454         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
7455         and grp_not_necessarilly_dereferenced.
7456         (func_param_count): New variable.
7457         (encountered_apply_args): New variable.
7458         (bb_dereferences): New variable.
7459         (final_bbs): New variable.
7460         (no_accesses_representant): New variable.
7461         (no_accesses_p): New function.
7462         (dump_access): Dump the new fields.
7463         (sra_initialize): Set encountered_apply_args to false.
7464         (get_ssa_base_param): New function.
7465         (mark_parm_dereference): New function.
7466         (create_access): Caring for INIDRECT_REFs and different handling of
7467         varialble length accesses in early IPA SRA.  Store the stmt - a new
7468         parameter - to the new access.
7469         (build_access_from_expr_1): New parameter stmt, passed to
7470         create_access.  Handle INDIRECT_REFs.
7471         (build_access_from_expr): Pass the current statement to
7472         build_access_from_expr_1.
7473         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
7474         passes.
7475         (build_accesses_from_assign): Pass the current statement to
7476         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
7477         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
7478         final_bbs when necessary.  Check for calls to __builtin_apply_args.
7479         Fixup EH info if anythng was changed.
7480         (is_unused_scalar_param): New function.
7481         (ptr_parm_has_direct_uses): New function.
7482         (find_param_candidates): New function.
7483         (mark_maybe_modified): New function.
7484         (analyze_modified_params): New function.
7485         (propagate_dereference_distances): New function.
7486         (dump_dereferences_table): New function.
7487         (analyze_caller_dereference_legality): New function.
7488         (unmodified_by_ref_scalar_representative): New function.
7489         (splice_param_accesses): New function.
7490         (decide_one_param_reduction): New function.
7491         (enum ipa_splicing_result): New type.
7492         (splice_all_param_accesses): New function.
7493         (get_param_index): New function.
7494         (turn_representatives_into_adjustments): New function.
7495         (analyze_all_param_acesses): New function.
7496         (get_replaced_param_substitute): New function.
7497         (get_adjustment_for_base): New function.
7498         (replace_removed_params_ssa_names): New function.
7499         (sra_ipa_reset_debug_stmts): New function.
7500         (sra_ipa_modify_expr): New function.
7501         (sra_ipa_modify_assign): New function.
7502         (convert_callers): New function.
7503         (modify_function): New function.
7504         (ipa_sra_preliminary_function_checks): New function.
7505         (ipa_early_sra): New function.
7506         (ipa_early_sra_gate): New function.
7507         (pass_early_ipa_sra): New variable.
7508         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
7509
7510 2009-09-17  Michael Matz  <matz@suse.de>
7511
7512         PR middle-end/41347
7513         * tree.c (build_type_attribute_qual_variant): Export.
7514         * tree.h (build_type_attribute_qual_variant): Declare.
7515         * tree-inline.c (remap_type_1): Use it to build variants with
7516         the original qualifiers and attributes.
7517
7518 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7519
7520         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
7521         without a fallthrough edge.
7522
7523 2009-09-16  DJ Delorie  <dj@redhat.com>
7524
7525         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
7526         chip and ignore the "fast_interrupt" attribute if so.
7527
7528 2009-09-16  Richard Henderson  <rth@redhat.com>
7529
7530         PR middle-end/41360
7531         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
7532         barrier fix.
7533
7534 2009-09-16  Richard Henderson  <rth@redhat.com>
7535
7536         PR target/41246
7537         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
7538         is set only if DECL_NO_STATIC_CHAIN is unset.
7539         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
7540         (FOR_EACH_NEST_INFO): New.
7541         (walk_all_functions): Use it.
7542         (finalize_nesting_tree): Likewise.
7543         (unnest_nesting_tree): Likewise.
7544         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
7545         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
7546         (convert_gimple_call): Early out if gimple_call_chain already set.
7547         (convert_all_function_calls): Iterate until no new functions
7548         require a static chain.
7549         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
7550         when building a trampoline.  Use dump_function_to_file instead
7551         of dump_function.
7552         (lower_nested_functions): Open dump_file.  Validate that decls
7553         that have DECL_NO_STATIC_CHAIN from the front end don't have that
7554         bit reset by this pass.
7555
7556 2009-09-16  Michael Matz  <matz@suse.de>
7557
7558         PR fortran/41212
7559         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
7560         shorten decl_common_unused.
7561         (DECL_RESTRICTED_P): New accessor.
7562         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
7563         to disambiguate marked decls and restrict pointers.
7564
7565 2009-09-16  Richard Henderson  <rth@redhat.com>
7566
7567         PR middle-end/41360
7568         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
7569
7570 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
7571
7572         * integrate.c (set_block_abstract_flags): Call
7573         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
7574
7575 2009-09-16  Richard Guenther  <rguenther@suse.de>
7576
7577         PR middle-end/34011
7578         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
7579         as non-aliased.
7580
7581 2009-09-16  DJ Delorie  <dj@redhat.com>
7582             Kaz Kojima  <kkojima@gcc.gnu.org>
7583
7584         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
7585         (sh_expand_prologue): Update calls to output_stack_adjust.
7586         (sh_expand_epilogue): Likewise.
7587
7588 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
7589
7590         PR bootstrap/41349
7591         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
7592         trying to limit the extent of searches in the insn stream.
7593
7594 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
7595             Jakub Jelinek  <jakub@redhat.com>
7596
7597         PR target/41175
7598         PR target/40677
7599         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
7600         problem.
7601         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
7602         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
7603         (rs6000_savres_strategy): Always save FP registers inline if the
7604         target doesn't support hardware double-precision.  Set the above
7605         bits in return value when needed.
7606         (rs6000_savres_routine_sym): Fix computation for cache selector.
7607         Mark the generated symbol as a function.  Rename exitp argument to
7608         lr.  Move code for determining the name of the symbol...
7609         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
7610         getting the names right on AIX and 64-bit Linux.
7611         (savres_routine_name): New variable.
7612         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
7613         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
7614         on what the target routine uses as a base register.  If savep && lr
7615         describe saving of r0 into memory slot.
7616         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
7617         line calls for AIX ABI.
7618         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
7619         determine FP save/restore functions.
7620         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
7621         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
7622         gen_addsi3.
7623         (rs6000_emit_epilogue): Adjust computation of restore_lr.
7624         Duplicate restoration of LR and execute the appropriate one
7625         depending on whether GPRs are being restored inline.  Set r11 from
7626         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
7627         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
7628         Fix out of line calls for AIX ABI.
7629         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
7630         New insn.
7631         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
7632         register 11.
7633         (*restore_gpregs_spe): Likewise.
7634         (*return_and_restore_gpregs_spe): Likewise.
7635         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
7636         Define to empty string unconditionally.
7637         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
7638         Define to empty string unconditionally.
7639         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
7640         !TARGET_64BIT.
7641
7642 2009-09-15  Jan Hubicka  <jh@suse.cz>
7643
7644         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
7645         * params.def (inline-insns-auto): Likewise.
7646
7647 2009-09-15  Martin Jambor  <mjambor@suse.cz>
7648
7649         * ipa-inline.c (estimate_function_body_sizes): Dump info about
7650         individual statements only at TDF_DETAILS dump level.  Format
7651         source for 80 characters per line.
7652
7653 2009-09-15  Christian Bruel  <christian.bruel@st.com>
7654
7655         * regrename.c (do_replace): Update REG_DEAD notes.
7656
7657 2009-09-15  Revital Eres  <eres@il.ibm.com>
7658
7659         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
7660         * targhooks.c (default_builtin_support_vector_misalignment):
7661         New builtin function.
7662         * targhooks.h (default_builtin_support_vector_misalignment):
7663         Declare.
7664         * target.h (builtin_support_vector_misalignment):
7665         New field in struct gcc_target.
7666         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
7667         new builtin function.
7668         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
7669         Define.
7670         * config/rs6000/rs6000.c
7671         (rs6000_builtin_support_vector_misalignment): New function.
7672         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
7673
7674 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
7675
7676         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
7677         instead of INSN_P.
7678         (bfin_optimize_loop): Likewise.
7679         (bfin_gen_bundles): Likewise.
7680         (workaround_speculation): Likewise.
7681         (find_load): Return NULL_RTX for debug_insn.
7682
7683 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
7684
7685         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
7686         (sminsf3): Ditto.
7687
7688 2009-09-14  DJ Delorie  <dj@redhat.com>
7689
7690         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
7691         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
7692         VLIW mode.
7693
7694 2009-09-14  Richard Henderson  <rth@redhat.com>
7695             Jakub Jelinek  <jakub@redhat.com>
7696
7697         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
7698         * cfgbuild.c (make_edges): Handle asm goto.
7699         * cfglayout.c (fixup_reorder_chain): Likewise.
7700         * cfgrtl.c (patch_jump_insn): Likewise.
7701         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
7702         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
7703         (gimple_build_asm_vec): Add and use labels parameter.
7704         (gimple_build_asm): Remove.
7705         (walk_gimple_asm): Walk labels too.
7706         * gimple.def (GIMPLE_ASM): Update docs.
7707         * gimple.h: Update decls.
7708         (struct gimple_statement_asm): Change nc to use unsigned char;
7709         add nl member.
7710         (gimple_asm_nlabels): New.
7711         (gimple_asm_label_op, gimple_asm_set_label_op): New.
7712         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
7713         into gimple_build_asm_vec.
7714         * jump.c (mark_jump_label_asm): New.
7715         (mark_jump_label): Use it.
7716         (redirect_jump_1): Handle asm goto.
7717         (invert_jump_1): Soft fail if X is null.
7718         * recog.c (extract_asm_operands): New.
7719         (asm_noperands): Use it; handle asm labels.
7720         (decode_asm_operands): Use extract_asm_operands.
7721         (asm_operand_ok): Properly handle empty string.
7722         * reg-stack.c (get_asm_operands_in_out): Rename from
7723         get_asm_operand_n_inputs; use extract_asm_operands; return both
7724         inputs and outputs by reference; update all callers.
7725         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
7726         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
7727         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
7728         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
7729         (extract_asm_operands): Declare.
7730         * stmt.c (expand_asm_operands): Add and use labels parameter.
7731         (check_unique_operand_names): Likewise.
7732         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
7733         (expand_asm_stmt): Handle asm labels.
7734         * tree-cfg.c (make_gimple_asm_edges): New.
7735         (make_edges): Use it.
7736         (cleanup_dead_labels): Handle asm labels.
7737         (is_ctrl_altering_stmt): Likewise.
7738         (gimple_redirect_edge_and_branch): Likewise.
7739         * tree.def (ASM_EXPR): Add 5th operand.
7740         * tree.h (ASM_LABELS): New.
7741         (resolve_asm_operand_names): Update decl.
7742
7743         * c-parser.c (c_parser_asm_statement): Parse asm goto.
7744         (c_parser_asm_goto_operands): New.
7745         * c-tree.h (build_asm_expr): Update decl.
7746         * c-typeck.c (build_asm_expr): Add and use labels parameter.
7747         * doc/extend.texi: Document asm goto.
7748
7749 2009-09-14  Richard Henderson  <rth@redhat.com>
7750
7751         * except.h: Update declarations.
7752         (struct pointer_map_t): Forward declare.
7753         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
7754         (struct eh_landing_pad_d, eh_landing_pad): New.
7755         (struct eh_catch_d, eh_catch): New.
7756         (struct eh_region_d): Remove next_region_sharing_label, aka,
7757         label, tree_label, landing_pad, post_landing_pad, resume,
7758         may_contain_throw.  Rename region_number to index.  Remove
7759         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
7760         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
7761         (VEC(eh_landing_pad,gc)): New.
7762         (struct eh_status): Remove last_region_number.  Add lp_array,
7763         throw_stmt_table, ttype_data, ehspec_data.
7764         (ehr_next, FOR_ALL_EH_REGION_AT): New.
7765         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
7766         * except.c (lang_protect_cleanup_actions): Return tree.
7767         (struct ehl_map_entry): Remove.
7768         (init_eh_for_function): Push zero entries for region and lp_array.
7769         (gen_eh_region): Add to region_array immediately.
7770         (gen_eh_region_catch): Operate on eh_catch objects.
7771         (gen_eh_landing_pad): New.
7772         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
7773         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
7774         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
7775         (get_eh_landing_pad_from_number_fn): New.
7776         (get_eh_landing_pad_from_number): New.
7777         (get_eh_region_from_lp_number_fn): New.
7778         (get_eh_region_from_lp_number): New.
7779         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
7780         (get_exception_pointer, get_exception_filter): Remove.
7781         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
7782         (current_function_has_exception_handlers): Simplify.
7783         (bring_to_root, eh_region_replaceable_by_p): Remove.
7784         (replace_region, hash_type_list, hash_eh_region): Remove.
7785         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
7786         (label_to_region_map, num_eh_regions): Remove.
7787         (get_next_region_sharing_label, must_not_throw_labels): Remove.
7788         (find_exception_handler_labels): Remove.
7789         (duplicate_eh_regions_0, find_prev_try): Remove.
7790         (struct duplicate_eh_regions_data): New.
7791         (duplicate_eh_regions_1): Rewrite.
7792         (duplicate_eh_regions): Return a pointer map instead of an
7793         integer offset.
7794         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
7795         (redirect_eh_edge_to_label): Remove.
7796         (eh_region_outermost): Rewrite using eh_region pointers
7797         instead of integers.
7798         (add_ttypes_entry): Update for ttype_data move to eh_status.
7799         (add_ehspec_entry): Rewrite with VEC instead of varray.
7800         (assign_filter_values): Likewise.  Export.
7801         (build_post_landing_pads, connect_post_landing_pads): Remove.
7802         (dw2_build_landing_pads): Rewrite to use lp_array.
7803         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
7804         (sjlj_assign_call_site_values): Rewrite to use lp_array.
7805         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
7806         (sjlj_mark_call_sites): Update for landing pad numbers.
7807         (finish_eh_generation): Rewrite.
7808         (gate_handle_eh): Do nothing for no eh tree.
7809         (pass_rtl_eh): Move up near finish_eh_generation.
7810         (remove_eh_landing_pad): New.
7811         (remove_eh_handler): Export.
7812         (remove_eh_region, remove_eh_handler_and_replace): Remove.
7813         (for_each_eh_label): Rewrite to use lp_array.
7814         (make_reg_eh_region_note): New.
7815         (make_reg_eh_region_note_nothrow_nononlocal): New.
7816         (insn_could_throw_p): New.
7817         (copy_reg_eh_region_note_forward): New.
7818         (copy_reg_eh_region_note_backward): New.
7819         (check_handled, add_reachable_handler): Remove.
7820         (reachable_next_level, foreach_reachable_handler): Remove.
7821         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
7822         (get_eh_region_and_lp_from_rtx): New.
7823         (get_eh_region_from_rtx): New.
7824         (can_throw_internal_1, can_throw_external_1): Remove.
7825         (can_throw_internal): Use get_eh_region_from_rtx.
7826         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
7827         (insn_nothrow_p, can_nonlocal_goto): New.
7828         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
7829         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
7830         (add_action_record): Use VEC not varray.
7831         (collect_one_action_chain): Update for eh_region changes.
7832         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
7833         Use get_eh_region_and_lp_from_rtx.
7834         (gate_convert_to_eh_region_ranges): New.
7835         (pass_convert_to_eh_region_ranges): Use it.
7836         (push_uleb128, push_sleb128): Use VEC not varray.
7837         (output_one_function_exception_table): Likewise.
7838         (dump_eh_tree): Update for eh_region changes.
7839         (verify_eh_tree): Likewise.
7840         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
7841         * tree-eh.c: Include target.h.
7842         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
7843         Don't disallow GIMPLE_RESX; adjust argument check.
7844         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
7845         (record_stmt_eh_region): Update for landing pad numbers;
7846         generate a landing pad if necessary.
7847         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
7848         (remove_stmt_from_eh_lp_fn): Similarly.
7849         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
7850         Update for lp numbers; don't special case missing throw_stmt_table.
7851         (lookup_expr_eh_lp): Similarly.
7852         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
7853         (eh_seq, eh_region_may_contain_throw): New.
7854         (struct leh_state): Add ehp_region.
7855         (struct leh_tf_state): Remove eh_label.
7856         (emit_post_landing_pad): New.
7857         (emit_resx, emit_eh_dispatch): New.
7858         (note_eh_region_may_contain_throw): New.
7859         (frob_into_branch_around): Take eh_region not eh label;
7860         emit eh code into eh_seq.
7861         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
7862         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
7863         lower_eh_must_not_throw.  Emit code to eh_seq.
7864         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
7865         (lower_try_finally_onedest): Likewise.
7866         (lower_try_finally_copy): Likewise.
7867         (lower_try_finally_switch): Likewise.
7868         (lower_try_finally): Initialize ehp_region.
7869         (lower_catch): Update for eh_catch objects.
7870         (lower_eh_filter): Don't handle must_not_throw.
7871         (lower_eh_must_not_throw): New.
7872         (lower_cleanup): Don't set eh_label.
7873         (lower_eh_constructs_2): Resolve eh builtins.
7874         Handle GIMPLE_EH_MUST_NOT_THROW.
7875         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
7876         Add eh_seq to the end of the function body.
7877         (make_eh_dispatch_edges): New.
7878         (make_eh_edge): Remove.
7879         (make_eh_edges): Simplify for landing pads.
7880         (redirect_eh_edge_1): New.
7881         (redirect_eh_edge): Use it.
7882         (redirect_eh_dispatch_edge): New.
7883         (stmt_could_throw_p): Use a switch.  Allow RESX.
7884         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
7885         (stmt_can_throw_internal): Likewise.
7886         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
7887         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
7888         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
7889         (gate_refactor_eh): New.
7890         (pass_refactor_eh): Use it.
7891         (lower_resx, execute_lower_resx, pass_lower_resx): New.
7892         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
7893         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
7894         (remove_unreachable_handlers): Rename from
7895         tree_remove_unreachable_handlers; rewrite for landing pads;
7896         call remove_eh_handler directly.
7897         (remove_unreachable_handlers_no_lp): New.
7898         (unsplit_eh, unsplit_all_eh): New.
7899         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
7900         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
7901         (cleanup_empty_eh_unsplit): New.
7902         (cleanup_empty_eh): Rewrite.
7903         (cleanup_all_empty_eh): New.
7904         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
7905         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
7906         (gate_cleanup_eh): New.
7907         (pass_cleanup_eh): Use it.
7908         (verify_eh_edges): Move later in file.  Expect one EH edge.
7909         (verify_eh_dispatch_edge): New.
7910
7911         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
7912         (gtype-desc.o): Add TARGET_H.
7913         (tree.o): Use EXCEPT_H, not except.h.
7914         (cfgbuild.o): Add EXPR_H.
7915         (GTFILES): Add vecprim.h.
7916         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
7917         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
7918         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
7919         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
7920         * calls.c (emit_call_1): Use make_reg_eh_region_note.
7921         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
7922         calls to can_throw_internal.
7923         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
7924         (make_edges): Don't handle RESX; use can_nonlocal_goto.
7925         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
7926         (expand_gimple_stmt): Use make_reg_eh_region_note.
7927         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
7928         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
7929         or find_exception_handler_labels.
7930         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
7931         there is exacly one EH edge.  Use can_nonlocal_goto and
7932         can_throw_internal.
7933         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
7934         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
7935         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
7936         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
7937         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
7938         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
7939         * dse.c (scan_insn): Use insn_could_throw_p.
7940         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
7941         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
7942         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
7943         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
7944         EXC_PTR_EXPR or FILTER_EXPR.
7945         (tree_expr_nonzero_warnv_p): Likewise.
7946         * function.h: Include vecprim.h, not varray.h
7947         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
7948         move ttype_data and ehspec_data members to struct eh_status; change
7949         action_record_data member to a VEC.
7950         * gcse.c (hash_scan_set): Use can_throw_internal.
7951         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
7952         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
7953         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
7954         (block_may_fallthru): Don't handle RESX_EXPR.
7955         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
7956         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
7957         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
7958         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
7959         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
7960         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
7961         (gimple_size): Likewise.
7962         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
7963         (gimple_build_resx): Use gimple_build_with_ops.
7964         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
7965         (is_gimple_val): Likewise.
7966         (is_gimple_stmt): Remove RESX_EXPR.
7967         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
7968         (GIMPLE_RESX): Reorder with other EH constructs.
7969         * gimple.h (struct gimple_statement_eh_mnt): New.
7970         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
7971         (gimple_eh_filter_must_not_throw): Remove.
7972         (gimple_eh_filter_set_must_not_throw): Remove.
7973         (gimple_eh_must_not_throw_fndecl): New.
7974         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
7975         (is_gimple_resx): New.
7976         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
7977         Don't copy EH_FILTER_MUST_NOT_THROW.
7978         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
7979         * ipa-inline.c (estimate_function_body_sizes): Don't try to
7980         handle must_not_throw_labels specially.
7981         * ipa-pure-const.c (check_call): Update debug statement for LP.
7982         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
7983         * ipa-utils.c (get_base_var): Likewise.
7984         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
7985         * lower-subreg.c (move_eh_region_note): Remove.
7986         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
7987         * omp-low.c (new_omp_context): Update for eh_lp_nr.
7988         (create_task_copyfn): Likewise.
7989         (maybe_catch_exception): Use gimple_build_eh_filter.
7990         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
7991         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
7992         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
7993         and pass_lower_resx.
7994         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
7995         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
7996         can_throw_internal, can_nonlocal_goto.
7997         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
7998         copy_reg_eh_region_note_forward.
7999         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
8000         (emit_output_reload_insns): Likewise.
8001         (copy_eh_notes): Remove.
8002         * rtl.def (RESX): Remove.
8003         * rtl.h: Update declarations.
8004         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
8005         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
8006         (update_eh_label): Remove.
8007         (cleanup_dead_labels_eh): New.
8008         (cleanup_deal_labels): Use it instead of update_eh_label.
8009         (gimple_merge_blocks): Update landing pad data structure when
8010         removing a landing pad label.
8011         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
8012         test; handle GIMPLE_EH_MUST_NOT_THROW.
8013         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
8014         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
8015         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
8016         (verify_stmt): Likewise.  Verify landing pads.
8017         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
8018         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
8019         (struct move_stmt_d): Add eh_map.
8020         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
8021         (move_stmt_r): Remap eh region numbers in builtin calls,
8022         resx and eh_dispatch.
8023         (move_block_to_fn): Remove eh_offset parameter.  Use
8024         maybe_duplicate_eh_stmt_fn.
8025         (find_outermost_region_in_block): Operate on eh_region pointers
8026         instead of region numbers.
8027         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
8028         duplicate_eh_regions.
8029         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
8030         test earlier.  Disallow EH landing pads.
8031         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
8032         * tree-flow.h: Update declarations.
8033         (struct tree_ann_common_d): Replace rn with lp_nr.
8034         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
8035         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
8036         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
8037         resx and eh_dispatch.
8038         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
8039         (copy_edges_for_bb): Use make_eh_dispatch_edges.
8040         (copy_cfg_body): Expect eh_map instead of eh_region_offset
8041         from duplicate_eh_regions.
8042         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
8043         update RESX; handle EH_DISPATCH.
8044         (expand_call_inline): Set eh_lp_nr, not eh_region.
8045         (maybe_inline_call_in_expr): Likewise.
8046         * tree-inline.h (struct copy_body_data): Replace eh_region with
8047         eh_lp_nr, eh_region_offset with eh_map.
8048         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
8049         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
8050         * tree-pretty-print.c (dump_generic_node): Don't handle
8051         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
8052         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
8053         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
8054         EXC_PTR_EXPR, FILTER_EXPR.
8055         * tree-ssa-operands.c (get_expr_operands): Likewise.
8056         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
8057         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
8058         (ao_ref_init_from_vn_reference): Likewise.
8059         * tree-ssa-sink.c (statement_sink_location): Likewise.
8060         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
8061         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
8062         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
8063         EXC_PTR_EXPR, FILTER_EXPR.
8064         (is_exception_related): Remove.
8065         (compute_avail): Don't call it.
8066         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
8067         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
8068         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
8069         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
8070         Build EH builtins.
8071         (build_resx): Remove.
8072         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
8073         * tree.h: Update declarations.
8074         (EH_FILTER_MUST_NOT_THROW): Remove.
8075         (struct tree_label_decl): Add eh_landing_pad_nr.
8076         (EH_LANDING_PAD_NR): New.
8077         * value-prof.c (gimple_ic): Tidy variable names.  Update for
8078         landing pad numbers.
8079         (gimple_stringop_fixed_value): Tidy variable names.  Assert
8080         that neither call stmt can throw.
8081         * vecprim.h (uchar): New.
8082         (VEC(uchar,heap), VEC(uchar,gc)): New.
8083
8084         * c-common.c (c_define_builtins): Update call to
8085         build_common_builtin_nodes.
8086         * c-parser.c (c_parse_file): Don't call
8087         default_init_unwind_resume_libfunc.
8088
8089 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
8090
8091         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
8092         (mips_cprestore_address_p): Likewise.
8093         (mips_save_gp_to_cprestore_slot): Likewise.
8094         (mips_restore_gp): Rename to...
8095         (mips_restore_gp_from_cprestore_slot): ...this.
8096         (mips_must_initialize_gp_p): Declare.
8097         (mips_emit_save_slot_move): Likewise.
8098         (mips_output_load_label): Return nothing.
8099         (mips_eh_uses): Declare.
8100         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
8101         (TARGET_CPRESTORE_DIRECTIVE): New macro.
8102         (TARGET_ABSOLUTE_JUMPS): Likewise.
8103         (EH_USES): Likewise.
8104         (FIRST_PSEUDO_REGISTER): Update comment.
8105         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
8106         (MIPS_CALL): ...here.
8107         (REGISTER_NAMES): Add $cprestore.
8108         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
8109         Add load_label_length, has_inflexible_gp_insn_p,
8110         has_flexible_gp_insn_p, must_initialize_gp_p and
8111         must_restore_gp_when_clobbered_p.
8112         (mips_expand_call): Don't generate split instructions here.
8113         (mips_split_call): Update the call to mips_restore_gp after
8114         the above name change.
8115         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
8116         (mips_find_gp_ref): New function.
8117         (mips_insn_has_inflexible_gp_ref_p): Likewise.
8118         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
8119         (mips_insn_has_flexible_gp_ref_p): Likewise.
8120         (mips_cfun_has_flexible_gp_ref_p): Likewise.
8121         (mips_function_has_gp_insn): Delete.
8122         (mips_global_pointer): Drop the df_regs_ever_live_p check.
8123         Use the new functions above.  Only return INVALID_REGNUM
8124         for TARGET_ABSOLUTE_JUMPS.
8125         (mips_must_initialize_gp_p): New function.
8126         (mips_get_cprestore_base_and_offset): New function, extracted from...
8127         (mips_cprestore_slot): ...here.  Take a bool parameter.
8128         (mips_cfun_has_cprestore_slot_p): New function.
8129         (mips_cprestore_address_p): Likewise.
8130         (mips_save_gp_to_cprestore_slot): Likewise.
8131         (mips_restore_gp): Rename to...
8132         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
8133         epilogue_completed.  Update the call to mips_cprestore_slot.
8134         Test cfun->machine->must_restore_gp_when_clobbered_p.
8135         (mips_direct_save_slot_move_p): New function.
8136         (mips_emit_save_slot_move): Likewise.
8137         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
8138         of cfun->machine->global_pointer.
8139         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
8140         (mips_save_reg): Use mips_emit_save_slot_move.
8141         (mips_expand_prologue): Set must_initialize_gp_p.
8142         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
8143         for all cprestore saves.  Emit a use_cprestore instruction after
8144         setting up the cprestore slot.
8145         (mips_restore_reg): Use mips_emit_save_slot_move.
8146         (mips_process_load_label): New function.
8147         (mips_load_label_length): Likewise.
8148         (mips_output_load_label): Don't return asm: output it here instead.
8149         Use mips_process_load_label.
8150         (mips_adjust_insn_length): Adjust the length of branch instructions
8151         that have length MAX_PIC_BRANCH_LENGTH.
8152         (mips_output_conditional_branch): Update the call to
8153         mips_output_load_label.  Assume the branch target is OPERANDS[0]
8154         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
8155         (mips_output_order_conditional_branch): Swap the meaning of
8156         OPERANDS[0] and OPERANDS[1].
8157         (mips_variable_issue): Don't count ghost instructions.
8158         (mips_expand_ghost_gp_insns): New function.
8159         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
8160         (mips_output_mi_thunk): Set must_initialize_gp_p.
8161         (mips_eh_uses): New function.
8162         * config/mips/predicates.md (cprestore_save_slot_operand)
8163         (cprestore_load_slot_operand): New predicates.
8164         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
8165         (UNSPEC_MOVE_GP): Likewise.
8166         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
8167         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
8168         (CPRESTORE_SLOT_REGNUM): New register.
8169         (MAX_PIC_BRANCH_LENGTH): New constant.
8170         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
8171         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
8172         branches.  Fix commentary.
8173         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
8174         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
8175         Change type to "ghost".
8176         (loadgp_absolute_<mode>): Likewise.
8177         (loadgp_rtp_<mode>): Likewise.
8178         (copygp_mips16): Likewise.
8179         (loadgp_blockage): Remove redundant mode attribute.
8180         (potential_cprestore): New instruction.
8181         (cprestore): Turn into an unspec set.
8182         (use_cprestore): New instruction.
8183         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
8184         (*branch_fp_inverted): Likewise.
8185         (*branch_order<mode>): Likewise.
8186         (*branch_order<mode>_inverted): Likewise.
8187         (*branch_equality<mode>): Likewise.
8188         (*branch_equality<mode>_inverted): Likewise.
8189         (*branch_bit<bbv><mode>): Likewise.
8190         (*branch_bit<bbv><mode>_inverted): Likewise.
8191         (*branch_equality<mode>_mips16): Remove redundant mode.
8192         (jump): Turn into a define_expand.
8193         (*jump_absolute): New instruction.
8194         (*jump_pic): Likewise.
8195         (*jump_mips16): Rename previously-unnamed pattern.  Remove
8196         redundant mode attribute.
8197         (restore_gp): Split on epilogue_completed rather than
8198         reload_completed.  Change type to "ghost".
8199         (move_gp<mode>): New instruction.
8200         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
8201         Remove redundant mode attribute.
8202         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
8203         (bc1any4f, bc1any2t, bc1any2f): Likewise.
8204         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
8205
8206 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
8207
8208         PR target/41210
8209         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
8210         are returned in the same register (vs34 or v2) that Altivec vector
8211         types are returned in.
8212         (rs6000_libcall_value): Ditto.
8213
8214         PR target/41331
8215         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
8216         instead of explicit addsi3/adddi3 calls.
8217         (rs6000_split_multireg_move): Ditto.
8218         (rs6000_emit_allocate_stack): Ditto.
8219         (rs6000_emit_prologue): Ditto.
8220         (rs6000_output_mi_thunk): Ditto.
8221
8222         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
8223         size is 64 bits if we can use 64-bit registers.
8224
8225 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
8226
8227         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
8228         symbols.
8229
8230         From Jie Zhang <jie.zhang@analog.com>:
8231         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
8232         save FP and RETS with saveall attribute.
8233         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
8234         with saveall attribute.
8235
8236         * config/bfin/bfin.c (bfin_expand_builtin,
8237         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
8238         operands.
8239
8240         From Jie Zhang <jie.zhang@analog.com>:
8241         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
8242         before use in two places.
8243         * config/bfin/bfin.md (AREG): Define mode iterator.
8244         (reload_in, reload_out): Use mode iterator AREG.
8245
8246 2009-09-14  Richard Guenther  <rguenther@suse.de>
8247
8248         PR middle-end/41350
8249         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
8250         EH personality path.
8251
8252 2009-09-13  Richard Guenther  <rguenther@suse.de>
8253             Rafael Avila de Espindola  <espindola@google.com>
8254
8255         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
8256         (LANG_HOOKS_EH_PERSONALITY): Likewise.
8257         (LANG_HOOKS_INITIALIZER): Adjust.
8258         (lhd_pass_through_t): Declare.
8259         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
8260         eh_personality.
8261         * langhooks.c (lhd_pass_through_t): New function.
8262         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
8263         dwarf2out_begin_prologue): Use personality from current_function_decl.
8264         * expr.h (get_personality_function): Declare.
8265         * expr.c (get_personality_function): New function.
8266         (build_personality_function): Likewise.
8267         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
8268         (eh_personality_libfunc): Remove.
8269         * optabs.c (build_libfunc_function): New function split out from ...
8270         (init_one_libfunc): ... here.
8271         * tree.h (DECL_FUNCTION_PERSONALITY): New.
8272         (tree_function_decl): Add personality.
8273         (lhd_gcc_personality): Declare.
8274         (build_personality_function): Likewise.
8275         * tree.c (gcc_eh_personality_decl): New.
8276         (lhd_gcc_personality): New function.
8277         * except.h (lang_eh_runtime_type): Remove.
8278         (enum eh_personality_kind): New.
8279         (build_personality_function): Declare.
8280         (function_needs_eh_personality): Declare.
8281         * except.c (lang_eh_runtime_type): Remove.
8282         (function_needs_eh_personality): New function.
8283         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
8284         (sjlj_emit_function_enter, output_function_exception_table):
8285         Use personality from current_function_decl.
8286         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
8287         * tree-inline.c (tree_can_inline_p): Do not inline across different
8288         EH personalities.
8289         (expand_call_inline): Likewise.  Adjust the callers EH personality.
8290         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
8291         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
8292         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
8293         (c-parser.o): Likewise
8294         * c-tree.h (c_eh_initialized_p): Remove.
8295         (c_maybe_initialize_eh): Likewise.
8296         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
8297         (finish_decl): Don't call c_maybe_initialize_eh.
8298         (c_eh_initialized_p): Remove.
8299         (c_maybe_initialize_eh): Likewise.
8300         * c-parser.c (c_parser_omp_construct): Likewise.
8301         (c_parse_file): Initialize exception handling.
8302
8303 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
8304
8305         * config.gcc (tm_file): Remove i386/biarch32.h
8306         for i?86-w64-mingw* case.
8307         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
8308         support.
8309         * config.host: Set for x64 mingw the option
8310         use_long_long_for_widest_fast_int to yes.
8311
8312 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
8313
8314         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
8315         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
8316         (dbxout_begin_function): Likewise.
8317         * final.c (dwarf2_debug_info_emitted_p): New predicate.
8318         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
8319         set on the function.
8320         (final_end_function): Likewise.
8321         (final_scan_insn): Likewise.
8322         (rest_of_handle_final): Likewise.
8323         * varasm.c (assemble_start_function): Likewise.
8324         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
8325
8326 2009-09-12  Jason Merrill  <jason@redhat.com>
8327
8328         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
8329         * opts.c (common_handle_option): constify.
8330
8331 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
8332
8333         * doc/install.texi (avr): Remove obsolete reference site.
8334
8335 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
8336
8337         * doc/install.texi (Binaries): Adjust AIX link.
8338
8339 2009-09-12  Akim Demaille  <demaille@gostai.com>
8340
8341         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
8342         Use an imperative sentence.
8343
8344 2009-09-11  Richard Henderson  <rth@redhat.com>
8345
8346         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
8347         structure-name and has-tree-operands arguments; update all entries.
8348         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
8349         update all entries.
8350         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
8351         (gsstruct_code_size): New.
8352         (gss_for_code_): New.
8353         (gss_for_code): Remove.
8354         (gimple_size): Rewrite using gsstruct_code_size.
8355         (gimple_statement_structure): Move to gimple.h.
8356         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
8357         (gss_for_code, gimple_statement_structure): New.
8358         (gimple_ops): Use new arrays; tidy.
8359
8360 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8361
8362         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
8363         operand to be a PLUS expression.
8364         * config/pa/pa.c (pa_secondary_reload): Likewise.
8365
8366 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
8367
8368         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
8369
8370         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
8371         XEXP (in_rtx, 8).
8372
8373 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8374
8375         From Jie Zhang <jie.zhang@analog.com>:
8376         * doc/extend.texi (node Function Attributes): Document l2
8377         function attribute.
8378         (node Blackfin Variable Attributes): Document l2 variable attributes.
8379
8380 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
8381
8382         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
8383         to match the system compiler's configuration at inflection point.
8384         Add comment to remark a remaining difference with system compiler.
8385
8386         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
8387         * configure: Regenerate.
8388
8389 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8390
8391         From Jie Zhang <jie.zhang@analog.com>:
8392         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
8393         (bfin_handle_l2_attribute): New.
8394         (bfin_attribute_table): Add l2 attribute.
8395
8396 2009-09-11  Michael Matz  <matz@suse.de>
8397
8398         PR middle-end/41275
8399         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
8400         on the local_decls list.
8401
8402 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
8403
8404         PR debug/41276
8405         PR debug/41307
8406         * cselib.c (cselib_expand_value_rtx_cb): Document callback
8407         interface.
8408         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
8409         for VALUEs, to implement the documented interface.
8410         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
8411         Adjust for VALUEs and anything else, to implement the
8412         documented interface.
8413
8414 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
8415
8416         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
8417         with actual SPE/paired vector modes before using 64-bit alignment.
8418         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
8419
8420 2009-09-10  DJ Delorie  <dj@redhat.com>
8421
8422         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
8423         emitted.
8424
8425         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
8426         * config/mep/mep.c (mep_legitimate_constant_p): New.
8427         * config/mep/mep-protos.h: Prototype it.
8428
8429 2009-09-10  Richard Henderson  <rth@redhat.com>
8430
8431         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
8432
8433 2009-09-10  Jason Merrill  <jason@redhat.com>
8434
8435         * tree.c (chain_index): New fn.
8436         * tree.h: Declare it.
8437
8438 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8439
8440         * config/sol2-c.c (cmn_err_length_specs): Initialize
8441         scalar_identity_flag.
8442
8443 2009-09-10  Richard Henderson  <rth@redhat.com>
8444
8445         * tree.h (struct tree_decl_common): Move align member earlier;
8446         move label_decl_uid member ...
8447         (struct tree_label_decl): ... here.
8448         (LABEL_DECL_UID): Update to match.
8449
8450         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
8451         not TDF_DETAILS.
8452
8453         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
8454         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
8455
8456         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
8457         dest_prev if the edge is complex.
8458
8459         * tree-cfg.c (is_ctrl_stmt): Use a switch.
8460
8461         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
8462         loop latch tests earlier.
8463
8464         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
8465         before GIMPLE_RETURN, not after its predecessor; insert
8466         before GIMPLE_RESX.
8467
8468         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
8469         gimple_seq_empty_p to test for no PHI nodes.
8470         * tree-cfg.c (split_critical_edges): Likewise.
8471
8472         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
8473
8474 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
8475
8476         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
8477         introduced by the VTA branch merge.
8478
8479 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
8480
8481         * ira-conflicts.c: Use fputs or putc instead of fprintf
8482         where appropriate.
8483         * cfg.c: Ditto.
8484         * toplev.c: Ditto.
8485         * tree-switch-conversion.c: Ditto.
8486
8487 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
8488
8489         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
8490         introduced by the VTA branch merge.
8491
8492 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
8493
8494         Revert:
8495         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
8496
8497         PR rtl-optimization/39779
8498         * expr.c (convert_modes): Return when mode == oldmode after
8499         CONST_INTs are processed.
8500
8501 2009-09-10  Nick Clifton  <nickc@redhat.com>
8502
8503         * config/mep/mep.c (mep_encode_section_info): Copy weakness
8504         attribute and referring decl when creating renamed symbol.
8505
8506 2009-09-10  Richard Guenther  <rguenther@suse.de>
8507
8508         PR middle-end/41257
8509         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
8510         reachable nodes.
8511         (cgraph_finalize_compilation_unit): Compute reachability
8512         before emitting thunks.  Properly process aliases before
8513         possibly removing unreachable nodes.
8514
8515 2009-09-10  Richard Guenther  <rguenther@suse.de>
8516
8517         PR middle-end/41254
8518         * tree.c (struct free_lang_data_d): Add worklist member.
8519         (find_decls_types_r): Push onto the worklist instead of recursing.
8520         Handle TREE_BINFOs properly.
8521         (find_decls_types): New function wrapped around find_decls_types_r
8522         to process the worklist.
8523         (find_decls_types_in_eh_region): Use it.
8524         (find_decls_types_in_node): Likewise.
8525         (find_decls_types_in_var): Likewise.
8526         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
8527         * tree.h (RECORD_OR_UNION_TYPE_P): New.
8528         (AGGREGATE_TYPE_P): Adjust.
8529
8530 2009-09-09  Jason Merrill  <jason@redhat.com>
8531
8532         * configure.ac: Check glibc version even if we have an in-tree
8533         assembler.
8534
8535 2009-09-09  Anthony Green  <green@moxielogic.com>
8536
8537         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
8538         the constant 0 when appropriate.
8539         * config/moxie/constraints.md: Add constraint O.
8540
8541         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
8542         to pass up to 6 32-bit argument values in registers.
8543         (moxie_function_arg): Ditto.
8544         (moxie_arg_partial_bytes): Ditto.
8545         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
8546         (REG_PARM_STACK_SPACE): Ditto.
8547         (FUNCTION_ARG_REGNO_P): Ditto.
8548
8549         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
8550         instruction to allocate stack space.
8551
8552 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
8553
8554         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
8555         unnecessarily stringent constraints.  Fix address
8556         calculation in the splitters.
8557
8558 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
8559
8560         PR rtl-optimization/39779
8561         * expr.c (convert_modes): Return when mode == oldmode after
8562         CONST_INTs are processed.
8563
8564 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
8565
8566         PR/41315
8567         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
8568         (ix86_expand_prologue): Take frame.padding0 into logic of
8569         to_allocate checks.
8570         (ix86_expand_epilogue): Likewise.
8571
8572 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
8573
8574         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
8575         New variables.
8576         (SHLIB_LINK, SHLIB_INSTALL): Use them.
8577         * config/t-slibgcc-libgcc: New file.
8578         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
8579
8580 2009-09-09  Martin Jambor  <mjambor@suse.cz>
8581
8582         PR tree-optimization/41089
8583         * tree-sra.c (find_var_candidates): Do not consider va_lists in
8584         early SRA.
8585
8586 2009-09-09  Richard Henderson  <rth@redhat.com>
8587
8588         * gimple.h (CASE_GIMPLE_OMP): New.
8589         (is_gimple_omp): Use it.
8590         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
8591         (verify_gimple_debug): Likewise.
8592
8593 2009-09-09  Richard Guenther  <rguenther@suse.de>
8594
8595         PR tree-optimization/41101
8596         * tree-ssa-pre.c (maximal_set): Remove.
8597         (compute_antic_aux): Treat the maximal set as implicitly all ones.
8598         Defer all blocks we didn't visit at least one successor.
8599         (add_to_exp_gen): Do not add to the maximal set.
8600         (make_values_for_phi): Likewise.
8601         (compute_avail): Likewise.
8602         (init_pre): Do not allocate the maximal set.
8603         (execute_pre): Do not dump it.
8604
8605 2009-09-09  Martin Jambor  <mjambor@suse.cz>
8606
8607         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
8608         an SSA_NAME rather than a is_gimple_variable.
8609
8610 2009-09-09  Richard Guenther  <rguenther@suse.de>
8611
8612         PR middle-end/41317
8613         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
8614         code dealing with plain pointer bases.
8615         (maybe_fold_offset_to_reference): Likewise.
8616         (maybe_fold_stmt_addition): Adjust.
8617
8618 2009-09-09  Richard Guenther  <rguenther@suse.de>
8619
8620         * tree.c (free_lang_data_in_type): Do not free the type variant
8621         chains.
8622         (free_lang_data): Merge char_type_node with its properly signed
8623         variant.
8624         (pass_ipa_free): Collect after freeing language specific data.
8625
8626 2009-09-09  Michael Matz  <matz@suse.de>
8627
8628         PR middle-end/41268
8629         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
8630         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
8631         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
8632         to reflect reality.
8633
8634 2009-09-08  DJ Delorie  <dj@redhat.com>
8635
8636         * config/mep/mep.c (conversions[]): Add "ml" pattern.
8637
8638 2009-09-04  Jason Merrill  <jason@redhat.com>
8639
8640         * tree.c (tree_find_value): Remove.
8641         * tree.h: Remove prototype.
8642         * varasm.c (assemble_external): Use value_member instead.
8643
8644 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8645
8646         * toplev.c (process_options): Choose default debugging type when
8647         gtoggle enables debug info and type is unset.
8648
8649 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8650
8651         PR debug/41276
8652         PR debug/41307
8653         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
8654         invalid subreg.
8655
8656 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8657
8658         * configure: Rebuilt with modified libtool.m4.
8659
8660 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8661
8662         PR debug/41229
8663         PR debug/41291
8664         PR debug/41300
8665         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
8666
8667 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8668
8669         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
8670         (remove_statement): Likewise.
8671         (rewrite_use_nonlinear_expr): Adjust.
8672         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
8673         * tree-ssa.c (release_defs_bitset): ... this.  New.
8674         * tree-flow.h (release_defs_bitset): Declare.
8675
8676 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8677
8678         PR debug/41232
8679         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
8680         in the middle block.
8681
8682 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
8683
8684         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
8685         via intptr_t to long type.
8686         (insert_operand_rank): Cast long type via intptr_t to
8687         pointer type.
8688         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
8689         pointer to scalar.
8690         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
8691         from pointer to unsigned via uintptr_t.
8692
8693         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
8694         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
8695         and HAVE_INTPTR_T.
8696         * configure: Regenerated.
8697         * config.in: Regenerated
8698         * system.h (stdint.h): Add include.
8699         (inttypes.h): Likewise.
8700         * Makefile.in (aclocal): Add config/stdint.m4.
8701         * aclocal.m4: Regenerated.
8702
8703 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
8704
8705         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
8706         variables.
8707         (note_np_check_stores): New function.
8708         (harmless_null_pointer_p): New function.
8709         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
8710         changed.  Take into account whether we're in the shadow of a condjump
8711         that tested NP_REG for NULL.
8712         Lose all code that tested for SEQUENCEs.
8713         (workaround_speculation): Avoid inserting NOPs for loads that are
8714         either always executed or a NULL pointer.
8715
8716 2009-09-08  Jan Hubicka  <jh@suse.cz>
8717
8718         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
8719         * params.def (early-inlining-insns): Likewise.
8720
8721 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
8722
8723         PR rtl-optimization/41239
8724         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
8725         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
8726         lists.
8727         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
8728         across calls, as the calls might not always return normally.
8729         (call_may_noreturn_p): New function.
8730         (deps_analyze_insn): Update last_function_call_may_noreturn list.
8731         (init_deps): Initialize it.
8732         (remove_from_deps): Also remove calls from
8733         last_function_call_may_noreturn list.
8734
8735 2009-09-07  Richard Henderson  <rth@redhat.com>
8736
8737         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
8738         more VR->OPERANDS than LHS operands.  Free LHS before returning.
8739
8740 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
8741
8742         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
8743         (attr "addrtype"): New member "spreg".
8744         Use it if mem_spfp_address_operand is true for the address.
8745         (attr "type"): New entry "stall".
8746         (cpu_unit "load"): New.
8747         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
8748         "load".
8749         (insn_reservation "loadsp"): New.
8750         (insn_reservation "load_stall1"): New.
8751         (insn_reservation "load_stall3"): New.
8752         (stall): New insn.
8753         * config/bfin/predicates.md (const1_operand, const3_operand): New.
8754         (mem_p_address_operand): Exclude stack and frame pointer based
8755         addresses.
8756         (mem_spfp_address_operand): New; match them here.
8757         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
8758         (bfin_reorg): Call it if scheduling insns.
8759         (bfin_gen_bundles): Remove dummy insns created by
8760         add_sched_insns_for_speculation.
8761
8762         From Jie Zhang <jie.zhang@analog.com>:
8763         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
8764         bfin_si_revision, bfin_workarounds): Move these ...
8765         * config/bfin/bfin.h: ... here.
8766
8767         From Mike Frysinger  <michael.frysinger@analog.com>
8768         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
8769         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
8770         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
8771         bf547m, bf548m, and bf549m.
8772         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
8773         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
8774         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
8775         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
8776         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
8777         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
8778         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
8779         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
8780         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
8781         bf542m, bf544m, bf547m, bf548m, and bf549m.
8782
8783         From Jie Zhang <jie.zhang@analog.com>:
8784         * config/bfin/predicates.md (p_register_operand): New predicate.
8785         (dp_register_operand): New predicate.
8786         * config/bfin/bfin-protos.h (WA_05000074): Define.
8787         (ENABLE_WA_05000074): Define.
8788         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
8789         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
8790         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
8791         (define_attr addrtype): Allow load/store register to be P register.
8792         (define_attr storereg): New.
8793         (define_cpu_unit anomaly_05000074): New.
8794         (define_insn_reservation dsp32shiftimm): New.
8795         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
8796         (define_insn_reservation loadp): Cannot use slot2.
8797         (define_insn_reservation loadsp): Cannot use slot2.
8798         (define_insn_reservation storep): Cannot use slot2. Does not
8799         apply when working around 05000074.
8800         (define_insn_reservation storep_anomaly_05000074): New.
8801         (define_insn_reservation storei): Does not apply when working
8802         around 05000074.
8803         (define_insn_reservation storei_anomaly_05000074): New.
8804         (define_attr length): Add dsp32shiftimm case.
8805         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
8806         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
8807         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
8808         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
8809         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
8810
8811 2009-09-07  Martin Jambor  <mjambor@suse.cz>
8812
8813         PR middle-end/41282
8814         * tree-sra.c (create_artificial_child_access): Return NULL if
8815         build_ref_for_offset fails.
8816         (propagate_subacesses_accross_link): Allow build_ref_for_offset
8817         and create_artificial_child_access to fail.
8818
8819 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
8820
8821         PR c++/41214
8822         * unwind-dw2.c (uw_init_context_1): Mark noinline.
8823         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
8824         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
8825
8826 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
8827
8828         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
8829         block, ensure it has an exit edge.  Emit a barrier after a jump.
8830
8831 2009-09-07  Nick Clifton  <nickc@redhat.com>
8832
8833         * gcc.c (this_is_linker_script): New variable.  Like
8834         this_is_library_file but for the %T constructor.
8835         (end_going_arg): If this_is_linker_script is set then locate the
8836         script and insert a --script switch before it
8837         (do_spec_2): Initialise this_is_linker_script.
8838         (do_spec_1): Likewise.  Handle %T construct.
8839         (eval_spec_function): Preserve this_is_linker_script.
8840         * doc/invoke.texi: Document %T construct in spec files.
8841         * config/m32c/m32c.h (LIB_SPEC): Use it.
8842
8843 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
8844
8845         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
8846         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
8847         when volatile flag is set.
8848         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
8849
8850 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
8851
8852         PR bootstrap/41241
8853         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
8854         (combine_stack_adjustments_for_block): Allow insns between stack
8855         adjustments and stores with corresponding pre-(dec|inc)rement or
8856         pre-modify operation.
8857
8858 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
8859
8860         PR bootstrap/41241
8861         * combine-stack-adj.c (struct csa_memlist): Rename to...
8862         (struct csa_reflist): ... this.  Rename mem field to ref.
8863         (free_csa_memlist): Rename to...
8864         (free_csa_reflist): ... this.
8865         (record_one_stack_memref): Rename to...
8866         (record_one_stack_ref): ... this.  Handle also REG_P.
8867         (try_apply_stack_adjustment): Handle also REG_P.
8868         (struct record_stack_memrefs_data): Rename to...
8869         (struct record_stack_refs_data): ... this.  Rename memlist field to
8870         reflist.
8871         (record_stack_memrefs): Rename to...
8872         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
8873         subexpressions instead of failing when a MEM contains SP references.
8874         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
8875         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
8876
8877 2009-09-06  Richard Guenther  <rguenther@suse.de>
8878
8879         PR middle-end/41144
8880         * tree.c (build_array_type): Do not record types marked
8881         with structural equality in the canonical type hashtable.
8882
8883 2009-09-06  Richard Guenther  <rguenther@suse.de>
8884
8885         PR middle-end/41261
8886         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
8887
8888 2009-09-05  Richard Guenther  <rguenther@suse.de>
8889
8890         PR middle-end/41181
8891         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
8892
8893 2009-09-05  Richard Guenther  <rguenther@suse.de>
8894
8895         PR debug/41273
8896         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
8897
8898 2009-09-05  Richard Guenther  <rguenther@suse.de>
8899
8900         PR middle-end/41271
8901         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
8902         before comparing function argument types.
8903
8904 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
8905
8906         PR target/41024
8907         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
8908         the assembler.
8909
8910 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
8911
8912         Revert:
8913         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
8914
8915         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
8916         locators before emit_insn is called.
8917
8918 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
8919
8920         PR bootstrap/41241
8921         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
8922         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
8923         (reginfo_init): Don't call allocate_reg_info.
8924
8925 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
8926
8927         PR target/41262
8928         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
8929         NONDEBUG_INSN_P instead of INSN_P.
8930
8931 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8932
8933         PR debug/41225
8934         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
8935
8936 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8937
8938         PR target/41252
8939         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
8940         pattern of the split.
8941
8942 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8943
8944         * toplev.c (process_options): Move setter of flag_var_tracking
8945         before other tests that depend on it.  Move down setter of
8946         flag_rename_registers.  Don't enable var-tracking-assignments
8947         by default if selective scheduling is enabled.  Warn if both
8948         are enabled.
8949
8950 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8951
8952         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
8953         comment.  Use switch statement to catch overlaps between rtx
8954         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
8955         (IS_DECL_CODE): ... here. Remove.
8956         (check_value_is_not_decl): Remove.
8957         (dv_from_decl, dv_from_value): Check after conversion.
8958
8959 2009-09-04  Richard Guenther  <rguenther@suse.de>
8960
8961         PR middle-end/41257
8962         * (cgraph_finalize_compilation_unit): Move finalizing aliases
8963         after emitting tunks.  Move emitting thunks and ctors from ...
8964         (cgraph_optimize): ... here.  Remove redundant
8965         cgraph_analyze_functions.
8966         * varasm.c (find_decl_and_mark_needed): Remove no longer
8967         necessary check.
8968         (finish_aliases_1): Adjust check for thunk aliases.
8969
8970 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
8971
8972         * config/arm/arm.md (ctzsi2): Added braces
8973         to avoid warning that broke booststrap.
8974
8975 2009-09-04  Martin Jambor  <mjambor@suse.cz>
8976
8977         PR tree-optimization/41112
8978         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
8979         handle variable-bounded arrays.
8980         (expr_with_var_bounded_array_refs_p): New function.
8981         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
8982
8983 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
8984
8985         * config/s390/2097.md: Removed two incorrect bypasses.
8986         (z10_fsimpdf): Fixed latency.
8987         (z10_fhex): New insn_reservation.
8988         (z10_floaddf): Fixed latency.
8989         (z10_floadsf): Fixed latency.
8990         (z10_ftrunctf): Fixed latency.
8991         (z10_ftruncdf): Fixed latency.
8992         * config/s390/s390.c (z10_cost): Fixed values.
8993         (s390_adjust_priority): Added z10 path.
8994         * config/s390/s390.md (type): Added fhex.
8995         (*mov<mode>_64dfp): Updated type attribute.
8996         (*mov<mode>_64): Updated type attribute.
8997         (*mov<mode>_31): Updated type attribute.
8998         (*mov<mode>"): Likewise.
8999         * config/s390/2084.md (x_fsimpdf): Updated condition.
9000
9001 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
9002
9003         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
9004         RTXs in the predicate for operand 1.
9005
9006 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
9007
9008         * config/arm/arm.md (UNSPEC_RBIT): New constant.
9009         (rbitsi2): New insn.
9010         (ctzsi2): New expand.
9011         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
9012
9013 2009-09-03  Martin Jambor  <mjambor@suse.cz>
9014
9015         * tree-sra.c (duplicate_expr_for_different_base): Removed.
9016         (create_artificial_child_access): Use build_ref_for_offset instead
9017         of duplicate_expr_for_different_base.
9018         (propagate_subacesses_accross_link): Likewise.
9019
9020 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
9021
9022         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
9023         of INSN_P.
9024         (mips16e_collect_argument_saves): Skip debug instructions.
9025         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
9026         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
9027         (r10k_insert_cache_barriers): Likewise.
9028         (mips_reorg_process_insns): Likewise.
9029
9030 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
9031
9032         PR bootstrap/41241
9033         * ira.c (update_equiv_reg): Remove check on class likely spill.
9034
9035 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
9036
9037         PR debug/41236
9038         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
9039         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
9040         it or SUBREG.
9041
9042         PR debug/41238
9043         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
9044         the stack slot if it is passed by invisible reference.
9045         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
9046         by invisible reference.
9047
9048 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
9049
9050         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
9051         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
9052         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
9053         0.
9054         * config/bfin/sync.md: New file.
9055         * config/bfin/bfin.md: Include it.
9056         (UNSPEC_ATOMIC): New.
9057         (UNSPEC_ONES): Provide a unique number.
9058
9059         From Jie Zhang <jie.zhang@analog.com>:
9060         * config/bfin/bfin.c (ret_regs): New.
9061         (must_save_fp_p): Don't return true because of frame_pointer_needed.
9062         (must_save_rets_p): New.
9063         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
9064         current_function_is_leaf.
9065         (do_link): Likewise.
9066         (do_unlink): Likewise.
9067         (expand_interrupt_handler_prologue): Use ret_regs array.
9068         (expand_interrupt_handler_epilogue): Use ret_regs array and
9069         pass return register to gen_return_internal.
9070         (bfin_expand_epilogue): Pass return register to
9071         gen_return_internal.
9072         (bfin_expand_call): Explicitly clobber RETS.
9073         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
9074         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
9075         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
9076         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
9077         RETS.
9078         (return_internal): Take a reg rtx rather than the register number.
9079
9080 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
9081
9082         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
9083         when comparing against estimated_loop_iterations_int return.
9084
9085 2009-09-03  Richard Guenther  <rguenther@suse.de>
9086
9087         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
9088         eh_personality_libfunc.
9089
9090 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9091
9092         * tree-parloops.c (separate_decls_in_region): Add space.
9093
9094 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9095
9096         * tree-parloops.c (separate_decls_in_region): Change the condition
9097         checking if there are reductions in the loop.
9098
9099 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9100
9101         PR tree-optimization/38275
9102         * tree-parloops.c (parallelize_loops): Replace profitability condition
9103         for expected number of iterations.
9104
9105 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
9106
9107         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
9108         (bootstrap-debug): Explain conditions in which it becomes default.
9109         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
9110         make it add to it.
9111
9112 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
9113
9114         * doc/invoke.texi (Optimize Options): Move
9115         -finline-small-functions to the -O2 list.
9116
9117 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
9118
9119         * toplev.c (process_options): Enable var-tracking-assignments
9120         by default if var-tracking is enabled.
9121
9122 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
9123
9124         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
9125         barrier.
9126         * emit-rtl.c (prev_nonnote_insn_bb): New function.
9127         * rtl.h (prev_nonnote_insn_bb): Declare it.
9128
9129 2009-09-03  Diego Novillo  <dnovillo@google.com>
9130
9131         * cgraph.c (cgraph_node_for_decl): New.
9132         * cgraph.h (cgraph_node_for_decl): Declare.
9133         * tree.c (host_integerp): Return 0 if T is NULL.
9134
9135 2009-09-03  Diego Novillo  <dnovillo@google.com>
9136
9137         * tree.h (struct alias_pair): Move from varasm.c.
9138         (alias_pairs): Likewise.
9139         (TYPE_MAXVAL): Define.
9140         (TYPE_MINVAL): Define.
9141         (iterative_hash_host_wide_int): Declare.
9142         (remove_unreachable_alias_pairs): Declare.
9143         * tree-pass.h (pass_ipa_free_lang_data): Declare.
9144         * diagnostic.c (default_diagnostic_starter): Make extern.
9145         (default_diagnostic_finalizer): Make extern.
9146         * diagnostic.h (default_diagnostic_starter): Declare.
9147         (default_diagnostic_finalizer): Declare.
9148         (default_tree_printer): Declare.
9149         * toplev.c (default_tree_printer): Make extern.
9150
9151 2009-09-03  Richard Guenther  <rguenther@suse.de>
9152             Diego Novillo  <dnovillo@google.com>
9153
9154         * cgraph.c (cgraph_add_new_function): Remove gimplification.
9155         * cgraphunit.c (cgraph_expand_function): Do not emit
9156         associated thunks from here.
9157         (cgraph_emit_thunks): New.
9158         (cgraph_optimize): Call it.
9159         Return if any IPA pass finds an error.
9160         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
9161         by thunks.
9162
9163 2009-09-03  Simon Baldwin  <simonb@google.com>
9164             Rafael Espindola  <espindola@google.com>
9165             Richard Guenther  <rguenther@suse.de>
9166             Doug Kwan  <dougkwan@google.com>
9167             Diego Novillo  <dnovillo@google.com>
9168
9169         * tree.c: Include tree-pass.h, langhooks-def.h,
9170         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
9171         (free_lang_data_in_type): New.
9172         (need_assembler_name_p): New.
9173         (free_lang_data_in_block): New.
9174         (free_lang_data_in_decl): New.
9175         (struct free_lang_data_d): New.
9176         (add_tree_to_fld_list): New.
9177         (find_decls_types_r): New.
9178         (get_eh_types_for_runtime): New.
9179         (find_decls_types_in_eh_region): New.
9180         (find_decls_types_in_node): New.
9181         (find_decls_types_in_var): New.
9182         (free_lang_data_in_cgraph): New.
9183         (free_lang_data): New.
9184         (gate_free_lang_data): New.
9185         (pass_ipa_free_lang_data): New.
9186
9187 2009-09-03  Diego Novillo  <dnovillo@google.com>
9188
9189         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
9190         * langhooks.h (struct lang_hooks): Add field free_lang_data.
9191         (lang_hooks): Remove const qualifier.
9192         * ipa.c (cgraph_remove_unreachable_nodes): Call
9193         remove_unreachable_alias_pairs.
9194         * except.c (add_type_for_runtime): Check if TYPE has
9195         already been converted.
9196         (lookup_type_for_runtime): Likewise.
9197         (check_handled): Handle converted types.
9198         * varasm.c (remove_unreachable_alias_pairs): New.
9199         * gimple.c: Include demangle.h.
9200         (gimple_decl_printable_name): New.
9201         (gimple_fold_obj_type_ref): New.
9202         * gimple.h (gimple_decl_printable_name): Declare.
9203         (gimple_fold_obj_type_ref): Declare.
9204         * passes.c (init_optimization_passes): Add pass
9205         pass_ipa_free_lang_data.
9206         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
9207         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
9208
9209 2009-09-03  Diego Novillo  <dnovillo@google.com>
9210
9211         * c-lang.c (lang_hooks): Remove const qualifier.
9212
9213 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
9214
9215         * doc/install.texi (*-*-freebsd*): Update target information.
9216
9217 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
9218
9219         * hard-reg-set.h (call_fixed_regs): Remove.
9220         * reginfo.c (call_fixed_regs): Remove.
9221         (init_reg_sets_1): Remove initialization of call_fixed_regs.
9222         (globalize_reg): Don't use call_fixed_regs.
9223         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
9224         call_fixed_regs.
9225
9226 2009-09-01  Michael Matz  <matz@suse.de>
9227
9228         * expr.h (emit_storent_insn, expand_expr_real_1,
9229         expand_expr_real_2): Declare.
9230         * expr.c (emit_storent_insn, expand_expr_real_1,
9231         expand_expr_real_2): Export.
9232         (store_expr): Setting and evaluating dont_return_target is useless.
9233         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
9234         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
9235         * except.c (expand_resx_expr): Rename to ...
9236         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
9237         * except.h (expand_resx_stmt): Declare.
9238         * stmt.c: Add include gimple.h
9239         (expand_asm_expr): Rename to ...
9240         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
9241         (expand_case): Rewrite to take gimple statement.
9242         * tree.h (expand_asm_stmt): Declare.
9243         (expand_case): Change prototype.
9244         * Makefile.in (stmt.o): Depend on gimple.h.
9245         * builtins.c (expand_builtin_synchronize): Build gimple asm
9246         statement, not an ASM_EXPR.
9247         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
9248         gimple_to_tree, release_stmt_tree): Remove.
9249         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
9250         ggc_free, but hold comparison code and operands separately.
9251         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
9252         (expand_call_stmt, expand_gimple_stmt_1,
9253         expand_gimple_stmt): New helpers.
9254         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
9255         release_stmt_tree.  Call expand_gimple_stmt instead.
9256         (expand_gimple_basic_block): Ditto.
9257
9258         * calls.c (emit_call_1): Don't look at EH regions here, make
9259         fntree parameter useless.
9260         (expand_call): New local rettype for TREE_TYPE(exp), use it
9261         throughout.  Remove local p, use addr instead.
9262         Don't look at EH regions here.
9263
9264 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
9265
9266         * doc/invoke.texi (-fsched-pressure): Document it.
9267         (-fsched-reg-pressure-heuristic): Remove it.
9268
9269         * reload.c (ira.h): Include.
9270         (find_reloads): Add choosing reload on number of small spilled
9271         classes.
9272
9273         * haifa-sched.c (ira.h): Include.
9274         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
9275         saved_reg_pressure, curr_reg_live, saved_reg_live,
9276         region_ref_regs): New variables.
9277         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
9278         initiate_reg_pressure_info, setup_ref_regs,
9279         initiate_bb_reg_pressure_info, save_reg_pressure,
9280         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
9281         functions.
9282         (setup_insn_reg_pressure_info): New function.
9283         (rank_for_schedule): Add pressure checking and insn issue time.
9284         Remove comparison of insn reg weights.
9285         (ready_sort): Set insn reg pressure info.
9286         (update_register_pressure, setup_insn_max_reg_pressure,
9287         update_reg_and_insn_max_reg_pressure,
9288         sched_setup_bb_reg_pressure_info): New functions.
9289         (schedule_insn): Add code for printing and updating reg pressure info.
9290         (find_set_reg_weight, find_insn_reg_weight): Remove.
9291         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
9292         (debug_ready_list): Print reg pressure info.
9293         (schedule_block): Ditto.  Check insn issue time.
9294         (sched_init): Set up sched_pressure_p.  Allocate and set up some
9295         reg pressure related info.
9296         (sched_finish): Free some reg pressure related info.
9297         (fix_tick_ready): Make insn always ready if pressure_p.
9298         (init_h_i_d): Don't call find_insn_reg_weight.
9299         (haifa_finish_h_i_d): Free insn reg pressure info.
9300
9301         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
9302         ira_memory_move_cost, ira_class_hard_regs,
9303         ira_class_hard_regs_num, ira_no_alloc_regs,
9304         ira_available_class_regs, ira_reg_class_cover_size,
9305         ira_reg_class_cover, ira_class_translate): Move to ira.h.
9306
9307         * ira-lives.c (single_reg_class): Check mode to find how many
9308         registers are necessary for operand.
9309         (ira_implicitly_set_insn_hard_regs): New.
9310
9311         * common.opt (fsched-pressure): New options.
9312         (fsched-reg-pressure-heuristic): Remove.
9313
9314         * ira.c (setup_eliminable_regset): Rename to
9315         ira_setup_eliminable_regset.  Make it external.
9316         (expand_reg_info): Pass cover class to setup_reg_classes.
9317         (ira): Call resize_reg_info instead of allocate_reg_info.
9318
9319         * sched-deps.c: Include ira.h.
9320         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
9321         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
9322         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
9323         mark_insn_hard_regno_birth, mark_insn_reg_birth,
9324         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
9325         mark_insn_reg_store, mark_insn_reg_clobber,
9326         setup_insn_reg_pressure_info): New.
9327         (sched_analyze_1): Update implicit_reg_pending_uses.
9328         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
9329         Use them to create dependencies.  Set insn reg uses and pressure
9330         info.  Process reg_pending_uses in one place.
9331         (free_deps): Free implicit sets.
9332         (remove_from_deps): Remove implicit sets if necessary.  Check
9333         implicit sets when clearing reg_last_in_use.
9334         (init_deps_global): Clear implicit_reg_pending_clobbers and
9335         implicit_reg_pending_uses.
9336
9337         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
9338         ira_memory_move_cost, ira_class_hard_regs,
9339         ira_class_hard_regs_num, ira_no_alloc_regs,
9340         ira_available_class_regs, ira_reg_class_cover_size,
9341         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
9342         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
9343         ira_implicitly_set_insn_hard_regs): New prototypes.
9344
9345         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
9346         cost_elements_num): New variables.
9347         (allocno_costs, total_costs): Rename to costs and
9348         total_allocno_costs.
9349         (COSTS_OF_ALLOCNO): Rename to COSTS.
9350         (allocno_pref): Rename to pref.
9351         (allocno_pref_buffer): Rename to pref_buffer.
9352         (common_classes): Rename to regno_cover_class.
9353         (COST_INDEX): New.
9354         (record_reg_classes): Set allocno attributes only if allocno_p.
9355         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
9356         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
9357         and COSTS_OF_ALLOCNO.
9358         (print_costs): Rename to print_allocno_costs.
9359         (print_pseudo_costs): New.
9360         (process_bb_node_for_costs): Split into 2 functions with new
9361         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
9362         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
9363         new parameter dump_file.  Use cost_elements_num instead of
9364         ira_allocnos_num.  Make one iteration if preferred classes were
9365         already calculated for scheduler.  Make 2 versions of code
9366         depending on allocno_p.
9367         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
9368         regno_cover_class and COSTS instead of common_classes and
9369         COSTS_OF_ALLOCNO.
9370         (init_costs, finish_costs): New.
9371         (ira_costs): Set up allocno_p and cost_elements_num.  Call
9372         init_costs and finish_costs.
9373         (ira_set_pseudo_classes): New.
9374
9375         * rtl.h (allocate_reg_info): Remove.
9376         (resize_reg_info): Change return type.
9377         (reg_cover_class): New.
9378         (setup_reg_classes): Add new parameter.
9379
9380         * sched-int.h (struct deps_reg): New member implicit_sets.
9381         (sched_pressure_p, sched_regno_cover_class): New external definitions.
9382         (INCREASE_BITS): New macro.
9383         (struct reg_pressure_data, struct reg_use_data): New.
9384         (struct _haifa_insn_data): Remove reg_weight.  Add members
9385         reg_pressure, reg_use_list, reg_set_list, and
9386         reg_pressure_excess_cost_change.
9387         (struct deps): New member implicit_sets.
9388         (pressure_p): New variable.
9389         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
9390         (struct reg_pressure_data, struct reg_use_data): New.
9391         (INSN_REG_WEIGHT): Remove.
9392         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
9393         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
9394         (sched_init_region_reg_pressure_info,
9395         sched_setup_bb_reg_pressure_info): New prototypes.
9396
9397         * reginfo.c (struct reg_pref): New member coverclass.
9398         (reg_cover_class): New function.
9399         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
9400         (reg_info_size): New variable.
9401         (allocate_reg_info): Make static.  Setup reg_info_size.
9402         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
9403         (setup_reg_classes): Add a new parameter.  Setup cover class too.
9404
9405         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
9406         the dependencies.
9407
9408         * sched-rgn.c (deps_join): Set up implicit_sets.
9409         (schedule_region): Set up region and basic blocks pressure
9410         relative info.
9411
9412         * passes.c (init_optimization_passes): Move
9413         pass_subregs_of_mode_init before pass_sched.
9414
9415 2009-09-02  Martin Jambor  <mjambor@suse.cz>
9416
9417         * tree-sra.c (struct access): New field grp_hint.
9418         (dump_access): Dump grp_hint.
9419         (sort_and_splice_var_accesses): Set grp_hint if a group is read
9420         multiple times.
9421         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
9422         those which have been specifically read and somehow written to.
9423         (propagate_subacesses_accross_link): Set grp_hint of right child and
9424         also possibly of the left child.
9425
9426 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
9427
9428         * tree-object-size.c (addr_object_size): Always use object_size_type
9429         0 or 2 when determining the pointer pointed object size.
9430
9431 2009-09-02  Richard Guenther  <rguenther@suse.de>
9432
9433         Revert
9434         2009-08-31  Richard Guenther  <rguenther@suse.de>
9435
9436         * builtins.c (fold_builtin_memory_op): Use the alias oracle
9437         to query if the memory regions for memmove overlap.
9438         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
9439         asserts on pointers, instead deal with odd trees.
9440         (ptr_derefs_may_alias_p): Likewise.
9441         (refs_may_alias_p_1): Constructor bases also never alias.
9442
9443 2009-08-01  Christian Bruel  <christian.bruel@st.com>
9444
9445         Revert:
9446         2009-07-31  Christian Bruel  <christian.bruel@st.com>
9447         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
9448
9449 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
9450
9451         * doc/invoke.texi (-fvar-tracking-assignments): New.
9452         (-fvar-tracking-assignments-toggle): New.
9453         (-fdump-final-insns=file): Mark filename as optional.
9454         (--param min-nondebug-insn-uid): New.
9455         (-gdwarf-@{version}): Mention version 4.
9456         * opts.c (common_handle_option): Accept it.
9457         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
9458         * regrename.c (regrename_optimize): Drop last.  Don't count debug
9459         insns as uses.  Don't reject change because of debug insn.
9460         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
9461         from the chain starter, and check for inexact matches in DEBUG_INSNS.
9462         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
9463         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
9464         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
9465         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
9466         * doc/gimple.texi (is_gimple_debug): New.
9467         (gimple_debug_bind_p): New.
9468         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
9469         * doc/install.texi (bootstrap-debug): More details.
9470         (bootstrap-debug-big, bootstrap-debug-lean): Document.
9471         (bootstrap-debug-lib): More details.
9472         (bootstrap-debug-ckovw): Update.
9473         (bootstrap-time): New.
9474         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
9475         (insert_phi_nodes_for): Insert debug stmts.
9476         (rewrite_stmt): Take iterator.  Insert debug stmts.
9477         (rewrite_enter_block): Adjust.
9478         (maybe_replace_use_in_debug_stmt): New.
9479         (rewrite_update_stmt): Use it.
9480         (mark_use_interesting): Return early for debug stmts.
9481         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
9482         stmts before replacing stmt.
9483         (move_computations_stmt): Likewise.
9484         * ira-conflicts.c (add_copies): Skip debug insns.
9485         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
9486         (regstat_bb_compute_ri): Skip debug insns.
9487         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
9488         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
9489         check_loop_closed_ssa_stmt): Skip debug stmts.
9490         * tree-tailcall.c (find_tail_calls): Likewise.
9491         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
9492         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
9493         (build_var_debug_value_stat): Declare.
9494         (build_var_debug_value): Define.
9495         (target_for_debug_bind): Declare.
9496         * reload.c (find_equiv_reg): Skip debug insns.
9497         * rtlanal.c (reg_used_between_p): Skip debug insns.
9498         (side_effects_p): Likewise.
9499         (canonicalize_condition): Likewise.
9500         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
9501         insns never depend on debug insns.
9502         (create_ddg_dep_no_link): Likewise.
9503         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
9504         Don't add inter-loop dependencies for debug insns.
9505         (build_intra_loop_deps): Likewise.
9506         (create_ddg): Count debug insns.
9507         * ddg.h (struct ddg::num_debug): New.
9508         (num_backargs): Pair up with previous int field.
9509         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
9510         -fcompare-debug-second.
9511         * final.c (get_attr_length_1): Skip debug insns.
9512         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
9513         * gcc.c (invoke_as): Call compare-debug-dump-opt.
9514         (driver_self_specs): Map -fdump-final-insns to
9515         -fdump-final-insns=..
9516         (get_local_tick): New.
9517         (compare_debug_dump_opt_spec_function): Test for . argument and
9518         compute output name.  Compute temp output spec without flag name.
9519         Compute -frandom-seed.
9520         (OPT): Undef after use.
9521         * cfgloopanal.c (num_loop_insns): Skip debug insns.
9522         (average_num_loop_insns): Likewise.
9523         * params.h (MIN_NONDEBUG_INSN_UID): New.
9524         * gimple.def (GIMPLE_DEBUG): New.
9525         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
9526         * auto-inc-dec.c (merge_in_block): Skip debug insns.
9527         (merge_in_block): Fix whitespace.
9528         * toplev.c (flag_var_tracking): Update comment.
9529         (flag_var_tracking_assignments): New.
9530         (flag_var_tracking_assignments_toggle): New.
9531         (process_options): Don't open final insns dump file if we're not
9532         going to write to it.  Compute defaults for var_tracking.
9533         * df-scan.c (df_insn_rescan_debug_internal): New.
9534         (df_uses_record): Handle debug insns.
9535         * haifa-sched.c (ready): Initialize n_debug.
9536         (contributes_to_priority): Skip debug insns.
9537         (dep_list_size): New.
9538         (priority): Use it.
9539         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
9540         they're ready.  Disregard previous debug insns to make decisions.
9541         (queue_insn): Never queue debug insns.
9542         (ready_add, ready_remove_first, ready_remove): Count debug insns.
9543         (schedule_insn): Don't reject debug insns because of issue rate.
9544         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
9545         (queue_to_ready): Skip and discount debug insns.
9546         (choose_ready): Let debug insns through.
9547         (schedule_block): Check boundary debug insns.  Discount debug
9548         insns, schedule them early.  Adjust whitespace.
9549         (set_priorities): Check for boundary debug insns.
9550         (add_jump_dependencies): Use dep_list_size.
9551         (prev_non_location_insn): New.
9552         (check_cfg): Use it.
9553         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
9554         stmts.
9555         (remove_unused_ivs): Reset debug stmts.
9556         * modulo-sched.c (const_iteration_count): Skip debug insns.
9557         (res_MII): Discount debug insns.
9558         (loop_single_full_bb_p): Skip debug insns.
9559         (sms_schedule): Likewise.
9560         (sms_schedule_by_order): Likewise.
9561         (ps_has_conflicts): Likewise.
9562         * caller-save.c (refmarker_fn): New.
9563         (save_call_clobbered_regs): Replace regs with saved mem in
9564         debug insns.
9565         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
9566         Call refmarker_fn mark for hardregnos.
9567         (mark_reg_as_referenced): New.
9568         (replace_reg_with_saved_mem): New.
9569         * ipa-pure-const.c (check_stmt): Skip debug stmts.
9570         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
9571         searching back.
9572         (cse_extended_basic_block): Skip debug insns.
9573         (count_reg_usage): Likewise.
9574         (is_dead_reg): New, split out of...
9575         (set_live_p): ... here.
9576         (insn_live_p): Use it for debug insns.
9577         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
9578         (execute_optimize_stdarg): Likewise.
9579         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
9580         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
9581         changes in debug stmts as changes.
9582         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
9583         (moveup_expr): Don't move across debug insns.  Don't move
9584         debug insn if it would create a bookkeeping block.
9585         (moveup_expr_cached): Don't use cache for debug insns that
9586         are heads of blocks.
9587         (compute_av_set_inside_bb): Skip debug insns.
9588         (sel_rank_for_schedule): Schedule debug insns first.  Remove
9589         dead code.
9590         (block_valid_for_bookkeeping_p); Support lax searches.
9591         (create_block_for_bookkeeping): Adjust block numbers when
9592         encountering debug-only blocks.
9593         (find_place_for_bookkeeping): Deal with debug-only blocks.
9594         (generate_bookkeeping_insn): Accept no place to insert.
9595         (remove_temp_moveop_nops): New argument full_tidying.
9596         (prepare_place_to_insert): Deal with debug insns.
9597         (advance_state_on_fence): Debug insns don't start cycles.
9598         (update_boundaries): Take fence as argument.  Deal with
9599         debug insns.
9600         (schedule_expr_on_boundary): No full_tidying on debug insns.
9601         (fill_insns): Deal with debug insns.
9602         (track_scheduled_insns_and_blocks): Don't count debug insns.
9603         (need_nop_to_preserve_insn_bb): New, split out of...
9604         (remove_insn_from_stream): ... this.
9605         (fur_orig_expr_not_found): Skip debug insns.
9606         * rtl.def (VALUE): Move up.
9607         (DEBUG_INSN): New.
9608         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
9609         (nearest_common_dominator_of_uses): Take debug_stmts argument.
9610         Set it if debug stmts are found.
9611         (statement_sink_location): Skip debug stmts.  Propagate
9612         moving defs into debug stmts.
9613         * ifcvt.c (first_active_insn): Skip debug insns.
9614         (last_active_insns): Likewise.
9615         (cond_exec_process_insns): Likewise.
9616         (noce_process_if_block): Likewise.
9617         (check_cond_move_block): Likewise.
9618         (cond_move_convert_if_block): Likewise.
9619         (block_jumps_and_fallthru_p): Likewise.
9620         (dead_or_predicable): Likewise.
9621         * dwarf2out.c (debug_str_hash_forced): New.
9622         (find_AT_string): Add comment.
9623         (gen_label_for_indirect_string): New.
9624         (get_debug_string_label): New.
9625         (AT_string_form): Use it.
9626         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
9627         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
9628         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
9629         several operations that cannot be represented with DWARF opcodes.
9630         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
9631         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
9632         (dwarf2out_var_location): Take during-call mark into account.
9633         (output_indirect_string): Update comment.  Output if there are
9634         label and references.
9635         (prune_indirect_string): New.
9636         (prune_unused_types): Call it if debug_str_hash_forced.
9637         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
9638         (dw_long_long_const): Remove.
9639         (struct dw_val_struct): Change val_long_long type to rtx.
9640         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
9641         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
9642         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
9643         component instead of HOST_BITS_PER_LONG.
9644         (output_loc_operands): Likewise.  For const8* assert
9645         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
9646         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
9647         rather than HOST_BITS_PER_LONG is >= 64.
9648         (add_AT_long_long): Remove val_hi and val_lo arguments, add
9649         val_const_double.
9650         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
9651         HOST_BITS_PER_LONG for dw_val_class_long_long.
9652         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
9653         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
9654         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
9655         DW_OP_stack_value.
9656         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
9657         Handle DW_OP_implicit_value.
9658         (extract_int): Move prototype earlier.
9659         (mem_loc_descriptor): For SUBREG punt if inner
9660         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
9661         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
9662         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
9663         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
9664         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
9665         instead of Pmode size.
9666         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
9667         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
9668         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
9669         (concat_loc_descriptor, concatn_loc_descriptor,
9670         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
9671         (add_location_or_const_value_attribute): Likewise.  For single
9672         location loc_lists attempt to use add_const_value_attribute
9673         for constant decls.  Add DW_AT_const_value even if
9674         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
9675         in its expression.
9676         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
9677         (control_flow_insn_p): Likewise.
9678         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
9679         (separate_decls_in_region_debug_bind): New.
9680         (separate_decls_in_region): Process debug bind stmts afterwards.
9681         * recog.c (verify_changes): Handle debug insns.
9682         (extract_insn): Likewise.
9683         (peephole2_optimize): Skip debug insns.
9684         * dse.c (scan_insn): Skip debug insns.
9685         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
9686         Pass it on.
9687         (setup_id_for_insn): Handle debug insns.
9688         (maybe_tidy_empty_bb): Adjust whitespace.
9689         (tidy_control_flow): Skip debug insns.
9690         (sel_remove_insn): Adjust for debug insns.
9691         (sel_estimate_number_of_insns): Skip debug insns.
9692         (create_insn_rtx_from_pattern): Handle debug insns.
9693         (create_copy_of_insn_rtx): Likewise.
9694         * sel-sched-.h (sel_bb_end): Declare.
9695         (sel_bb_empty_or_nop_p): New.
9696         (get_all_loop_exits): Use it.
9697         (_eligible_successor_edge_p): Likewise.
9698         (return_nop_to_pool): Adjust.
9699         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
9700         * ira-lives.c (process_bb_node_lives): Skip debug insns.
9701         * gimple-pretty-print.c (dump_gimple_debug): New.
9702         (dump_gimple_stmt): Use it.
9703         (dump_bb_header): Skip gimple debug stmts.
9704         * regmove.c (optimize_reg_copy_1): Discount debug insns.
9705         (fixup_match_2): Likewise.
9706         (regmove_backward_pass): Likewise.  Simplify combined
9707         replacement.  Handle debug insns.
9708         * function.c (instantiate_virtual_regs): Handle debug insns.
9709         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
9710         * print-rtl.h: Include cselib.h.
9711         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
9712         * df.h (df_inns_rescan_debug_internal): Declare.
9713         * gcse.c (alloc_hash_table): Estimate n_insns.
9714         (cprop_insn): Don't regard debug insns as changes.
9715         (bypass_conditional_jumps): Skip debug insns.
9716         (one_pre_gcse_pass): Adjust.
9717         (one_code_hoisting_pass): Likewise.
9718         (compute_ld_motion_mems): Skip debug insns.
9719         (one_cprop_pass): Adjust.
9720         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
9721         (if_convertible_stmt_p): Handle debug stmts.
9722         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
9723         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
9724         * ira-build.c (create_bb_allocnos): Skip debug insns.
9725         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
9726         (has_single_use): Likewise.
9727         (single_imm_use): Likewise.
9728         (num_imm_uses): Likewise.
9729         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
9730         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
9731         (create_outofssa_var_map): Likewise.
9732         * lower-subreg.c (adjust_decomposed_uses): New.
9733         (resolve_debug): New.
9734         (decompose_multiword_subregs): Use it.
9735         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
9736         * emit-rtl.c: Include params.h.
9737         (cur_debug_insn_uid): Define.
9738         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
9739         (copy_rtx_if_shared_1): Handle debug insns.
9740         (reset_used_flags): Likewise.
9741         (set_used_flags): LIkewise.
9742         (get_max_insn_count): New.
9743         (next_nondebug_insn): New.
9744         (prev_nondebug_insn): New.
9745         (make_debug_insn_raw): New.
9746         (emit_insn_before_noloc): Handle debug insns.
9747         (emit_jump_insn_before_noloc): Likewise.
9748         (emit_call_insn_before_noloc): Likewise.
9749         (emit_debug_insn_before_noloc): New.
9750         (emit_insn_after_noloc): Handle debug insns.
9751         (emit_jump_insn_after_noloc): Likewise.
9752         (emit_call_insn_after_noloc): Likewise.
9753         (emit_debug_insn_after_noloc): Likewise.
9754         (emit_insn_after): Take loc from earlier non-debug insn.
9755         (emit_jump_insn_after): Likewise.
9756         (emit_call_insn_after): Likewise.
9757         (emit_debug_insn_after_setloc): New.
9758         (emit_debug_insn_after): New.
9759         (emit_insn_before): Take loc from later non-debug insn.
9760         (emit_jump_insn_before): Likewise.
9761         (emit_call_insn_before): Likewise.
9762         (emit_debug_insn_before_setloc): New.
9763         (emit_debug_insn_before): New.
9764         (emit_insn): Handle debug insns.
9765         (emit_debug_insn): New.
9766         (emit_jump_insn): Handle debug insns.
9767         (emit_call_insn): Likewise.
9768         (emit): Likewise.
9769         (init_emit): Take min-nondebug-insn-uid into account.
9770         Initialize cur_debug_insn_uid.
9771         (emit_copy_of_insn_after): Handle debug insns.
9772         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
9773         location of single rhs in place.
9774         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
9775         (floor_sdiv_adjust): New.
9776         (cell_sdiv_adjust): New.
9777         (cell_udiv_adjust): New.
9778         (round_sdiv_adjust): New.
9779         (round_udiv_adjust): New.
9780         (wrap_constant): Moved from cselib.
9781         (unwrap_constant): New.
9782         (expand_debug_expr): New.
9783         (expand_debug_locations): New.
9784         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
9785         debug bind stmts.
9786         (gimple_expand_cfg): Expand debug locations.
9787         * cselib.c: Include tree-pass.h.
9788         (struct expand_value_data): New.
9789         (cselib_record_sets_hook): New.
9790         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
9791         (cselib_clear_table): Move, and implemnet in terms of...
9792         (cselib_reset_table_with_next_value): ... this.
9793         (cselib_get_next_unknown_value): New.
9794         (discard_useless_locs): Don't discard preserved values.
9795         (cselib_preserve_value): New.
9796         (cselib_preserved_value_p): New.
9797         (cselib_preserve_definitely): New.
9798         (cselib_clear_preserve): New.
9799         (cselib_preserve_only_values): New.
9800         (new_cselib_val): Take rtx argument.  Dump it in details.
9801         (cselib_lookup_mem): Adjust.
9802         (expand_loc): Take regs_active in struct.  Adjust.  Silence
9803         dumps unless details are requested.
9804         (cselib_expand_value_rtx_cb): New.
9805         (cselib_expand_value_rtx): Rename and reimplment in terms of...
9806         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
9807         without details.  Copy more subregs.  Try to resolve values
9808         using a callback.  Wrap constants.
9809         (cselib_subst_to_values): Adjust.
9810         (cselib_log_lookup): New.
9811         (cselib_lookup): Call it.
9812         (cselib_invalidate_regno): Don't count preserved values as useless.
9813         (cselib_invalidate_mem): Likewise.
9814         (cselib_record_set): Likewise.
9815         (struct set): Renamed to cselib_set, moved to cselib.h.
9816         (cselib_record_sets): Adjust.  Call hook.
9817         (cselib_process_insn): Reset table when it would be cleared.
9818         (dump_cselib_val): New.
9819         (dump_cselib_table): New.
9820         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
9821         (remove_forwarder_block): Support moving debug stmts.
9822         * cselib.h (cselib_record_sets_hook): Declare.
9823         (cselib_expand_callback): New type.
9824         (cselib_expand_value_rtx_cb): Declare.
9825         (cselib_reset_table_with_next_value): Declare.
9826         (cselib_get_next_unknown_value): Declare.
9827         (cselib_preserve_value): Declare.
9828         (cselib_preserved_value_p): Declare.
9829         (cselib_preserve_only_values): Declare.
9830         (dump_cselib_table): Declare.
9831         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
9832         (try_crossjump_to_edge): Likewise.
9833         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
9834         dominated blocks when debug stmts are present.
9835         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
9836         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
9837         (set_var_live_on_entry): Likewise.
9838         * loop-invariant.c (find_invariants_bb): Skip debug insns.
9839         * cfglayout.c (curr_location, last_location): Make static.
9840         (set_curr_insn_source_location): Don't avoid bouncing.
9841         (get_curr_insn_source_location): New.
9842         (get_curr_insn_block): New.
9843         (duplicate_insn_chain): Handle debug insns.
9844         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
9845         into debug stmts.
9846         * common.opt (fcompare-debug): Move to sort order.
9847         (fdump-unnumbered-links): Likewise.
9848         (fvar-tracking-assignments): New.
9849         (fvar-tracking-assignments-toggle): New.
9850         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
9851         because of debug stmts.
9852         (mark_stmt_if_obviously_necessary): Mark debug stmts.
9853         (eliminate_unnecessary_stmts): Walk dominated blocks before
9854         dominators.
9855         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
9856         * ira.c (memref_used_between_p): Skip debug insns.
9857         (update_equiv_regs): Likewise.
9858         * sched-deps.c (sd_lists_size): Accept empty list.
9859         (sd_init_insn): Mark debug insns.
9860         (sd_finish_insn): Unmark them.
9861         (sd_add_dep): Reject non-debug deps on debug insns.
9862         (fixup_sched_groups): Give debug insns group treatment.
9863         Skip debug insns.
9864         (sched_analyze_reg): Don't mark debug insns for sched before call.
9865         (sched_analyze_2): Handle debug insns.
9866         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
9867         insns.
9868         (deps_analyze_insn): Handle debug insns.
9869         (deps_start_bb): Skip debug insns.
9870         (init_deps): Initialize last_debug_insn.
9871         * tree-ssa.c (target_for_debug_bind): New.
9872         (find_released_ssa_name): New.
9873         (propagate_var_def_into_debug_stmts): New.
9874         (propagate_defs_into_debug_stmts): New.
9875         (verify_ssa): Skip debug bind stmts without values.
9876         (warn_uninialized_vars): Skip debug stmts.
9877         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
9878         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
9879         (rtx_equal_p): Likewise.
9880         * ira-costs.c (scan_one_insn): Skip debug insns.
9881         (process_bb_node_for_hard_reg_moves): Likewise.
9882         * rtl.h (DEBUG_INSN_P): New.
9883         (NONDEBUG_INSN_P): New.
9884         (MAY_HAVE_DEBUG_INSNS): New.
9885         (INSN_P): Accept debug insns.
9886         (RTX_FRAME_RELATED_P): Likewise.
9887         (INSN_DELETED_P): Likewise
9888         (PAT_VAR_LOCATION_DECL): New.
9889         (PAT_VAR_LOCATION_LOC): New.
9890         (PAT_VAR_OCATION_STATUS): New.
9891         (NOTE_VAR_LOCATION_DECL): Reimplement.
9892         (NOTE_VAR_LOCATION_LOC): Likewise.
9893         (NOTE_VAR_LOCATION_STATUS): Likewise.
9894         (INSN_VAR_LOCATION): New.
9895         (INSN_VAR_LOCATION_DECL): New.
9896         (INSN_VAR_LOCATION_LOC): New.
9897         (INSN_VAR_LOCATION_STATUS): New.
9898         (gen_rtx_UNKNOWN_VAR_LOC): New.
9899         (VAR_LOC_UNKNOWN_P): New.
9900         (NOTE_DURING_CALL_P): New.
9901         (SCHED_GROUP_P): Accept debug insns.
9902         (emit_debug_insn_before): Declare.
9903         (emit_debug_insn_before_noloc): Declare.
9904         (emit_debug_insn_beore_setloc): Declare.
9905         (emit_debug_insn_after): Declare.
9906         (emit_debug_insn_after_noloc): Declare.
9907         (emit_debug_insn_after_setloc): Declare.
9908         (emit_debug_insn): Declare.
9909         (make_debug_insn_raw): Declare.
9910         (prev_nondebug_insn): Declare.
9911         (next_nondebug_insn): Declare.
9912         (delegitimize_mem_from_attrs): Declare.
9913         (get_max_insn_count): Declare.
9914         (wrap_constant): Declare.
9915         (unwrap_constant): Declare.
9916         (get_curr_insn_source_location): Declare.
9917         (get_curr_insn_block): Declare.
9918         * tree-inline.c (insert_debug_decl_map): New.
9919         (processing_debug_stmt): New.
9920         (remap_decl): Don't create new mappings in debug stmts.
9921         (remap_gimple_op_r): Don't add references in debug stmts.
9922         (copy_tree_body_r): Likewise.
9923         (remap_gimple_stmt): Handle debug bind stmts.
9924         (copy_bb): Skip debug stmts.
9925         (copy_edges_for_bb): Likewise.
9926         (copy_debug_stmt): New.
9927         (copy_debug_stmts): New.
9928         (copy_body): Copy debug stmts at the end.
9929         (insert_init_debug_bind): New.
9930         (insert_init_stmt): Take id.  Skip and emit debug stmts.
9931         (setup_one_parameter): Remap variable earlier, register debug mapping.
9932         (estimate_num_insns): Skip debug stmts.
9933         (expand_call_inline): Preserve debug_map.
9934         (optimize_inline_calls): Check for no debug_stmts left-overs.
9935         (unsave_expr_now): Preserve debug_map.
9936         (copy_gimple_seq_and_replace_locals): Likewise.
9937         (tree_function_versioning): Check for no debug_stmts left-overs.
9938         Init and destroy debug_map as needed.  Split edges unconditionally.
9939         (build_duplicate_type): Init and destroy debug_map as needed.
9940         * tree-inline.h: Include gimple.h instead of pointer-set.h.
9941         (struct copy_body_data): Add debug_stmts and debug_map.
9942         * sched-int.h (struct ready_list): Add n_debug.
9943         (struct deps): Add last_debug_insn.
9944         (DEBUG_INSN_SCHED_P): New.
9945         (BOUNDARY_DEBUG_INSN_P): New.
9946         (SCHEDULE_DEBUG_INSN_P): New.
9947         (sd_iterator_cond): Accept empty list.
9948         * combine.c (create_log_links): Skip debug insns.
9949         (combine_instructions): Likewise.
9950         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
9951         return value is always unshared.
9952         (struct rtx_subst_pair): New.
9953         (auto_adjust_pair): New.
9954         (propagate_for_debug_subst): New.
9955         (propagate_for_debug): New.
9956         (try_combine): Skip debug insns.  Propagate removed defs into
9957         debug insns.
9958         (next_nonnote_nondebug_insn): New.
9959         (distribute_notes): Use it.  Skip debug insns.
9960         (distribute_links): Skip debug insns.
9961         * tree-outof-ssa.c (set_location_for_edge): Likewise.
9962         * resource.c (mark_target_live_regs): Likewise.
9963         * var-tracking.c: Include cselib.h and target.h.
9964         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
9965         MO_VAL_SET.
9966         (micro_operation_type_name): New.
9967         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
9968         (struct micro_operation_def): Update comments.
9969         (decl_or_value): New type.  Use instead of decls.
9970         (struct emit_note_data_def): Add vars.
9971         (struct attrs_def): Use decl_or_value.
9972         (struct variable_tracking_info_def): Add permp, flooded.
9973         (struct location_chain_def): Update comment.
9974         (struct variable_part_def): Use decl_or_value.
9975         (struct variable_def): Make var_part a variable length array.
9976         (valvar_pool): New.
9977         (scratch_regs): New.
9978         (cselib_hook_called): New.
9979         (dv_is_decl_p): New.
9980         (dv_is_value_p): New.
9981         (dv_as_decl): New.
9982         (dv_as_value): New.
9983         (dv_as_opaque): New.
9984         (dv_onepart_p): New.
9985         (dv_pool): New.
9986         (IS_DECL_CODE): New.
9987         (check_value_is_not_decl): New.
9988         (dv_from_decl): New.
9989         (dv_from_value): New.
9990         (dv_htab_hash): New.
9991         (variable_htab_hash): Use it.
9992         (variable_htab_eq): Support values.
9993         (variable_htab_free): Free from the right pool.
9994         (attrs_list_member, attrs_list_insert): Use decl_or_value.
9995         (attrs_list_union): Adjust.
9996         (attrs_list_mpdv_union): New.
9997         (tie_break_pointers): New.
9998         (canon_value_cmp): New.
9999         (unshare_variable): Return possibly-modified slot.
10000         (vars_copy_1): Adjust.
10001         (var_reg_decl_set): Adjust.  Split out of...
10002         (var_reg_set): ... this.
10003         (get_init_value): Adjust.
10004         (var_reg_delete_and_set): Adjust.
10005         (var_reg_delete): Adjust.
10006         (var_regno_delete): Adjust.
10007         (var_mem_decl_set): Split out of...
10008         (var_mem_set): ... this.
10009         (var_mem_delete_and_set): Adjust.
10010         (var_mem_delete): Adjust.
10011         (val_store): New.
10012         (val_reset): New.
10013         (val_resolve): New.
10014         (variable_union): Adjust.  Speed up merge of 1-part vars.
10015         (variable_canonicalize): Use unshared slot.
10016         (VALUED_RECURSED_INTO): New.
10017         (find_loc_in_1pdv): New.
10018         (struct dfset_merge): New.
10019         (insert_into_intersection): New.
10020         (intersect_loc_chains): New.
10021         (loc_cmp): New.
10022         (canonicalize_loc_order_check): New.
10023         (canonicalize_values_mark): New.
10024         (canonicalize_values_star): New.
10025         (variable_merge_over_cur): New.
10026         (variable_merge_over_src): New.
10027         (dataflow_set_merge): New.
10028         (dataflow_set_equiv_regs): New.
10029         (remove_duplicate_values): New.
10030         (struct dfset_post_merge): New.
10031         (variable_post_merge_new_vals): New.
10032         (variable_post_merge_perm_vals): New.
10033         (dataflow_post_merge_adjust): New.
10034         (find_mem_expr_in_1pdv): New.
10035         (dataflow_set_preserve_mem_locs): New.
10036         (dataflow_set_remove_mem_locs): New.
10037         (dataflow_set_clear_at_call): New.
10038         (onepart_variable_different_p): New.
10039         (variable_different_p): Use it.
10040         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
10041         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
10042         if not needed.
10043         (track_loc_p): Pass it true.
10044         (struct count_use_info): New.
10045         (find_use_val): New.
10046         (replace_expr_with_values): New.
10047         (log_op_type): New.
10048         (use_type): New, partially split out of...
10049         (count_uses): ... this.  Count new micro-ops.
10050         (count_uses_1): Adjust.
10051         (count_stores): Adjust.
10052         (count_with_sets): New.
10053         (VAL_NEEDS_RESOLUTION): New.
10054         (VAL_HOLDS_TRACK_EXPR): New.
10055         (VAL_EXPR_IS_COPIED): New.
10056         (VAL_EXPR_IS_CLOBBERED): New.
10057         (add_uses): Adjust.  Generate new micro-ops.
10058         (add_uses_1): Adjust.
10059         (add_stores): Generate new micro-ops.
10060         (add_with_sets): New.
10061         (find_src_status): Adjust.
10062         (find_src_set_src): Adjust.
10063         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
10064         Handle new micro-ops.  Canonicalize value equivalances.
10065         (vt_find_locations): Compute total size of hash tables for
10066         dumping.  Perform merge for var-tracking-assignments.  Don't
10067         disregard single-block loops.
10068         (dump_attrs_list): Handle decl_or_value.
10069         (dump_variable): Take variable.  Deal with decl_or_value.
10070         (dump_variable_slot): New.
10071         (dump_vars): Use it.
10072         (dump_dataflow_sets): Adjust.
10073         (set_slot_part): New, extended to support one-part variables
10074         after splitting out of...
10075         (set_variable_part): ... this.
10076         (clobber_slot_part): New, split out of...
10077         (clobber_variable_part): ... this.
10078         (delete_slot_part): New, split out of...
10079         (delete_variable_part): .... this.
10080         (check_wrap_constant): New.
10081         (vt_expand_loc_callback): New.
10082         (vt_expand_loc): New.
10083         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
10084         EMIT_NOTE_AFTER_CALL_INSN.
10085         (emit_notes_for_differences_1): Adjust.  Handle values.
10086         (emit_notes_for_differences_2): Likewise.
10087         (emit_notes_for_differences): Adjust.
10088         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
10089         Adjust.  Handle new micro-ops.
10090         (vt_add_function_parameters): Adjust.  Create and bind values.
10091         (vt_initialize): Adjust.  Initialize scratch_regs and
10092         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
10093         operations.  Move some code to count_with_sets and add_with_sets.
10094         (delete_debug_insns): New.
10095         (vt_debug_insns_local): New.
10096         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
10097         cselib.
10098         (var_tracking_main): If var-tracking-assignments is enabled
10099         but var-tracking isn't, delete debug insns and leave.  Likewise
10100         if we exceed limits or fail the stack adjustments tests, and
10101         after all var-tracking processing.
10102         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
10103         (dataflow_set): Add traversed_vars.
10104         (value_chain, const_value_chain): New typedefs.
10105         (value_chain_pool, value_chains): New variables.
10106         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
10107         add_value_chains, add_cselib_value_chains, remove_value_chain,
10108         remove_value_chains, remove_cselib_value_chains): New functions.
10109         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
10110         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
10111         static inlines.
10112         (shared_hash_find_slot_unshare, shared_hash_find_slot,
10113         shared_hash_find_slot_noinsert, shared_hash_find): Update.
10114         (dst_can_be_shared): New variable.
10115         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
10116         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
10117         different from set->vars, look up slot again instead of using the
10118         passed in slot.
10119         (dataflow_set_init): Initialize traversed_vars.
10120         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
10121         lookup if set->vars is shared.  Don't keep slot cleared before
10122         calling unshare_variable.  Unshare set->vars if needed.  Adjust
10123         unshare_variable callers.  Clear dst_can_be_shared if needed.
10124         Even ->refcount == 1 vars must be unshared if set->vars is shared
10125         and var needs to be modified.
10126         (dataflow_set_union): Set traversed_vars during canonicalization.
10127         (VALUE_CHANGED, DECL_CHANGED): Define.
10128         (set_dv_changed, dv_changed_p): New static inlines.
10129         (track_expr_p): Clear DECL_CHANGED.
10130         (dump_dataflow_sets): Set it.
10131         (variable_was_changed): Call set_dv_changed.
10132         (emit_note_insn_var_location): Likewise.
10133         (changed_variables_stack): New variable.
10134         (check_changed_vars_1, check_changed_vars_2): New functions.
10135         (emit_notes_for_changes): Do nothing if changed_variables is
10136         empty.  Traverse changed_variables with check_changed_vars_1,
10137         call check_changed_vars_2 on each changed_variables_stack entry.
10138         (emit_notes_in_bb): Add SET argument.  Just clear it at the
10139         beginning, use it instead of local &set, don't destroy it at the end.
10140         (vt_emit_notes): Call dataflow_set_clear early on all
10141         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
10142         computed set, dataflow_set_clear also VTI(bb)->in when we are
10143         done with the basic block.  Initialize changed_variables_stack,
10144         free it afterwards.  If ENABLE_CHECKING verify that after noting
10145         differences to an empty set value_chains hash table is empty.
10146         (vt_initialize): Initialize value_chains and value_chain_pool.
10147         (vt_finalize): Delete value_chains htab, free value_chain_pool.
10148         (variable_tracking_main): Call dump_dataflow_sets before calling
10149         vt_emit_notes, not after it.
10150         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
10151         (propagate_var_def_into_debug_stmts): Declare.
10152         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
10153         (df_set_note): Reject debug insns.
10154         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
10155         add notes to debug insns.
10156         (df_note_bb_compute): Adjust.  Likewise.
10157         (df_simulate_uses): Skip debug insns.
10158         (df_simulate_initialize_backwards): Likewise.
10159         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
10160         (subst_stack_regs_pat): Reject debug insns.
10161         (convert_regs_1): Handle debug insns.
10162         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
10163         (print-rtl.o): Depend on cselib.h.
10164         (cselib.o): Depend on TREE_PASS_H.
10165         (var-tracking.o): Depend on cselib.h and TARGET_H.
10166         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
10167         (init_ready_list): Skip boundary debug insns.
10168         (add_branch_dependences): Skip debug insns.
10169         (free_block_dependencies): Check for blocks with only debug insns.
10170         (compute_priorities): Likewise.
10171         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
10172         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
10173         all callers.
10174         (gimple_build_debug_bind_stat): New.
10175         (empty_body_p): Skip debug stmts.
10176         (gimple_has_side_effects): Likewise.
10177         (gimple_rhs_has_side_effects): Likewise.
10178         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
10179         (gimple_build_debug_bind_stat): Declare.
10180         (gimple_build_debug_bind): Define.
10181         (is_gimple_debug): New.
10182         (gimple_debug_bind_p): New.
10183         (gimple_debug_bind_get_var): New.
10184         (gimple_debug_bind_get_value): New.
10185         (gimple_debug_bind_get_value_ptr): New.
10186         (gimple_debug_bind_set_var): New.
10187         (gimple_debug_bind_set_value): New.
10188         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
10189         (gimple_debug_bind_reset_value): New.
10190         (gimple_debug_bind_has_value_p): New.
10191         (gsi_next_nondebug): New.
10192         (gsi_prev_nondebug): New.
10193         (gsi_start_nondebug_bb): New.
10194         (gsi_last_nondebug_bb): New.
10195         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
10196         (print_insn): Handle DEBUG_INSN.
10197         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
10198         of first insn prevail.
10199         (first_stmt): Skip debug stmts.
10200         (first_non_label_stmt): Likewise.
10201         (last_stmt): Likewise.
10202         (has_zero_uses_1): New.
10203         (single_imm_use_1): New.
10204         (verify_gimple_debug): New.
10205         (verify_types_in_gimple_stmt): Handle debug stmts.
10206         (verify_stmt): Likewise.
10207         (debug_loop_num): Skip debug stmts.
10208         (remove_edge_and_dominated_blocks): Remove dominators last.
10209         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
10210         (linearize_expr): Likewise.
10211         * config/i386/i386.c (ix86_delegitimize_address): Call
10212         default implementation.
10213         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
10214         (group_barrier_needed): Skip debug insns.
10215         (emit_insn_group_barriers): Likewise.
10216         (emit_all_insn_group_barriers): Likewise.
10217         (ia64_variable_issue): Handle debug insns.
10218         (ia64_dfa_new_cycle): Likewise.
10219         (final_emit_insn_group_barriers): Skip debug insns.
10220         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
10221         def cfa without frame.
10222         (process_set): Likewise.
10223         (process_for_unwind_directive): Pass frame on.
10224         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
10225         (rs6000_delegitimize_address): New.
10226         (rs6000_debug_adjust_cost): Handle debug insns.
10227         (is_microcoded_insn): Likewise.
10228         (is_cracked_insn): Likewise.
10229         (is_nonpipeline_insn): Likewise.
10230         (insn_must_be_first_in_group): Likewise.
10231         (insn_must_be_last_in_group): Likewise.
10232         (force_new_group): Likewise.
10233         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
10234         contains only debug insns.
10235         (rtl_merge_blocks): Skip debug insns.
10236         (purge_dead_edges): Likewise.
10237         (rtl_block_ends_with_call_p): Skip debug insns.
10238         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
10239         (mark_reg_dependencies): Skip debug insns.
10240         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
10241         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
10242         * tree-ssa-threadedge.c
10243         (record_temporary_equivalences_from_stmts): Skip debug stmts.
10244         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
10245         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
10246         (copyprop_hardreg_forward_1): Handle debug insns.
10247         * reload1.c (reload): Skip debug insns.  Replace unassigned
10248         pseudos in debug insns with their equivalences.
10249         (eliminate_regs_in_insn): Skip debug insns.
10250         (emit_input_reload_insns): Skip debug insns at first, adjust
10251         them later.
10252         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
10253         (get_indirect_ref_operands): Pass opf_no_vops on.
10254         (get_expr_operands): Likewise.  Skip debug stmts.
10255         (parse_ssa_operands): Scan debug insns with opf_no_vops.
10256
10257 2009-09-01  Richard Henderson  <rth@redhat.com>
10258
10259         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
10260         stmt_ends_pp_p statements at least once.
10261         * tree-vrp.c (vrp_initialize): Likewise.
10262         (vrp_visit_stmt): Be prepared for non-interesting stmts.
10263
10264 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
10265
10266         PR bootstrap/41205
10267         Fix AIX bootstrap after PR debug/30161
10268         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
10269         that is a GNU extension.
10270         (tmpl_value_parm_die_table): Move the definition of this global
10271         outside #ifdef DWARF2_DEBUGGING_INFO region.
10272
10273 2009-09-01  Richard Guenther  <rguenther@suse.de>
10274
10275         * tree.c (tree_expr_size): New function.
10276         * tree.h (tree_expr_size): Declare.
10277         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
10278         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
10279         * langhooks.c (lhd_expr_size): Remove.
10280         * langhooks.h (struct lang_hooks): Remove expr_size.
10281         * explow.c (expr_size): Use tree_expr_size.
10282         (int_expr_size): Likewise.
10283         * langhooks-def.h (lhd_expr_size): Remove.
10284         (LANG_HOOKS_EXPR_SIZE): Likewise.
10285         (LANG_HOOKS_INITIALIZER): Adjust.
10286
10287 2009-09-01  Richard Guenther  <rguenther@suse.de>
10288
10289         * tree-flow.h (mark_addressable): Move declaration ...
10290         * tree.h (mark_addressable): ... here.
10291         * stmt.c (expand_asm_operands): Use mark_addressable, not
10292         lang_hooks.mark_addressable.
10293         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
10294         LANG_HOOKS_MARK_ADDRESSABLE.
10295         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
10296         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
10297
10298 2009-08-31  Chris Demetriou  <cgd@google.com>
10299
10300         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
10301         vectorize if not TARGET_SSE2.
10302
10303 2009-08-31  DJ Delorie  <dj@redhat.com>
10304
10305         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
10306         registers if no coprocessor is enabled.
10307
10308 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
10309
10310         PR debug/30161
10311         * cgraph.h (cgraph_get_node): Declare ...
10312         * cgraph.c (cgraph_get_node): ... new function.
10313         * dwarf2out.c (gen_generic_params_dies,
10314         generic_parameter_die, tree_add_const_value_attribute_for_decl,
10315         make_ith_pack_parameter_name,
10316         append_entry_to_tmpl_value_parm_die_table,
10317         gen_remaining_tmpl_value_param_die_attribute): New functions.
10318         (gen_subprogram_die): Generate debug info for template parameters
10319         if debug info level is higher than DINFO_LEVEL_TERSE.
10320         Use tree_add_const_value_attribute_for_decl instead of
10321         tree_add_const_value_attribute.
10322         (gen_const_die): Use tree_add_const_value_attribute_for_decl
10323         instead of tree_add_const_value_attribute.
10324         (gen_struct_or_union_type_die): Generate debug
10325         info for template parameters if debug info level is higher than
10326         DINFO_LEVEL_TERSE.
10327         (tree_add_const_value_attribute): Handle integral and pointer
10328         constants. Update comment.
10329         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
10330         (dwarf_attr_name): Support DW_AT_GNU_template_name.
10331         (reference_to_unused): Fix thinko. Remove redundant predicates from
10332         tests.
10333         (tree_add_const_value_attribute): Make this work for constant
10334         expressions only.
10335         tree_add_const_value_attribute_for_decl is to be used for variable
10336         DECLs now.
10337         (add_location_or_const_value_attribute): Use
10338         tree_add_const_value_attribute_for_decl now.
10339         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
10340         DW_TAG_template_value_param DIEs after function DIEs have been
10341         emitted.
10342         * langhooks.h (lang_hooks_for_types): Add
10343         get_argument_pack_elems.
10344         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
10345         (lang_hooks): Added get_innermost_generic_parms,
10346         get_innermost_generic_args.
10347         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
10348         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
10349         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
10350         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
10351
10352 2009-08-31  DJ Delorie  <dj@redhat.com>
10353
10354         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
10355         it once we start generating the prologue or epilogue.
10356         (mep_call_saves_register): If the frame is locked, re-use
10357         cached values.
10358         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
10359         (mep_expand_prologue): Call it.
10360         (mep_expand_epilogue): Likewise.
10361         (mep_start_function): Use the same logic as mep_expand_prologue.
10362         (mep_pass_by_reference): Make logic more readable.
10363         (mep_return_in_memory): Zero-sized objects are passed in memory.
10364         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
10365
10366 2009-08-31  Richard Guenther  <rguenther@suse.de>
10367
10368         * builtins.c (fold_builtin_memory_op): Use the alias oracle
10369         to query if the memory regions for memmove overlap.
10370         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
10371         asserts on pointers, instead deal with odd trees.
10372         (ptr_derefs_may_alias_p): Likewise.
10373         (refs_may_alias_p_1): Constructor bases also never alias.
10374
10375 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
10376
10377         * doc/install.texi (Final install): Adjust reference on where to
10378         order printed manuals.
10379
10380 2009-08-30  Olivier Hainque  <hainque@adacore.com>
10381
10382         * dwarf2out.c (switch_to_frame_table_section): Move
10383         definition prior to first use.
10384
10385 2009-08-30  Richard Guenther  <rguenther@suse.de>
10386
10387         PR tree-optimization/41186
10388         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
10389         (ao_ref_init_from_ptr_and_size): New function.
10390         (ref_maybe_used_by_call_p_1): Be more precise tracking
10391         used ranges for builtin functions.
10392         (ref_maybe_used_by_call_p): Adjust.
10393         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
10394         ranges for builtin functions.
10395         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
10396
10397 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
10398
10399         PR target/41081
10400         * fwprop.c (get_reg_use_in): Delete.
10401         (free_load_extend): New function.
10402         (forward_propagate_subreg): Use it.
10403
10404 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
10405
10406         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
10407
10408 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
10409
10410         PR/41184
10411         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
10412         padding.
10413
10414 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
10415
10416         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
10417         fini or fini_array section.
10418
10419 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10420
10421         * graphite-dependences.c (graphite_legal_transform_bb): Call
10422         pbb_remove_duplicate_pdrs.
10423         * graphite-poly.c (can_collapse_pdr): Removed.
10424         (pdr_find_duplicate): Removed.
10425         (can_collapse_pdrs): New.
10426         (pbb_remove_duplicate_pdrs): New.
10427         (new_poly_dr): Do not look for duplicates.
10428         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
10429         (PBB_PDR_DUPLICATES_REMOVED): New.
10430         (pbb_remove_duplicate_pdrs): Declared.
10431
10432 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10433
10434         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
10435         the strides by multiplying by PDR_NB_REFS.
10436         * graphite-poly.c (can_collapse_pdr): New.
10437         (pdr_find_duplicate): New.
10438         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
10439         Initialize PDR_NB_REFS.
10440         * graphite-poly.h (struct poly_dr): Add field nb_refs.
10441         (PDR_NB_REFS): New.
10442         (new_poly_dr): Number of subscripts is a graphite_dim_t.
10443
10444 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10445
10446         PR middle-end/40965
10447         * graphite-poly.c (apply_poly_transforms): Remove legality test before
10448         any transform.
10449
10450 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10451
10452         * graphite-dependences.c (pddr_original_scattering): Return NULL
10453         for read-read dependence relations.
10454         * graphite-poly.h (enum poly_dr_type): Fix comment.
10455         (pdr_read_p): New.
10456         (pdr_write_p): New.
10457         (pdr_may_write_p): New.
10458
10459 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10460
10461         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
10462         (struct poly_dr): Same.
10463         (new_poly_dr): Same.
10464         * graphite-poly.c (new_poly_dr): Same.
10465         * graphite-dependences.c (dot_deps): Disable call to system.
10466
10467 2009-08-28  Cary Coutant  <ccoutant@google.com>
10468
10469         PR debug/41063
10470         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
10471         struct/union/enum types local to a function.
10472
10473 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
10474             Sebastian Pop  <sebastian.pop@amd.com>
10475
10476         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
10477         pbb_strip_mine_time_depth.  Changed the implementation so that
10478         transformation is expressed as a transformation on
10479         time (scatttering) dimensions.  Also, ensures that the 2d+1
10480         scheduling format is preserved.
10481         (pbb_strip_mine_profitable_p): Profitability is based on the
10482         iteration number of a given time (scattering) dimension,
10483         and not on a original loop depth dimension.
10484         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
10485         (pbb_do_strip_mine): Call psct_dynamic_dim.
10486         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
10487         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
10488         (pbb_nb_dynamic_scattering_transform): New.
10489         (psct_dynamic_dim): New.
10490
10491 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
10492
10493         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
10494         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
10495         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
10496         * graphite-interchange.c (build_linearized_memory_access): Same.
10497         (memory_stride_in_loop): Same.
10498
10499 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10500
10501         * graphite-dependences.c (pddr_original_scattering): New.
10502         (graphite_legal_transform_dr): Call pddr_original_scattering.
10503         (dot_deps_1): New.
10504         (dot_deps): New.
10505         * graphite-dependences.h (dot_deps): Declared.
10506         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
10507         (print_pdr): Print PDR_ID.
10508         * graphite-poly.h (struct poly_dr): Add field id.
10509         (PDR_ID): New.
10510         (pbb_index): New.
10511         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
10512
10513 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10514
10515         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
10516         not delete the original dependence relation.
10517
10518 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10519
10520         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
10521         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
10522         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
10523         (free_poly_ddr): New.
10524         (pddr_is_empty): New.
10525         (dependence_polyhedron_1): Now returns a poly_ddr_p.
10526         (dependence_polyhedron): Same.  Remove useless gcc_assert.
10527         Remove fprintfs.
10528         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
10529         (graphite_carried_dependence_level_k): Call pddr_is_empty.
10530         * graphite-dependences.h (enum poly_dependence_kind): New.
10531         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
10532         (PDRP_SOURCE): Renamed PDDR_SOURCE.
10533         (PDRP_SINK): Renamed PDDR_SINK.
10534         (PDRP_DDP): Renamed PDDR_DDP.
10535         (PDDR_KIND): New.
10536         (free_poly_ddr): Declared.
10537         * graphite-poly.c (new_scop): Use the new hash function names.
10538         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
10539         into original_pddrs.
10540         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
10541
10542 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10543
10544         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
10545         bounds with LT_EXPR to make niter analysis more precise on code
10546         generated by Graphite.
10547
10548 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10549
10550         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
10551         (graphite_legal_transform_bb): Same.
10552         (poly_drs_may_alias_p): Same.
10553
10554 2009-08-28  Richard Guenther  <rguenther@suse.de>
10555
10556         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
10557
10558 2009-08-28  Jan Beulich  <jbeulich@novell.com>
10559
10560         * config/i386/netware.c: Include langhooks.h.
10561         (i386_nlm_encode_section_info): Simplify.
10562         (netware_override_options): Delete.
10563         * config/i386/netware.h (netware_override_options): Delete
10564         declaration.
10565         (OVERRIDE_OPTIONS): Delete definition.
10566         (SUBTARGET_OVERRIDE_OPTIONS): Define.
10567         (ASM_COMMENT_START): Define.
10568         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
10569
10570 2009-08-28  Jan Beulich  <jbeulich@novell.com>
10571
10572         * configure.ac: For in-tree ld, do a plain version check to
10573         determine whether comdat groups are supported.
10574         * configure: Regenerate.
10575
10576 2009-08-28  Olivier Hainque  <hainque@adacore.com>
10577
10578         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
10579         always defined.  Reflect definition or absence of such for
10580         COLLECT_EXPORT_LIST.  Readability helper.
10581         (scanfilter): New enum, to help control what symbols
10582         are to be considered or ignored by scan_prog_file.
10583         (enum pass): Rename as "scanpass", moved together with scanfilter
10584         prior to scan_prog_file's prototype.
10585         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
10586         Group prototype with the scanpass/scanfilter definitions, factorize
10587         head comments for the several implementations at the prototype.
10588         (main): Reorganize the first pass link control to let AIX
10589         drag only the needed frame tables in executables.  Prevent
10590         frame tables collection during the scan aimed at static ctors.
10591         Pre-link and scan for frame tables later to compensate.
10592         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
10593         A C statement to issue assembly directives that create a reference
10594         to the given DWARF table identifier label from the current function
10595         section.
10596         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
10597         to differentiate first time section entry.  Only emit a .data
10598         tables start identifier label the first time around.
10599         (switch_to_frame_table_section): New function.  Helper for
10600         output_call_frame_info to switch possibly BACK into the eh_frame
10601         or the debug_frame section depending on FOR_EH.
10602         (output_call_frame_info): Use helper to first enter the proper
10603         frame section.
10604         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
10605         emit a link to the frame table start label from each function
10606         section.
10607         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
10608         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
10609         * config/rs6000/rs6000-protos.h: Declare it.
10610         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
10611
10612 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
10613
10614         * config/sh/sh.c (split_branches): Check the result of
10615         next_active_insn.
10616
10617 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
10618
10619         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
10620         using -pthread -fopenmp
10621
10622 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
10623
10624         * doc/service.texi (service directory): Update URL.
10625
10626 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
10627
10628         PR rtl-optimization/40861
10629         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
10630         extract word from a multi-word subreg for negative byte positions.
10631
10632 2009-08-27  Tristan Gingold  <gingold@adacore.com>
10633             Douglas B Rupp  <rupp@gnat.com>
10634
10635         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
10636         (SECTION_VMS_OVERLAY): Define.
10637         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
10638         attribute.
10639         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
10640         for common_object.
10641         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
10642         common_object declarations.
10643         (ia64_section_type_flags): Set section flag for common_object.
10644         * config/ia64/ia64-protos.h
10645         (ia64_vms_output_aligned_decl_common): Declare.
10646         (ia64_vms_elf_asm_named_section): Declare.
10647
10648 2009-08-27  Michael Matz  <matz@suse.de>
10649
10650         * expr.c (expand_expr_real_2): New function taking exploded
10651         unary or binary expression, split out from ...
10652         (expand_expr_real_1): ... here.  Move over all unary/binary
10653         switch parts to above function, in particular these codes:
10654         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
10655         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
10656         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
10657         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
10658         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
10659         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
10660         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
10661         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
10662         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
10663         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
10664         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
10665         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
10666         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
10667         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
10668         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
10669         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
10670         VEC_PACK_FIX_TRUNC_EXPR.
10671         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
10672         full expression.
10673
10674 2009-08-27  Richard Guenther  <rguenther@suse.de>
10675
10676         * gengtype.c (main): Handle uint64_t.
10677         * ipa-utils.c (get_base_var): Indent properly.
10678         * tree-ssa-live.c (debug_scope_block): New function.
10679         * tree-flow.h (debug_scope_block): Declare.
10680         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
10681         * basic-block.h (enum profile_status): Rename to
10682         enum profile_status_d.
10683         (x_profile_status): Adjust type.
10684
10685 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
10686
10687         PR debug/41170
10688         * dwarf2out.c (get_context_die): Declare this static function.
10689         (gen_type_die_with_usage): Make sure a DIE is a generated for
10690         the context of a typedef.
10691
10692 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
10693
10694         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
10695         switch.
10696
10697 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
10698
10699         * config/mips/mips-protos.h (mips_output_sync): Declare.
10700         (mips_sync_loop_insns): Likewise.
10701         (mips_output_sync_loop): Replace first two parameters with an rtx.
10702         * config/mips/mips.c (mips_multi_member): New structure.
10703         (mips_multi_members): New variable.
10704         (mips_multi_start): New function.
10705         (mips_multi_add): Likewise.
10706         (mips_multi_add_insn): Likewise.
10707         (mips_multi_add_label): Likewise.
10708         (mips_multi_last_index): Likewise.
10709         (mips_multi_copy_insn): Likewise.
10710         (mips_multi_set_operand): Likewise.
10711         (mips_multi_write): Likewise.
10712         (mips_print_operand_punctuation): Remove '%|' and '%-'.
10713         (mips_init_print_operand_punct): Update accordingly.
10714         (mips_start_ll_sc_sync_block): New function.
10715         (mips_end_ll_sc_sync_block): Likewise.
10716         (mips_output_sync): Likewise.
10717         (mips_sync_insn1_template): Likewise.
10718         (mips_sync_insn2_template): Likewise.
10719         (mips_get_sync_operand): Likewise.
10720         (mips_process_sync_loop): Likewise.
10721         (mips_output_sync_loop): Use mips_process_sync_loop.
10722         (mips_sync_loop_insns): New function.
10723         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
10724         (MIPS_COMPARE_AND_SWAP_12): Likewise.
10725         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
10726         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
10727         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
10728         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
10729         (MIPS_SYNC_OLD_OP_12): Likewise.
10730         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
10731         (MIPS_SYNC_NEW_OP_12): Likewise.
10732         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
10733         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
10734         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
10735         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
10736         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
10737         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
10738         * config/mips/mips.md (sync_mem): New attribute.
10739         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
10740         (sync_exclusive_mask, sync_required_oldval): Likewise.
10741         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
10742         (sync_release_barrier): Likewise.
10743         (length): Handle sync loops.
10744         (sync): Use mips_output_sync.
10745         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
10746         (sync_compare_and_swap<mode>): Set the new sync_* attributes
10747         and use mips_output_sync_loop.
10748         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
10749         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
10750         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
10751         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
10752         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
10753         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
10754         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
10755         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
10756         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
10757
10758 2009-08-26  Richard Guenther  <rguenther@suse.de>
10759
10760         PR middle-end/41163
10761         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
10762         the types to not match.
10763         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
10764         verification.
10765         * tree-ssa.c (useless_type_conversion_p): Conversions to
10766         pointers to unprototyped functions are useless.
10767
10768 2009-08-26  Richard Guenther  <rguenther@suse.de>
10769
10770         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
10771         whole-program condition, prepare to be called for non-globals.
10772         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
10773         params build a representative with known type and track its fields.
10774
10775 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
10776
10777         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
10778         clearing by a taken branch.
10779         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
10780         effectively after bbro pass.
10781         (sync_nand<mode>): Ditto.
10782         (sync_old_<fetchop_name><mode>): Ditto.
10783         (sync_old_nand<mode>): Ditto.
10784         (sync_new_<fetchop_name><mode>): Dito.
10785         (sync_new_nand<mode>): Ditto.
10786         (sync_compare_and_swap<mode>_1): Ditto.
10787         (*sync_compare_and_swap<mode>): Ditto.
10788         (sync_lock_test_and_set<mode>_1): Ditto.
10789         ("sync_lock_test_and_set<mode>): Ditto.
10790
10791 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
10792
10793         * hwint.h (HOST_LONG_FORMAT): New macro
10794         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
10795         Use HOST_PTR_PRINTF.
10796         * system.h (HOST_PTR_PRINTF): Resurrect old macro
10797         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
10798         (HOST_PTR_PRINTF): Document.
10799
10800 2009-08-25 Jan Hubicka  <jh@suse.cz>
10801
10802         * config/i386/bmmintrin.h: Replace by #error.
10803
10804         Revert:
10805         Michael Meissner  <michael.meissner@amd.com>
10806         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
10807         Tony Linthicum  <tony.linthicum@amd.com>
10808
10809         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
10810         (TARGET_ROUND): New macro for the round/ptest instructions which
10811         are shared between SSE4.1 and SSE5.
10812         (OPTION_MASK_ISA_ROUND): Ditto.
10813         (OPTION_ISA_ROUND): Ditto.
10814         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
10815         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
10816
10817         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
10818         (-mfused-madd): New switch to give users control over whether the
10819         compiler optimizes to use the multiply/add SSE5 instructions.
10820
10821         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
10822         (ix86_handle_option): Turn off 3dnow if -msse5.
10823         (override_options): Add SSE5 support.
10824         (print_operand): %Y prints comparison codes for SSE5 com/pcom
10825         instructions.
10826         (ix86_expand_sse_movcc): Add SSE5 support.
10827         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
10828         vector type to the next largest size.
10829         (ix86_expand_sse5_pack): New function to use pperm to pack a
10830         vector type to the next smallest size.
10831         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
10832         (IX86_BUILTIN_FMADDSD): Ditto.
10833         (IX86_BUILTIN_FMADDPS): Ditto.
10834         (IX86_BUILTIN_FMADDPD): Ditto.
10835         (IX86_BUILTIN_FMSUBSS): Ditto.
10836         (IX86_BUILTIN_FMSUBSD): Ditto.
10837         (IX86_BUILTIN_FMSUBPS): Ditto.
10838         (IX86_BUILTIN_FMSUBPD): Ditto.
10839         (IX86_BUILTIN_FNMADDSS): Ditto.
10840         (IX86_BUILTIN_FNMADDSD): Ditto.
10841         (IX86_BUILTIN_FNMADDPS): Ditto.
10842         (IX86_BUILTIN_FNMADDPD): Ditto.
10843         (IX86_BUILTIN_FNMSUBSS): Ditto.
10844         (IX86_BUILTIN_FNMSUBSD): Ditto.
10845         (IX86_BUILTIN_FNMSUBPS): Ditto.
10846         (IX86_BUILTIN_FNMSUBPD): Ditto.
10847         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
10848         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
10849         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
10850         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
10851         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
10852         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
10853         (IX86_BUILTIN_PPERM): Ditto.
10854         (IX86_BUILTIN_PERMPS): Ditto.
10855         (IX86_BUILTIN_PERMPD): Ditto.
10856         (IX86_BUILTIN_PMACSSWW): Ditto.
10857         (IX86_BUILTIN_PMACSWW): Ditto.
10858         (IX86_BUILTIN_PMACSSWD): Ditto.
10859         (IX86_BUILTIN_PMACSWD): Ditto.
10860         (IX86_BUILTIN_PMACSSDD): Ditto.
10861         (IX86_BUILTIN_PMACSDD): Ditto.
10862         (IX86_BUILTIN_PMACSSDQL): Ditto.
10863         (IX86_BUILTIN_PMACSSDQH): Ditto.
10864         (IX86_BUILTIN_PMACSDQL): Ditto.
10865         (IX86_BUILTIN_PMACSDQH): Ditto.
10866         (IX86_BUILTIN_PMADCSSWD): Ditto.
10867         (IX86_BUILTIN_PMADCSWD): Ditto.
10868         (IX86_BUILTIN_PHADDBW): Ditto.
10869         (IX86_BUILTIN_PHADDBD): Ditto.
10870         (IX86_BUILTIN_PHADDBQ): Ditto.
10871         (IX86_BUILTIN_PHADDWD): Ditto.
10872         (IX86_BUILTIN_PHADDWQ): Ditto.
10873         (IX86_BUILTIN_PHADDDQ): Ditto.
10874         (IX86_BUILTIN_PHADDUBW): Ditto.
10875         (IX86_BUILTIN_PHADDUBD): Ditto.
10876         (IX86_BUILTIN_PHADDUBQ): Ditto.
10877         (IX86_BUILTIN_PHADDUWD): Ditto.
10878         (IX86_BUILTIN_PHADDUWQ): Ditto.
10879         (IX86_BUILTIN_PHADDUDQ): Ditto.
10880         (IX86_BUILTIN_PHSUBBW): Ditto.
10881         (IX86_BUILTIN_PHSUBWD): Ditto.
10882         (IX86_BUILTIN_PHSUBDQ): Ditto.
10883         (IX86_BUILTIN_PROTB): Ditto.
10884         (IX86_BUILTIN_PROTW): Ditto.
10885         (IX86_BUILTIN_PROTD): Ditto.
10886         (IX86_BUILTIN_PROTQ): Ditto.
10887         (IX86_BUILTIN_PROTB_IMM): Ditto.
10888         (IX86_BUILTIN_PROTW_IMM): Ditto.
10889         (IX86_BUILTIN_PROTD_IMM): Ditto.
10890         (IX86_BUILTIN_PROTQ_IMM): Ditto.
10891         (IX86_BUILTIN_PSHLB): Ditto.
10892         (IX86_BUILTIN_PSHLW): Ditto.
10893         (IX86_BUILTIN_PSHLD): Ditto.
10894         (IX86_BUILTIN_PSHLQ): Ditto.
10895         (IX86_BUILTIN_PSHAB): Ditto.
10896         (IX86_BUILTIN_PSHAW): Ditto.
10897         (IX86_BUILTIN_PSHAD): Ditto.
10898         (IX86_BUILTIN_PSHAQ): Ditto.
10899         (IX86_BUILTIN_FRCZSS): Ditto.
10900         (IX86_BUILTIN_FRCZSD): Ditto.
10901         (IX86_BUILTIN_FRCZPS): Ditto.
10902         (IX86_BUILTIN_FRCZPD): Ditto.
10903         (IX86_BUILTIN_CVTPH2PS): Ditto.
10904         (IX86_BUILTIN_CVTPS2PH): Ditto.
10905         (IX86_BUILTIN_COMEQSS): Ditto.
10906         (IX86_BUILTIN_COMNESS): Ditto.
10907         (IX86_BUILTIN_COMLTSS): Ditto.
10908         (IX86_BUILTIN_COMLESS): Ditto.
10909         (IX86_BUILTIN_COMGTSS): Ditto.
10910         (IX86_BUILTIN_COMGESS): Ditto.
10911         (IX86_BUILTIN_COMUEQSS): Ditto.
10912         (IX86_BUILTIN_COMUNESS): Ditto.
10913         (IX86_BUILTIN_COMULTSS): Ditto.
10914         (IX86_BUILTIN_COMULESS): Ditto.
10915         (IX86_BUILTIN_COMUGTSS): Ditto.
10916         (IX86_BUILTIN_COMUGESS): Ditto.
10917         (IX86_BUILTIN_COMORDSS): Ditto.
10918         (IX86_BUILTIN_COMUNORDSS): Ditto.
10919         (IX86_BUILTIN_COMFALSESS): Ditto.
10920         (IX86_BUILTIN_COMTRUESS): Ditto.
10921         (IX86_BUILTIN_COMEQSD): Ditto.
10922         (IX86_BUILTIN_COMNESD): Ditto.
10923         (IX86_BUILTIN_COMLTSD): Ditto.
10924         (IX86_BUILTIN_COMLESD): Ditto.
10925         (IX86_BUILTIN_COMGTSD): Ditto.
10926         (IX86_BUILTIN_COMGESD): Ditto.
10927         (IX86_BUILTIN_COMUEQSD): Ditto.
10928         (IX86_BUILTIN_COMUNESD): Ditto.
10929         (IX86_BUILTIN_COMULTSD): Ditto.
10930         (IX86_BUILTIN_COMULESD): Ditto.
10931         (IX86_BUILTIN_COMUGTSD): Ditto.
10932         (IX86_BUILTIN_COMUGESD): Ditto.
10933         (IX86_BUILTIN_COMORDSD): Ditto.
10934         (IX86_BUILTIN_COMUNORDSD): Ditto.
10935         (IX86_BUILTIN_COMFALSESD): Ditto.
10936         (IX86_BUILTIN_COMTRUESD): Ditto.
10937         (IX86_BUILTIN_COMEQPS): Ditto.
10938         (IX86_BUILTIN_COMNEPS): Ditto.
10939         (IX86_BUILTIN_COMLTPS): Ditto.
10940         (IX86_BUILTIN_COMLEPS): Ditto.
10941         (IX86_BUILTIN_COMGTPS): Ditto.
10942         (IX86_BUILTIN_COMGEPS): Ditto.
10943         (IX86_BUILTIN_COMUEQPS): Ditto.
10944         (IX86_BUILTIN_COMUNEPS): Ditto.
10945         (IX86_BUILTIN_COMULTPS): Ditto.
10946         (IX86_BUILTIN_COMULEPS): Ditto.
10947         (IX86_BUILTIN_COMUGTPS): Ditto.
10948         (IX86_BUILTIN_COMUGEPS): Ditto.
10949         (IX86_BUILTIN_COMORDPS): Ditto.
10950         (IX86_BUILTIN_COMUNORDPS): Ditto.
10951         (IX86_BUILTIN_COMFALSEPS): Ditto.
10952         (IX86_BUILTIN_COMTRUEPS): Ditto.
10953         (IX86_BUILTIN_COMEQPD): Ditto.
10954         (IX86_BUILTIN_COMNEPD): Ditto.
10955         (IX86_BUILTIN_COMLTPD): Ditto.
10956         (IX86_BUILTIN_COMLEPD): Ditto.
10957         (IX86_BUILTIN_COMGTPD): Ditto.
10958         (IX86_BUILTIN_COMGEPD): Ditto.
10959         (IX86_BUILTIN_COMUEQPD): Ditto.
10960         (IX86_BUILTIN_COMUNEPD): Ditto.
10961         (IX86_BUILTIN_COMULTPD): Ditto.
10962         (IX86_BUILTIN_COMULEPD): Ditto.
10963         (IX86_BUILTIN_COMUGTPD): Ditto.
10964         (IX86_BUILTIN_COMUGEPD): Ditto.
10965         (IX86_BUILTIN_COMORDPD): Ditto.
10966         (IX86_BUILTIN_COMUNORDPD): Ditto.
10967         (IX86_BUILTIN_COMFALSEPD): Ditto.
10968         (IX86_BUILTIN_COMTRUEPD): Ditto.
10969         (IX86_BUILTIN_PCOMEQUB): Ditto.
10970         (IX86_BUILTIN_PCOMNEUB): Ditto.
10971         (IX86_BUILTIN_PCOMLTUB): Ditto.
10972         (IX86_BUILTIN_PCOMLEUB): Ditto.
10973         (IX86_BUILTIN_PCOMGTUB): Ditto.
10974         (IX86_BUILTIN_PCOMGEUB): Ditto.
10975         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
10976         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
10977         (IX86_BUILTIN_PCOMEQUW): Ditto.
10978         (IX86_BUILTIN_PCOMNEUW): Ditto.
10979         (IX86_BUILTIN_PCOMLTUW): Ditto.
10980         (IX86_BUILTIN_PCOMLEUW): Ditto.
10981         (IX86_BUILTIN_PCOMGTUW): Ditto.
10982         (IX86_BUILTIN_PCOMGEUW): Ditto.
10983         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
10984         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
10985         (IX86_BUILTIN_PCOMEQUD): Ditto.
10986         (IX86_BUILTIN_PCOMNEUD): Ditto.
10987         (IX86_BUILTIN_PCOMLTUD): Ditto.
10988         (IX86_BUILTIN_PCOMLEUD): Ditto.
10989         (IX86_BUILTIN_PCOMGTUD): Ditto.
10990         (IX86_BUILTIN_PCOMGEUD): Ditto.
10991         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
10992         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
10993         (IX86_BUILTIN_PCOMEQUQ): Ditto.
10994         (IX86_BUILTIN_PCOMNEUQ): Ditto.
10995         (IX86_BUILTIN_PCOMLTUQ): Ditto.
10996         (IX86_BUILTIN_PCOMLEUQ): Ditto.
10997         (IX86_BUILTIN_PCOMGTUQ): Ditto.
10998         (IX86_BUILTIN_PCOMGEUQ): Ditto.
10999         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
11000         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
11001         (IX86_BUILTIN_PCOMEQB): Ditto.
11002         (IX86_BUILTIN_PCOMNEB): Ditto.
11003         (IX86_BUILTIN_PCOMLTB): Ditto.
11004         (IX86_BUILTIN_PCOMLEB): Ditto.
11005         (IX86_BUILTIN_PCOMGTB): Ditto.
11006         (IX86_BUILTIN_PCOMGEB): Ditto.
11007         (IX86_BUILTIN_PCOMFALSEB): Ditto.
11008         (IX86_BUILTIN_PCOMTRUEB): Ditto.
11009         (IX86_BUILTIN_PCOMEQW): Ditto.
11010         (IX86_BUILTIN_PCOMNEW): Ditto.
11011         (IX86_BUILTIN_PCOMLTW): Ditto.
11012         (IX86_BUILTIN_PCOMLEW): Ditto.
11013         (IX86_BUILTIN_PCOMGTW): Ditto.
11014         (IX86_BUILTIN_PCOMGEW): Ditto.
11015         (IX86_BUILTIN_PCOMFALSEW): Ditto.
11016         (IX86_BUILTIN_PCOMTRUEW): Ditto.
11017         (IX86_BUILTIN_PCOMEQD): Ditto.
11018         (IX86_BUILTIN_PCOMNED): Ditto.
11019         (IX86_BUILTIN_PCOMLTD): Ditto.
11020         (IX86_BUILTIN_PCOMLED): Ditto.
11021         (IX86_BUILTIN_PCOMGTD): Ditto.
11022         (IX86_BUILTIN_PCOMGED): Ditto.
11023         (IX86_BUILTIN_PCOMFALSED): Ditto.
11024         (IX86_BUILTIN_PCOMTRUED): Ditto.
11025         (IX86_BUILTIN_PCOMEQQ): Ditto.
11026         (IX86_BUILTIN_PCOMNEQ): Ditto.
11027         (IX86_BUILTIN_PCOMLTQ): Ditto.
11028         (IX86_BUILTIN_PCOMLEQ): Ditto.
11029         (IX86_BUILTIN_PCOMGTQ): Ditto.
11030         (IX86_BUILTIN_PCOMGEQ): Ditto.
11031         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
11032         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
11033         (enum multi_arg_type): New enum for describing the various SSE5
11034         intrinsic argument types.
11035         (bdesc_multi_arg): New table for SSE5 intrinsics.
11036         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
11037         (ix86_expand_multi_arg_builtin): New function for creating SSE5
11038         intrinsics.
11039         (ix86_expand_builtin): Add SSE5 intrinsic support.
11040         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
11041         operand instructions.
11042         (ix86_expand_sse5_multiple_memory): New function to split the
11043         second memory reference from SSE5 instructions.
11044         (type_has_variadic_args_p): Delete in favor of stdarg_p.
11045         (ix86_return_pops_args): Use stdarg_p to determine if the function
11046         has variable arguments.
11047         (ix86_setup_incoming_varargs): Ditto.
11048         (x86_this_parameter): Ditto.
11049
11050         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
11051         declaration.
11052         (ix86_expand_sse5_pack): Ditto.
11053         (ix86_sse5_valid_op_p): Ditto.
11054         (ix86_expand_sse5_multiple_memory): Ditto.
11055
11056         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
11057         constant for SSE5 support.
11058         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
11059         (UNSPEC_SSE5_TRUEFALSE): Ditto.
11060         (UNSPEC_SSE5_PERMUTE): Ditto.
11061         (UNSPEC_SSE5_ASHIFT): Ditto.
11062         (UNSPEC_SSE5_LSHIFT): Ditto.
11063         (UNSPEC_FRCZ): Ditto.
11064         (UNSPEC_CVTPH2PS): Ditto.
11065         (UNSPEC_CVTPS2PH): Ditto.
11066         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
11067         (PCOM_TRUE): Ditto.
11068         (COM_FALSE_S): Ditto.
11069         (COM_FALSE_P): Ditto.
11070         (COM_TRUE_S): Ditto.
11071         (COM_TRUE_P): Ditto.
11072         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
11073         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
11074         types.
11075         (memory attribute): Ditto.
11076         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
11077         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
11078         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
11079         (floor<mode>2): Ditto.
11080         (ceil<mode>2): Ditto.
11081         (btrunc<mode>2): Ditto.
11082         (nearbyintdf2): Ditto.
11083         (nearbyintsf2): Ditto.
11084         (sse_setccsf): Disable if SSE5.
11085         (sse_setccdf): Ditto.
11086         (sse5_setcc<mode>): New support for SSE5 conditional move.
11087         (sse5_pcmov_<mode>): Ditto.
11088
11089         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
11090         (SSEMODEF4): Ditto.
11091         (SSEMODEF2P): Ditto.
11092         (ssemodesuffixf4): New mode attribute for SSE5.
11093         (ssemodesuffixf2s): Ditto.
11094         (ssemodesuffixf2c): Ditto.
11095         (sserotatemax): Ditto.
11096         (ssescalarmode): Ditto.
11097         (sse_maskcmpv4sf3): Disable if SSE5.
11098         (sse_maskcmpv2df3): Ditto.
11099         (sse_vmmaskcmpv4sf3): Ditto.
11100         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
11101         (sse5_vmfmadd<mode>4): Ditto.
11102         (sse5_fmsub<mode>4): Ditto.
11103         (sse5_vmfmsub<mode>4): Ditto.
11104         (sse5_fnmadd<mode>4): Ditto.
11105         (sse5_vmfnmadd<mode>4): Ditto.
11106         (sse5_fnmsub<mode>4): Ditto.
11107         (sse5_vmfnmsub<mode>4): Ditto.
11108         (sse5i_fmadd<mode>4): Ditto.
11109         (sse5i_fmsub<mode>4): Ditto.
11110         (sse5i_fnmadd<mode>4): Ditto.
11111         (sse5i_fnmsub<mode>4): Ditto.
11112         (sse5i_vmfmadd<mode>4): Ditto.
11113         (sse5i_vmfmsub<mode>4): Ditto.
11114         (sse5i_vmfnmadd<mode>4): Ditto.
11115         (sse5i_vmfnmsub<mode>4): Ditto.
11116         (mulv16qi3): Add SSE5 support.
11117         (mulv4si3): Ditto.
11118         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
11119         (sse2_mulv4si3): Disable if SSE5.
11120         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
11121         (sse4_1_roundps): Ditto.
11122         (sse4_1_roundsd): Ditto.
11123         (sse4_1_roundss): Ditto.
11124         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
11125         be generated.
11126         (sse_maskcmpsf3): Ditto.
11127         (sse_vmmaskcmpv4sf3): Ditto.
11128         (sse2_maskcmpv2df3): Ditto.
11129         (sse2_maskcmpdf3): Ditto.
11130         (sse2_vmmaskcmpv2df3): Ditto.
11131         (sse2_eq<mode>3): Ditto.
11132         (sse2_gt<mode>3): Ditto.
11133         (sse5_pcmov_<mode>): Add SSE5 support.
11134         (vec_unpacku_hi_v16qi): Ditto.
11135         (vec_unpacks_hi_v16qi): Ditto.
11136         (vec_unpacku_lo_v16qi): Ditto.
11137         (vec_unpacks_lo_v16qi): Ditto.
11138         (vec_unpacku_hi_v8hi): Ditto.
11139         (vec_unpacks_hi_v8hi): Ditto.
11140         (vec_unpacku_lo_v8hi): Ditto.
11141         (vec_unpacks_lo_v8hi): Ditto.
11142         (vec_unpacku_hi_v4si): Ditto.
11143         (vec_unpacks_hi_v4si): Ditto.
11144         (vec_unpacku_lo_v4si): Ditto.
11145         (vec_unpacks_lo_v4si): Ditto.
11146         (sse5_pmacsww): New SSE5 intrinsic insn.
11147         (sse5_pmacssww): Ditto.
11148         (sse5_pmacsdd): Ditto.
11149         (sse5_pmacssdd): Ditto.
11150         (sse5_pmacssdql): Ditto.
11151         (sse5_pmacssdqh): Ditto.
11152         (sse5_pmacsdqh): Ditto.
11153         (sse5_pmacsswd): Ditto.
11154         (sse5_pmacswd): Ditto.
11155         (sse5_pmadcsswd): Ditto.
11156         (sse5_pmadcswd): Ditto.
11157         (sse5_pcmov_<move>): Conditional move support on SSE5.
11158         (sse5_phaddbw): New SSE5 intrinsic insn.
11159         (sse5_phaddbd): Ditto.
11160         (sse5_phaddbq): Ditto.
11161         (sse5_phaddwd): Ditto.
11162         (sse5_phaddwq): Ditto.
11163         (sse5_phadddq): Ditto.
11164         (sse5_phaddubw): Ditto.
11165         (sse5_phaddubd): Ditto.
11166         (sse5_phaddubq): Ditto.
11167         (sse5_phadduwd): Ditto.
11168         (sse5_phadduwq): Ditto.
11169         (sse5_phaddudq): Ditto.
11170         (sse5_phsubbw): Ditto.
11171         (sse5_phsubwd): Ditto.
11172         (sse5_phsubdq): Ditto.
11173         (sse5_pperm): Ditto.
11174         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
11175         (sse5_pperm_zero_v16qi_v8hi): Ditto.
11176         (sse5_pperm_sign_v8hi_v4si): Ditto.
11177         (sse5_pperm_zero_v8hi_v4si): Ditto.
11178         (sse5_pperm_sign_v4si_v2di): Ditto.
11179         (sse5_pperm_sign_v4si_v2di): Ditto.
11180         (sse5_pperm_pack_v2di_v4si): Ditto.
11181         (sse5_pperm_pack_v4si_v8hi): Ditto.
11182         (sse5_pperm_pack_v8hi_v16qi): Ditto.
11183         (sse5_perm<mode>): New SSE5 intrinsic insn.
11184         (rotl<mode>3): Ditto.
11185         (sse5_rotl<mode>3): Ditto.
11186         (sse5_ashl<mode>3): Ditto.
11187         (sse5_lshl<mode>3): Ditto.
11188         (sse5_frcz<mode>2): Ditto.
11189         (sse5s_frcz<mode>2): Ditto.
11190         (sse5_cvtph2ps): Ditto.
11191         (sse5_cvtps2ph): Ditto.
11192         (sse5_vmmaskcmp<mode>3): Ditto.
11193         (sse5_com_tf<mode>3): Ditto.
11194         (sse5_maskcmp<mode>3): Ditto.
11195         (sse5_maskcmp_uns<mode>3): Ditto.
11196         (sse5_maskcmp_uns2<mode>3): Ditto.
11197         (sse5_pcom_tf<mode>3): Ditto.
11198
11199         * config/i386/predicates.md (sse5_comparison_float_operator):
11200         New predicate to match the comparison operators supported by
11201         the SSE5 com instruction.
11202         (ix86_comparison_int_operator): New predicate to match just the
11203         signed int comparisons.
11204         (ix86_comparison_uns_operator): New predicate to match just the
11205         unsigned int comparisons.
11206
11207         * doc/invoke.texi (-msse5): Add documentation.
11208         (-mfused-madd): Ditto.
11209
11210         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
11211
11212         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
11213         mmintrin-common.h.
11214         (x86_64-*-*): Ditto.
11215
11216         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
11217
11218         * config/i386/bmmintrin.h: New file, provide common x86 compiler
11219         intrinisics for SSE5.
11220
11221         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
11222         mmintrin-common.h.
11223
11224         * config/i386/mmintrin-common.h: New file, to contain common
11225         instructions between SSE4.1 and SSE5.
11226
11227         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
11228         FOREACH_FUNCTION_ARGS to iterate over the argument list.
11229         (gen_regparm_prefix): Ditto.
11230
11231         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
11232         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
11233         prototype_p to determine if a function is prototyped.
11234
11235 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
11236
11237         * c-common.c (c_common_reswords) add the alignof keyword,
11238         with same RID as __alignof and __alignof__
11239
11240 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
11241
11242         * hooks.h (hook_bool_const_int_const_int_true): Declare.
11243         * hooks.c (hook_bool_const_int_const_int_true): New function.
11244         * target.h (struct gcc_target): Add can_eliminate field.
11245         * target-def.h (TARGET_CAN_ELIMINATE): Define.
11246         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
11247         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
11248         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
11249         (elim_table): Revise comment.
11250         * system.h (CAN_ELIMINATE): Poison.
11251         * defaults.h (CAN_ELIMINATE): Remove.
11252         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
11253
11254         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
11255         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
11256         Define macro.
11257         (alpha_vms_can_eliminate): Declare as static, change return type to
11258         bool.
11259         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
11260
11261         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
11262         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
11263         (arm_can_eliminate): New function.
11264
11265         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
11266         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
11267         (avr_can_eliminate): Declare as static.
11268         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
11269
11270         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
11271         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
11272         (bfin_can_eliminate): New function.
11273
11274         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
11275         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
11276         (crx_can_eliminate): New function.
11277
11278         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
11279         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
11280         (fr30_can_eliminate): New function.
11281
11282         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
11283         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
11284         (frv_can_eliminate): New function.
11285
11286         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
11287         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
11288         (h8300_can_eliminate): New function.
11289
11290         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
11291         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
11292         (i386_can_eliminate): Declare as static, change return type to bool.
11293         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
11294
11295         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
11296         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
11297         (ia64_can_eliminate): New function.
11298
11299         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
11300         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
11301         (iq2000_can_eliminate): New function.
11302
11303         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
11304         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
11305         (m32r_can_eliminate): New function.
11306
11307         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
11308         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
11309         (m68hc11_can_eliminate): New function.
11310
11311         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
11312         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
11313         (m68k_can_eliminate): New function.
11314
11315         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
11316         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
11317         (mep_can_eliminate): New function.
11318
11319         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
11320         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
11321         (mips_can_eliminate): New function.
11322
11323         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
11324         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
11325         (rs6000_can_eliminate): New function.
11326
11327         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
11328         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
11329         (s390_can_eliminate): Declare as static.
11330         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
11331
11332         * config/score/score.h (CAN_ELIMINATE): Remove macro.
11333         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
11334         (score_can_eliminate): New function.
11335
11336         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
11337         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
11338         (sparc_can_eliminate): Declare as static.
11339         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
11340
11341         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
11342         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
11343         (xstormy16_can_eliminate): New function.
11344
11345         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
11346         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
11347         (v850_can_eliminate): New function.
11348
11349 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
11350
11351         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
11352         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
11353         (*movdfcc_ext[1234]): Disable for IEEE mode.
11354
11355 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
11356
11357         * gimplify.c (prepare_gimple_addressable): New static function.
11358         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
11359         it addressable.
11360         (gimplify_addr_expr): Invoke it similarly on the operand instead of
11361         manually fiddling with it.
11362
11363 2009-08-25  Michael Matz  <matz@suse.de>
11364
11365         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
11366         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
11367         full expression.
11368         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
11369         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
11370         (do_jump): Split out code for simple binary comparisons into ...
11371         (do_jump_1): ... this, taking the individual operands and code.
11372         Change callers to helper function above accordingly.
11373         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
11374         comparisons.
11375
11376 2009-08-25  Michael Matz  <matz@suse.de>
11377
11378         * expr.h (struct separate_ops, sepops): New type for passing
11379         around an exploded simple expression.
11380         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
11381         Use this structure instead of expression tree.
11382         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
11383         expression, only its type.
11384         (expand_vec_cond_expr): Take type and individual operands instead
11385         of full expression.
11386         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
11387         expand_vec_shift_expr): Change prototype accordingly.
11388         * tree-vect-stmts.c (vectorizable_condition): Change call of
11389         expand_vec_cond_expr_p to pass only type.
11390         * expr.c (do_store_flags): Change prototype and implementation
11391         to take an exploded expression.
11392         (expand_expr_real_1): New local ops initialized with details
11393         of the full expression.  Use it instead of full
11394         expression in calls to do_store_flags, expand_vec_cond_expr,
11395         expand_widen_pattern_expr and expand_vec_shift_expr.
11396
11397 2009-08-25  Michael Matz  <matz@suse.de>
11398
11399         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
11400         treeop2 initialized with first three operands of the full expression.
11401         Substitute all TREE_OPERAND (exp, [012]) calls with them.
11402
11403 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
11404
11405         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
11406         (__gthread_objc_condition_allocate): Mark arguments as unused.
11407         (__gthread_objc_condition_deallocate): Likewise.
11408         (__gthread_objc_condition_wait): Likewise.
11409         (__gthread_objc_condition_broadcast): Likewise.
11410         (__gthread_objc_condition_signal): Likewise.
11411         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
11412         (__gthread_objc_thread_id): Likewise.
11413
11414 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
11415
11416         PR middle-end/41149
11417         * tree-pretty-print.c (print_call_name): Print the correct call name
11418         for procedure pointer components.
11419
11420 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
11421
11422         * config/ia64/ia64.c (ia64_promote_function_mode): Call
11423         default_promote_function_mode when not VMS.
11424
11425 2009-08-24  Olivier Hainque  <hainque@adacore.com>
11426
11427         * convert.c (convert_to_integer): Don't assume an input pointer is
11428         POINTER_SIZE wide.  Fetch from the type instead.
11429
11430 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11431
11432         * configure.ac (AC_PREREQ): Bump to 2.64.
11433
11434 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
11435
11436         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
11437         (process_command): Don't search standard_exec_prefix_1 and
11438         standard_exec_prefix_2.
11439
11440 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11441
11442         * config/arm/arm.c (output_return_instruction): Handle for
11443         unified syntax.
11444
11445 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11446
11447         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
11448
11449 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11450
11451         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
11452         (*arm_movdf_vfp): Likewise.
11453
11454 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11455
11456         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
11457         (vashr<mode>3): Rename from ashr<mode>3.
11458         (vlshr<mode>3): Rename from lshr<mode>3.
11459
11460 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
11461
11462         PR/40786
11463         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
11464         (check_format_info_main): Use scalar_identify_flag.
11465         (check_format_types): Check for scalar size identity if
11466         scalar_identify_flag is set.
11467         (printf_length_specs): Extend by new field.
11468         (asm_fprintf_length_specs): Likewise.
11469         (gcc_diag_length_specs): Likewise.
11470         (scanf_length_specs): Likewise.
11471         (strfmon_length_specs): Likewise.
11472         (gcc_gfc_length_specs): Likewise.
11473         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
11474         (ms_printf_flag_specs): Likewise.
11475         * c-format.h (format_length_info): Add new member scalar_identity_flag.
11476
11477 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
11478
11479         PR target/40718
11480         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
11481         (*call_value_pop_1): Ditto.
11482         (*sibcall_pop_1): New insn pattern.
11483         (*sibcall_value_pop_1): Ditto.
11484
11485 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
11486
11487         PR target/41081
11488         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
11489         ashrsi3_64): New.
11490
11491 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
11492
11493         PR target/41081
11494         * fwprop.c (try_fwprop_subst): Allow multiple sets.
11495         (get_reg_use_in): New function.
11496         (forward_propagate_subreg): Propagate through subreg of zero_extend
11497         or sign_extend.
11498
11499 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
11500
11501         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
11502         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
11503
11504 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11505
11506         * configure.ac: Remove --with-datarootdir, --with-docdir,
11507         --with-htmldir switches.  No need to call AC_SUBST for
11508         datarootdir, docdir, htmldir any more.
11509         * configure: Regenerate.
11510         * doc/install.texi (Configuration): Document --datarootdir,
11511         --docdir, --htmldir, --pdfdir; update documentation for
11512         --infodir, --mandir.
11513         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
11514         M4 to 1.4.6.
11515
11516         * aclocal.m4: Regenerate.
11517         * config.in: Regenerate.
11518         * configure: Regenerate.
11519
11520 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
11521             Olivier Hainque  <hainque@adacore.com>
11522
11523         * config/ia64/ia64.c: Include libfuncs.h.
11524         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
11525         (ia64_expand_call): Use reg 25 on VMS.
11526         (ia64_initialize_trampoline): Fix for VMS ABI.
11527         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
11528         (ia64_function_arg): Initialize reg 25 on VMS.
11529         Fix OpenVMS ABI issues for varargs.
11530         For OpenVMS, emit the Argument Information register set in the
11531         incoming/sibcall case as well.
11532         (ia64_arg_type): New function.
11533         (ia64_function_arg_advance): Keep track of cum->words.
11534         Fix OpenVMS ABI issues for varargs.
11535         (ia64_function_value): On VMS, promote mode of non-aggregate types.
11536         (ia64_override_options): Set flag_no_common on VMS.
11537         (ia64_init_builtins): Disable FWRITE builtin.
11538         (ia64_asm_output_external): Call DO_CRTL_NAMES.
11539         (ia64_vms_init_libfuncs): Add decc$ routines.
11540         (ia64_vms_valid_pointer_mode): New function.
11541         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
11542         (ia64_promote_function_mode): New function
11543         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
11544         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
11545         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
11546         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
11547         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
11548         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
11549         Suppress trailing '#' if VALUE is numeric.
11550         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
11551         ia64_promote_function_mode.
11552         (TARGET_VALID_POINTER_MODE): Define.
11553
11554 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
11555
11556         PR target/40671
11557         * config/rs6000/rs6000.c (rs6000_override_options): Use
11558         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
11559
11560         PR target/41145
11561         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
11562         reporting of vector + decimal/boolean/complex error.
11563
11564 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
11565
11566         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
11567         __vector double TYPE_DECL.
11568
11569 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
11570
11571         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
11572         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
11573         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
11574         to pointer to enum machine_mode.  Update all callers as needed.
11575
11576 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
11577
11578         * config/alpha/alpha.md (exception_receiver): Emit alternative
11579         GP load sequence if flag_reorder_blocks_and_partition is set.
11580         (*exception_receiver_2): Also enable when
11581         flag_reorder_blocks_and_partition is set.
11582
11583 2009-08-20  Matt Rice  <ratmice@gmail.com>
11584             Diego Novillo  <dnovillo@google.com>
11585
11586         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
11587         tree-ssa-sccvn.h.
11588
11589 2009-08-20  Richard Guenther  <rguenther@suse.de>
11590
11591         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
11592         * c-tree.h (c_dup_lang_specific_decl): Remove.
11593         (struct lang_decl, struct lang_type): Move definitions ...
11594         * c-lang.h: ... here.  New file.
11595         * c-decl.c: Include c-lang.h.
11596         (c_dup_lang_specific_decl): Remove.
11597         * c-typeck.c: Include c-lang.h.
11598         * Makefile.in (c-decl.o): Add c-lang.h dependency.
11599         (c-typeck.o): Likewise.
11600         * c-config-lang.in (gtfiles): Add c-lang.h.
11601         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
11602         like c-tree.h.
11603
11604 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
11605
11606         * config/alpha/alpha.c (alpha_end_function): Do not clear
11607         crtl->emit structure and free insn locators if cfun->is_thunk is true,
11608         this is now handled in generic code.
11609
11610 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
11611
11612         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
11613         (s390_z10_fix_long_loop_prediction): New function.
11614         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
11615         (s390_reorg): Walk over the INSNs and invoke
11616         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
11617
11618 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
11619
11620         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
11621         "*brx_64bit", "*brx_31bit"): New patterns.
11622         * config/s390/s390.c ('E'): New output modifier.
11623
11624 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11625             Richard Earnshaw  <richard.earnshaw@arm.com>
11626
11627         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
11628         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
11629
11630 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11631
11632         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
11633         patterns.
11634         * pa.c (emit_move_sequence): Check if address of operand1 is valid
11635         for mode mode of operand0 when doing secondary reload for SAR.
11636
11637 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
11638
11639         PR middle-end/41123
11640         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
11641         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
11642
11643 2009-08-19  Jason Merrill  <jason@redhat.com>
11644
11645         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
11646         supported template depth in C++0x.
11647
11648 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
11649
11650         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
11651         free_after_compilation.
11652         * config/score/score7.c (score7_output_mi_thunk): Likewise.
11653         * config/score/score3.c (score3_output_mi_thunk): Likewise.
11654         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
11655         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
11656         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
11657         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
11658         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
11659
11660 2009-08-19  Ian Lance Taylor  <iant@google.com>
11661
11662         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
11663         of (plus (mult (neg B) C) A).
11664
11665 2009-08-18  Michael Matz  <matz@suse.de>
11666
11667         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
11668         instead of comparing TYPE_MAIN_VARIANT for equality.
11669         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
11670         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
11671         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
11672         * gimplify.c (goa_lhs_expr_p): Ditto and use
11673         STRIP_USELESS_TYPE_CONVERSION.
11674
11675 2009-08-18  Michael Matz  <matz@suse.de>
11676
11677         * tree-ssa-structalias.c (create_variable_info_for): Also mark
11678         first field in a struct.
11679         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
11680
11681 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
11682
11683         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
11684         locators before emit_insn is called.  Remove assert that
11685         cfun->is_thunk.
11686         (alpha_end_function): Clear crtl->emit structure and free insn
11687         locators if cfun->is_thunk is true.
11688
11689 2009-08-18  Jason Merrill  <jason@redhat.com>
11690
11691         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
11692         type if available.
11693         * configure.ac: Test for it.
11694         * configure, config.in: Regenerate.
11695         * doc/install.texi: Document --enable-gnu-unique-object.
11696
11697 2009-08-18  Richard Guenther  <rguenther@suse.de>
11698
11699         PR middle-end/41094
11700         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
11701         pow(x,y*z) only if x is nonnegative.
11702
11703 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
11704
11705         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
11706         on jumps.
11707
11708         PR target/40971
11709         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
11710         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
11711
11712 2009-08-17  DJ Delorie  <dj@redhat.com>
11713
11714         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
11715         * config/m32c/prologue.md (epilogue_freit): New.
11716         (fset_b): New.
11717         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
11718         (bank_switch_p): Likewise.
11719         (fast_interrupt_p): Likewise.
11720         (interrupt_p): Likewise.
11721         (m32c_conditional_register_usage): Round memregs size up.
11722         (need_to_save): We only need to save $a0 when we use ENTER.
11723         (interrupt_p): Check for fast_interrupt too.
11724         (bank_switch_p): New.
11725         (fast_interrupt_p): New.
11726         (m32c_attribute_table): Add bank_switch and fast_interrupt.
11727         (m32c_emit_prolog): Support bank switching and fast interrupts.
11728         * doc/extend.texi (Function Attributes): Add bank_switch and
11729         fast_interrupt.
11730
11731 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
11732
11733         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
11734         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
11735
11736 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
11737
11738         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
11739         (menu): Add IA-64/VMS Options.
11740         (IA-64/VMS Options): Likewise.
11741
11742 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
11743
11744         PR target/38599
11745         * config/mips/mips.md (*lwxs): Use :P for pointer values.
11746
11747 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
11748
11749         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
11750         (mips_pop_asm_switch): Likewise.
11751         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
11752         with...
11753         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
11754         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
11755         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
11756         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
11757         instead of set_noreorder.
11758         (mips_output_function_prologue): Use the new functions.
11759         (mips_output_function_epilogue): Likewise.
11760         (mips_need_noat_wrapper_p): New function, split out from...
11761         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
11762         Use mips_push_asm_switch and mips_pop_asm_switch.
11763         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
11764         and mips_pop_asm_switch.
11765         (ASM_OUTPUT_REG_POP): Likewise.
11766         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
11767         Use mips_pop_asm_switch.
11768         (mips_asm_switch): New structure.
11769         (set_noreorder, set_nomacro): Replace with...
11770         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
11771         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
11772         instead of set_nomacro.
11773         (fix_truncsfsi2_macro): Likewise.
11774         (cprestore): Likewise.
11775         (hazard): Use mips_noreorder instead of set_noreorder.
11776         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
11777
11778 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
11779
11780         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
11781         from prev_active_insn.
11782
11783 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
11784
11785         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
11786         * config/avr/avr.c (avr_override_options): Initialize
11787         avr_current_arch variable.
11788         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
11789         __AVR_HAVE_16BIT_SP__ according to the device type.
11790         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
11791         TARGET_TINY_STACK.
11792         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
11793         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
11794
11795 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
11796
11797         PR debug/37801
11798         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
11799         generating inlined subroutine die only. We shouldn't be
11800         called for anything else.
11801         (gen_block_die): Don't generate inline subroutine debug info for
11802         abstract blocks.
11803
11804 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
11805
11806         * graphite-poly.c (print_pbb): Print PBB index.
11807
11808 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
11809
11810         PR middle-end/40981
11811         * graphite-interchange.c (ppl_max_for_le): Moved...
11812         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
11813         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
11814         ppl_Pointset_Powerset_C_Polyhedron_maximize.
11815         * graphite-ppl.h (ppl_max_for_le): Declared.
11816
11817 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
11818
11819         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
11820         supported on all platforms.
11821         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
11822         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
11823         * c-pragma.c: Likewise.
11824         * target-def.h (TARGET_INITIALIZER): Remove
11825         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
11826         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
11827
11828 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
11829
11830         * config/ia64/fde-vms.c: New file.
11831         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
11832         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
11833         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
11834         (uw_frame_state_for): Only register a personality routine if it is
11835         known to be compatible with our expectations.
11836         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
11837         Declare unw_table_entry stack variable and
11838         mod all calls to _Unwind_FindTableEntry to add arg.
11839         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
11840         (_Unwind_FindTableEntry): Add arg to prototype.
11841
11842 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
11843
11844         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
11845         field 'signal_pfs_loc'.
11846         (uw_frame_state_for): Remove duplicate code dealing with leaf
11847         procedures without unwind info.
11848         If in the frame after unwinding through a signal handler, restore
11849         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
11850         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
11851         'pfs_loc' to the AR.PFS location in the signal context; instead
11852         set 'signal_pfs_loc'.
11853         Manually generate the unwind info for the AR.PFS register.
11854         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
11855         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
11856         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
11857         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
11858         instead set 'signal_pfs_loc'.
11859         Remove code preventing the AR.PFS register from being restored
11860         from the signal context.
11861
11862 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
11863             Tristan Gingold  <gingold@adacore.com>
11864
11865         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
11866         * config/ia64/t-vms: New file.
11867         * config/ia64/vms64.h: New file.
11868         * config/ia64/vms.h: New file.
11869         * config/ia64/vms-crtinit.asm: New file.
11870         * config/ia64/vms_symvec_libgcc_s.opt: New file.
11871         * config/ia64/vms-unwind.h: New file.
11872
11873 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
11874
11875         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
11876         TFmode compares.
11877
11878 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11879
11880         PR middle-end/30789
11881         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
11882         Move declaration...
11883         * real.h (do_mpc_arg2): ... here.
11884         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
11885         and RDIV_EXPR.
11886
11887 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
11888
11889         * final.c (add_debug_prefix_map): Don't use GC memory for
11890         old_prefix and new_prefix.
11891
11892 2009-08-14  Richard Guenther  <rguenther@suse.de>
11893
11894         * ipa-prop.c (compute_complex_pass_through): If we cannot
11895         compute a non-varying offset for IPA_JF_ANCESTOR punt.
11896
11897 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11898
11899         * c-lex.c (c_lex_with_flags): Increase size of local variable
11900         to avoid memory clobber.
11901
11902 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
11903
11904         PR target/40934
11905         * config/i386/i386.c (ix86_fp_comparison_strategy):
11906         Only enable/disable sahf at function granularity.
11907
11908 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
11909
11910         PR rtl-optimization/41064
11911         * reload1.c (reload_as_needed): Don't call extract_insn
11912         for known invalid replacements after calling
11913         validate_replace_rtx_group and verify_changes.
11914
11915 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
11916
11917         PR target/41019
11918         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
11919         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
11920         ix86_expand_fp_vcond.
11921         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
11922         Assert that operation is supported by ix86_expand_int_vcond.
11923         (vcondu<SSEMODE124C8:mode>): Ditto.
11924
11925 2009-08-13  DJ Delorie  <dj@redhat.com>
11926
11927         * config/i386/djgpp-stdint.h: New.
11928         * config.gcc (djgpp): Use it.
11929
11930 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
11931
11932         * config/sh/sh.c (sh_override_options): When flag_exceptions or
11933         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
11934
11935 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11936
11937         * tree-ssa-loop-prefetch.c
11938         (prune_ref_by_group_reuse): Enhance probabilistic analysis
11939         for long-stride pruning.
11940         (compute_miss_rate): New function to compute the probability
11941         that two memory references access different cache lines.
11942
11943 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
11944
11945         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
11946
11947 2009-08-13  Richard Guenther  <rguenther@suse.de>
11948
11949         PR middle-end/41047
11950         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
11951         use the constant pointer type.
11952         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
11953         of CV qualifiers on the target pointer type.
11954         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
11955         conversion check before restrict check.
11956
11957 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11958
11959         PR target/41029
11960         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
11961
11962 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11963
11964         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
11965
11966 2009-08-12  Richard Guenther  <rguenther@suse.de>
11967
11968         PR tree-optimization/41011
11969         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
11970         and reference constructing.
11971
11972 2009-08-12  Xinliang David Li  <davidxl@google.com>
11973
11974         PR tree-optimization/41012
11975         * tree-flow.h : New external interface.
11976         * gimple-low.c (check_call_arg): Change to public function.
11977         Remove argument mismatch check in lowering.
11978         * tree-inline.h (tree_can_inline_p): Interface change.
11979         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
11980         into this function.
11981         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
11982         Call change to tree_can_inline_p function.
11983         (cgraph_decide_inlining_incrementally): Ditto.
11984
11985 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
11986
11987         PR tree-optimization/41031
11988         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
11989         on the partition variable rather than promote_mode on the source
11990         type.  Assert that the partition variable's type has the same
11991         mode as the source value's.
11992
11993 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
11994
11995         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
11996         for for_return == 2.
11997         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
11998         comments.
11999         * calls.c (expand_call): Fix typo.
12000         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
12001         and PARM_DECL.
12002         * stmt.c (expand_value_return): Use promote_function_mode to copy out
12003         of pseudo.
12004         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
12005         * config/cris/cris.c (cris_promote_function_mode): Likewise.
12006         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
12007         * config/pa/pa.c (pa_promote_function_mode): Likewise.
12008
12009 2009-08-12  Andrew Haley  <aph@redhat.com>
12010
12011         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
12012
12013 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12014
12015         PR bootstrap/40103
12016         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
12017
12018 2009-08-12  Richard Guenther  <rguenther@suse.de>
12019
12020         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
12021         * gimplify.c (gimplify_modify_expr): Do not use
12022         lang_hooks.types_compatible_p.
12023         * tree-ssa.c (useless_type_conversion_p): For aggregates
12024         just return false if the canonical types differ.
12025
12026 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12027
12028         PR middle-end/40980
12029         * sese.c (convert_for_phi_arg): New.
12030         (add_guard_exit_phis): Use convert_for_phi_arg.
12031
12032 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12033
12034         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
12035         unknown subscript upper bounds.
12036
12037 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12038             Pranav Garg  <pranav.garg2107@gmail.com>
12039
12040         * graphite-interchange.c (gather_access_strides): Removed.
12041         (ppl_max_for_le): New.
12042         (build_linearized_memory_access): New.
12043         (memory_stride_in_loop): New.
12044         (pbb_interchange_profitable_p): Reimplemented.
12045         * graphite-ppl.h (ppl_new_id_map): New.
12046         (ppl_interchange): New.
12047
12048 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12049
12050         * graphite-interchange.c (compute_subscript): Removed.
12051         (compute_array_size_cstr): Removed.
12052         (compute_array_size_poly): Removed.
12053         (compute_array_size): Removed.
12054         (gather_access_strides_poly): Removed.
12055         (gather_access_strides): Empty.
12056
12057 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12058
12059         * graphite-dependences.c (dependence_polyhedron_1): Replace
12060         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
12061         (graphite_legal_transform_dr): Same.
12062         (graphite_carried_dependence_level_k): Same.
12063         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
12064         Initialize PDR_NB_SUBSCRIPTS.
12065         (print_pdr_access_layout): Replace pdr_nb_subscripts with
12066         PDR_NB_SUBSCRIPTS.
12067         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
12068         (PDR_NB_SUBSCRIPTS): New.
12069         (pdr_nb_subscripts): Removed.
12070         (pdr_dim): Simplified.
12071         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
12072         with PDR_NB_SUBSCRIPTS.
12073
12074 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12075
12076         * graphite-interchange.c (compute_array_size): Remove use of
12077         PDR_DATA_CONTAINER.
12078         * graphite-poly.c (new_poly_dr): Remove argument data_container.
12079         Do not initialize PDR_DATA_CONTAINER.
12080         (print_pdr): Do not print PDR_DATA_CONTAINER.
12081         * graphite-poly.h (struct poly_dr): Remove data_container field.
12082         (PDR_DATA_CONTAINER): Removed.
12083         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
12084         PDR_DATA_CONTAINER.
12085         (build_poly_dr): Same.
12086
12087 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
12088             Sebastian Pop  <sebastian.pop@amd.com>
12089
12090         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
12091         copy of the dependence polyhedron.  Free the temporary objects.
12092         (graphite_carried_dependence_level_k): Free unused objects before
12093         returning.
12094
12095 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12096
12097         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
12098         Early return without analyzing the data dependences if no
12099         transform has been done.  Call restore_scattering if the transform
12100         is not legal.
12101         (graphite-interchange.c): Same.
12102         * graphite-poly.c (print_scattering_function): Test for
12103         PBB_TRANSFORMED.
12104         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
12105         (apply_poly_transforms): Do not gcc_assert that
12106         the transform is legal.
12107         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
12108         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
12109         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
12110         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
12111         * graphite-poly.h (struct poly_scattering): New.
12112         (struct poly_bb): Add original, transformed, and saved fields.
12113         Remove transformed_scattering, original_scattering,
12114         nb_local_variables and nb_scattering_transform fields.
12115         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
12116         (poly_scattering_new): New.
12117         (poly_scattering_free): New.
12118         (poly_scattering_copy): New.
12119         (store_scattering_pbb): New.
12120         (store_scattering): New.
12121         (restore_scattering_pbb): New.
12122         (restore_scattering): New.
12123         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
12124         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
12125
12126 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12127
12128         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
12129         (print_scop): Same.
12130
12131 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12132
12133         * Makefile.in (graphite.o): Depends on PREDICT_H.
12134         * graphite.c: Include predict.h.
12135         (graphite_finalize): Call tree_estimate_probability.
12136         * predict.c (predict_loops): Do not call scev_initialize and
12137         scev_finalize.
12138         (tree_estimate_probability_bb): New.
12139         (tree_estimate_probability): Do not initialize loops: move that
12140         code to the driver.  Call tree_estimate_probability_bb.
12141         (tree_estimate_probability_driver): New.
12142         (pass_profile): Use tree_estimate_probability_driver.
12143         * predict.h (tree_estimate_probability): Declared.
12144
12145 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12146
12147         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
12148         * graphite-dependences.c (graphite_legal_transform): Add time to
12149         TV_GRAPHITE_DATA_DEPS.
12150         (dependency_between_pbbs_p): Same.
12151         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
12152
12153 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
12154
12155         PR rtl-optimization/41033
12156         * alias.c (nonoverlapping_component_refs_p): Punt when strict
12157         aliasing is disabled.
12158
12159 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
12160
12161         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
12162         si_mask_operand, and_load_operand, low_bitmask_operand,
12163         and_reg_operand, and_operand): New predicates.
12164         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
12165         * config/mips/mips.c (and_operands_ok): New function.
12166         * config/mips/mips-protos.h (and_operands_ok): Declare it.
12167         * config/mips/mips.md (move_type): Add ext_ins and logical.
12168         (type): Handle them.
12169         (and<mode>3): Use and_reg_operand as the second operand's predicate.
12170         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
12171         shift_shift.  Remove commutative constraint modifier.
12172         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
12173         shift_shift.
12174         (*clear_upper32_dext): Remove define_insn_and_split.
12175         (*clear_upper32): Turn this define_insn_and_split ...
12176         (splitter for ANDing register with 0xffff_ffff): .. into this.
12177
12178 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
12179
12180         * combine.c (try_widen_shift_mode): Factor out code to check if an
12181         integer constant is a low-order bitmask from here ...
12182         * rtlanal.c (low_bitmask_len): ... to here.
12183         * rtl.h (low_bitmask_len): Declare.
12184
12185 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
12186
12187         PR target/8603
12188         * config/alpha/alpha.md (addsi3): Remove expander.
12189         (addsi3): Rename from *addsi3_internal insn pattern.
12190         (subsi3): Remove expander.
12191         (subsi3): Rename from *subsi3_internal insn pattern.
12192
12193 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
12194
12195         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
12196         FWRITE_UNLOCKED.
12197
12198 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
12199             Eric Botcazou  <botcazou@adacore.com>
12200             Douglas B Rupp  <rupp@gnat.com>
12201
12202         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
12203         that records that fit in 64 bits are returned by immediate value,
12204         as required by OpenVMS Calling Standard.
12205         (function_value): Adjust for above modification.
12206         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
12207         virtual_incoming_args_rtx as base object, not next_arg.
12208         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
12209
12210 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12211
12212         * reload.c (find_reloads_subreg_address): Check the original
12213         req_equiv_mem address to detect the case where an address is
12214         not valid in the outer mode.
12215
12216 2009-08-11  Richard Guenther  <rguenther@suse.de>
12217
12218         PR bootstrap/40788
12219         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
12220
12221 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
12222
12223         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
12224         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
12225
12226 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
12227             Douglas B Rupp  <rupp@gnat.com>
12228
12229         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
12230         PT_STACK when frame_pointer_needed on OpenVMS.
12231         (alpha_pv_save_size, alpha_using_fp): Remove.
12232         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
12233         with proper processing for PT_NULL.
12234         (alpha_vms_initial_elimination_offset): New function. Support for
12235         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
12236         (alpha_sa_size): Force procedure type to PT_STACK when
12237         frame_pointer_needed on OpenVMS.
12238         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
12239         (alpha_using_fp): Likewise.
12240         (alpha_vms_can_eliminate): Add prototype.
12241         (alpha_vms_initial_elimination_offset): Likewise.
12242         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
12243         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
12244
12245 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
12246             Douglas B Rupp  <rupp@gnat.com>
12247
12248         * config/alpha/alpha.c (common_object_handler): New function.
12249         (vms_attribute_table): Declare a single attribute "common_object".
12250         (vms_output_aligned_decl_common): New global function.
12251         (SECTION_VMS_OVERLAY): Delete.
12252         (SECTION_VMS_GLOBAL): Likewise.
12253         (SECTION_VMS_INITIALIZE): Likewise.
12254         (vms_asm_named_section): Remove support for above flags.
12255         (vms_section_type_flags): Delete.
12256         (TARGET_SECTION_TYPE_FLAGS): Likewise.
12257         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
12258         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
12259         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
12260
12261 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
12262
12263         PR target/41015
12264         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
12265         (sub_ddmmss): Likewise.
12266
12267 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
12268
12269         PR bootstrap/41018
12270         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
12271         year.
12272
12273 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12274
12275         PR target/37053
12276         * reload1.c (reload_as_needed): Use cancel_changes to completely
12277         undo a failed replacement attempt.
12278
12279 2009-08-10  Richard Guenther  <rguenther@suse.de>
12280
12281         PR middle-end/41006
12282         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
12283         (useless_type_conversion_p): ... here.  Require pointer targets
12284         to be compatible.
12285
12286 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
12287
12288         PR c++/40866
12289         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
12290         loose the original type of the statement list.
12291
12292 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12293
12294         * config/alpha/alpha.c: Include libfuncs.h
12295         (avms_asm_output_extern): New function.
12296         (alpha_init_libfuncs): Init some decc libfuncs.
12297         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
12298         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
12299         (DO_CRTL_NAMES): Define.
12300         (LIB_SPEC): Remove.
12301         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
12302         (LONG_TYPE_SIZE): Define.
12303         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
12304         (SUBTARGET_SWITCHES): Define malloc64 switch.
12305         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
12306         (MASK_RETURN_ADDR): Define.
12307         doc/invoke.texi (mmalloc64): Document switch.
12308
12309 2009-08-09  Olivier Hainque  <hainque@adacore.com>
12310             Douglas B Rupp  <rupp@gnat.com>
12311
12312         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
12313         uses_condition_handler.
12314         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
12315         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
12316         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
12317         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
12318         (code_for_builtin): New insn codes for the new alpha_builtins.
12319         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
12320         (alpha_sa_size): Account for uses_condition_handler.
12321         (alpha_expand_prologue): Likewise.
12322         (alpha_start_function): Likewise.
12323         (alpha_expand_epilogue): Likewise.
12324         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
12325         establish/revert expanders.
12326         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
12327         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
12328         New expander, resorting to the alpha.c associated function.
12329         (builtin_revert_vms_condition_handler): Likewise.
12330         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
12331         __gcc_shell_handler, the static VMS condition handler used as
12332         an indirection wrapper to the current dynamically established
12333         handler.
12334         * config/alpha/vms-unwind.h: Complete rewrite.
12335         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
12336         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
12337
12338 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
12339             Douglas B Rupp  <rupp@gnat.com>
12340
12341         * config/alpha/alpha.c (alpha_links): Add 'target' field.
12342         (alpha_need_linkage): Handle aliases.  Return function symbol.
12343         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
12344         Use ultimate alias target for the linkage name.
12345         * config/alpha/alpha.md (movmemdi): Use the symbol returned
12346         by alpha_need_linkage for the function symbol.
12347         (setmemdi): Likewise.
12348
12349 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12350
12351         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
12352         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
12353         (ASM_WEAKEN_LABEL): Define.
12354         (CRT_CALL_STATIC_FUNCTION): Define.
12355         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
12356         (ENDFILE_SPEC): Define.
12357         (INIT_SECTION_ASM_OP): Define.
12358         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
12359         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
12360         crtend.o crtendS.o.
12361         (MULTILIB_OSDIRNAMES): Define.
12362         (shlib_version): Define.
12363         (SHLIB_EXT): Define.
12364         (SHLIB_OBJS): Define.
12365         (SHLIB_NAME): Define.
12366         (SHLIB_MULTILIB): Define.
12367         (SHLIB_INSTALL): Define.
12368         (SHLIB_SYMVEC): Define.
12369         (SHLIB_SYMVECX2): Define.
12370         (SHLIB_LINK): Define.
12371
12372 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12373
12374         * config/alpha/alpha.c (alpha_initialize_trampoline):
12375         Initialize VMS trampoline IAW ABI for bounded procedure calls.
12376         (alpha_start_function): Emit transfer address on nested functions
12377         for VMS trampoline call.
12378         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
12379         since no longer used.
12380         * config/alpha/vms-tramp.asm: Remove.
12381         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
12382         since now only data initialized at runtime.
12383
12384 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12385
12386         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
12387         (LINK_GCC_C_SEQUENCE_SPEC): Define.
12388         (MD_EXEC_PREFIX): Remove, no longer used.
12389         (MD_STARTFILE_PREFIX): Likewise.
12390         (INCLUDE_DEFAULTS): Likewise.
12391         * config/alpha/t-vms:
12392         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
12393
12394 2009-08-09  Richard Guenther  <rguenther@suse.de>
12395
12396         PR tree-optimization/41016
12397         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
12398         (operand_precision): Remove.
12399         (integral_operand_p): Likewise.
12400         (recognize_single_bit_test): Adjust.
12401
12402 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
12403
12404         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
12405         operation overflows.  Likewise non-cast unary arithmetic.
12406         If one arm of a conditional expression is always taken,
12407         inhibit evaluation warnings for the other arm.  Likewise inhibit
12408         evaluation warnings for the second && or || operand if the first
12409         operand is enough to determine the result.
12410         * c-typeck.c (build_conditional_expr): Apply the same inhibition
12411         rules here.
12412         (build_binary_op): Prevent duplicate evaluation warnings.
12413
12414 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
12415
12416         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
12417         and destination have different modes, Use promote_mode to
12418         determine the signedness of the conversion.  Assert that the
12419         promoted source mode matches the destination mode.  Don't pass
12420         the destination and destination mode to expand_expr if the source
12421         mode is different.  Simplify conversion logic.
12422
12423 2009-08-09  Ira Rosen  <irar@il.ibm.com>
12424
12425         PR tree-optimization/41008
12426         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
12427         from condition only in case it's a comparison. Adjust checks.
12428
12429 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
12430
12431         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
12432         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
12433         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
12434         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
12435         (dump_cand): Handle them.
12436         (struct iv_cand): New members COST_STEP and AINC_USE.
12437         (stmt_after_increment): Likewise.
12438         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
12439         callers changed.  Use gimple_uid comparison instead of scanning.
12440         (add_candidate_1): When looking for identical candidates, take
12441         AINC_USE into account.  Set it for new candidates.
12442         (force_expr_to_var_cost): Cast target_spill_cost to int.
12443         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
12444         All callers changed.  Check for availability of autoinc addressing
12445         modes, both in general for a given mode, and in the specific use case.
12446         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
12447         changed.
12448         (get_computation_cost): Likewise.
12449         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
12450         add_autoinc_candidates): New static functions.
12451         (add_candidate): Call add_autoinc_candidates for candidates based on
12452         a USE_ADDRESS use.
12453         (find_iv_candidates): Call set_autoinc_for_original_candidates.
12454         (determine_use_iv_cost_address): If we have an autoinc candidate at
12455         the matching use, verify autoinc is possible and subtract the cost
12456         of the candidate's step from the cost.
12457         (determine_iv_cost): Record the cost of the increment in the COST_STEP
12458         member of the candidate.
12459         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
12460         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
12461
12462 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12463
12464         * config.build (ia64-hp-*vms*): New target.
12465         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
12466         with ia64-hp-*vms*.
12467         * config.gcc (ia64-hp-*vms*): New target.
12468         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
12469         with ia64-hp-*vms*.
12470         * config.host (ia64-hp-*vms*): New target.
12471         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
12472         with ia64-hp-*vms*.
12473
12474 2009-08-08  Richard Guenther  <rguenther@suse.de>
12475
12476         PR tree-optimization/40991
12477         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
12478
12479 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
12480
12481         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
12482         mode check.  Do truncations in an integer mode.
12483         (force_to_mode): Handle subregs for all mode types.  Only do
12484         arithmetic simplifications on integer modes.
12485
12486 2009-08-07  Richard Guenther  <rguenther@suse.de>
12487
12488         PR tree-optimization/40999
12489         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
12490         (maybe_fold_reference): Lookup constant initializers.
12491         (fold_gimple_assign): Likewise.
12492
12493 2009-08-07  Richard Guenther  <rguenther@suse.de>
12494
12495         * tree-ssa.c (useless_type_conversion_p_1): Only for types
12496         that require structural equality defer to the langhook.
12497
12498 2009-08-07  Martin Jambor  <mjambor@suse.cz>
12499
12500         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
12501         comments.
12502         (struct ipa_pass_through_data): New type.
12503         (struct ipa_ancestor_jf_data): New type.
12504         (union jump_func_value): Removed field formal_id, added fields
12505         pass_through and ancestor.
12506         (struct ipa_param_call_note): Changed type of formal_id to int from
12507         unsigned.
12508         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
12509         operations jump functions and ancestor jump functions.
12510         (compute_complex_pass_through): New function.
12511         (compute_scalar_jump_functions): Call compute_complex_pass_through,
12512         reflect changes in the jump function strucutre.
12513         (update_jump_functions_after_inlining): Ignore complex pass-through
12514         and ancestor jump functions.
12515         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
12516         polynomial pass-through with operation jump functions.
12517
12518 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
12519
12520         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
12521         fde->dw_fde_begin as begin label instead of hot/cold label.
12522         Use LLSDAC label instead of LLSDA for second section lsda.
12523         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
12524         label instead of LLSDA if it is true.
12525         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
12526         callers.
12527         * except.c (add_call_site, dw2_size_of_call_site_table): Add
12528         SECTION argument.  Use it as index into crtl->eh.call_site_record
12529         array.
12530         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
12531         use it to determine how to print table entries instead of using
12532         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
12533         label instead of normal begin label as base.
12534         (sjlj_assign_call_site_values): Adjust add_call_site caller.
12535         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
12536         ensure no EH range spans between sections and that landing pads
12537         are always in the corresponding section.
12538         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
12539         for crtl->eh.call_site_record being an array rather than scalar.
12540         (output_one_function_exception_table): New function, copied
12541         from output_function_exception_table.  Adjust
12542         dw2_size_of_call_site_table, dw2_output_call_site_table
12543         callers.  For SECOND section use *C suffixed labels.
12544         (output_function_exception_table): Call
12545         output_one_function_exception_table and, when doing hot/cold
12546         partitioning, also another time for the second section.
12547         * opts.c: Include except.h.
12548         (decode_options): Allow -freorder-blocks-and-partition with
12549         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
12550         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
12551         * function.h (struct rtl_eh): Change call_site_record from
12552         scalar into array of 2 elements.
12553
12554 2009-08-07  Martin Jambor  <mjambor@suse.cz>
12555
12556         * ipa-prop.c (count_formal_params_1): New function.
12557         (ipa_get_vector_of_formal_parms): New function.
12558         (get_vector_of_formal_parm_types): New function.
12559         (ipa_modify_formal_parameters): New function.
12560         (ipa_modify_call_arguments): New function.
12561         (index_in_adjustments_multiple_times_p): New function.
12562         (ipa_combine_adjustments): New function.
12563         (ipa_dump_param_adjustments): New function.
12564         * ipa-prop.h (struct ipa_parm_adjustment): New type.
12565         (ipa_get_vector_of_formal_parms): Declare.
12566         (ipa_modify_formal_parameters): Declare.
12567         (ipa_modify_call_arguments): Declare.
12568         (ipa_combine_adjustments): Declare.
12569         (ipa_dump_param_adjustments): Declare.
12570         (build_ref_for_offset): Declare.
12571         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
12572         * tree-sra.c: Include ipa-prop.c.
12573         (build_ref_for_offset): Make public.
12574
12575 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
12576
12577         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
12578
12579 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
12580
12581         * gcc/doc/extend.texi (__builtin_extract_return_address)
12582         (__builtin_frob_return_address): Document.
12583
12584 2009-08-06  Paul Brook  <paul@codesourcery.com>
12585
12586         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
12587         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
12588         implementation on ARMv6-M.
12589
12590 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12591
12592         * doc/extend.texi (pcs): Document new attribute for ARM.
12593
12594 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12595
12596         * arm.c (pcs_attribute_args): Comment out unsupported attribute
12597         variants.
12598
12599 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12600
12601         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
12602         warning ().
12603
12604 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12605
12606         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
12607
12608 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12609
12610         Merge ARM/hard_vfp_branch to trunk.
12611
12612         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
12613
12614         * arm.c (libcall_eq): New function.
12615         (libcall_hash): New function.
12616         (add_libcall): New function.
12617         (arm_libcall_uses_aapcs_base): New function.
12618         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
12619         libcalls using the base PCS.
12620         (arm_init_cumulative_args): Likewise.
12621
12622         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
12623
12624         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
12625         Use base ABI for conversion libfuncs between HFmode and SFmode.
12626
12627         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
12628
12629         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
12630         V4SImode as representatives of all 64-bit and 128-bit vector
12631         types.  Allow vector types without vector modes.
12632         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
12633         without vector modes like BLKmode.
12634         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
12635         BLKmode.  Avoid unsupported vector modes or TImode moves for
12636         non-TARGET_NEON.
12637         (aapcs_vfp_allocate_return_reg): Likewise.
12638         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
12639         V8QImode if TARGET_NEON || TARGET_IWMMXT.
12640
12641         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
12642
12643         * config/arm/arm.c (arm_handle_pcs_attribute): New.
12644         (arm_get_pcs_model): Pass attribute arguments to
12645         arm_pcs_from_attribute.
12646         (arm_init_cumulative_args): Use base AAPCS for conversions from
12647         floating-point types to DImode.
12648         (arm_attribute_table): Add pcs attribute.
12649         (arm_handle_pcs_attribute): New.
12650         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
12651         conversions from floating-point types to DImode, also declare them
12652         to use base AAPCS and declare functions they call to use base
12653         AAPCS and their RTABI names.
12654
12655         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
12656
12657         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
12658         -mfloat-abi=hard not being supported for VFP.
12659
12660         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
12661
12662         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
12663         SYMBOL_REF to hard_libcall_value.
12664
12665         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
12666             Richard Earnshaw  <rearnsha@arm.com>
12667
12668         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
12669         has been put on the stack, all remaining co-processory arguments for
12670         that co-processor also go on the stack.
12671
12672         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
12673
12674         * config/arm/arm.c (arm_return_in_memory): Handle returning
12675         vectors of suitable size in registers also for AAPCS case.
12676
12677         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
12678
12679         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
12680
12681         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
12682
12683         ARM Hard-VFP calling convention
12684         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
12685         * target.h (gcc_target): Add libcall_value to table of call hooks.
12686         * targhooks.h (default_libcall_value): Default implementation.
12687         * targhooks.c (default_libcall_value): Likewise.
12688         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
12689         * optabs.c (expand_unop): Use it.
12690         * expr.h (hard_libcall_value): Pass the function RTX through.
12691         * calls.c (emit_library_call_value_1): Update call to
12692         hard_libcall_value.
12693         * explow.c (hard_libcall_value): Use new target hook.
12694         * config/arm/arm.c: Include cgraph.h
12695         (TARGET_FUNCTION_VALUE): Override default hook.
12696         (arm_pcs_default): New variable.
12697         (arm_override_options): Don't fault hard calling convention with VFP.
12698         Add support for AAPCS variants.
12699         (arm_function_value): Make static.  Handle AAPCS variants.
12700         (arm_libcall_value): New function.
12701         (arm_apply_result_size): Handle VFP registers in results.
12702         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
12703         conventions.
12704         (pcs_attribute_args): New variable.
12705         (arm_pcs_from_attribute): New function.
12706         (arm_get_pcs_model): New function.
12707         (aapcs_vfp_cum_init): New function.
12708         (aapcs_vfp_sub_candidate): New function.
12709         (aapcs_vfp_is_return_candidate): New function.
12710         (aapcs_vfp_is_call_candidate): New function.
12711         (aapcs_vfp_allocate): New function.
12712         (aapcs_vfp_allocate_return_reg): New function.
12713         (aapcs_vfp_advance): New function.
12714         (aapcs_cp_arg_layout): New variable.
12715         (aapcs_select_call_coproc): New function.
12716         (aapcs_select_return_coproc): New function.
12717         (aapcs_allocate_return_reg): New function.
12718         (aapcs_libcall_value): New function.
12719         (aapcs_layout_arg): New function.
12720         (arm_init_cumulative_args): Initialize AAPCS args data.
12721         (arm_function_arg): Handle AAPCS variants using new interface.
12722         (arm_arg_parital_bytes): Likewise.
12723         (arm_function_arg_advance): New function.
12724         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
12725         calling conventions.
12726         (arm_setup_incoming_varargs): Handle new AAPCS args data.
12727         * arm.h (NUM_VFP_ARG_REGS): Define.
12728         (LIBCALL_VALUE): Update.
12729         (FUNCTION_VALUE): Delete.
12730         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
12731         (arm_pcs): New enum.
12732         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
12733         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
12734         (FUNCTION_ARG_REGNO_P): Add VFP regs.
12735         * arm-protos.h (arm_function_arg_advance): Add.
12736         (aapcs_libcall_value): Add.
12737         (arm_function_value): Delete.
12738
12739 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
12740             H.J. Lu  <hongjiu.lu@intel.com>
12741
12742         PR target/40957
12743         * config/i386/i386.c (standard_sse_mode_p): Remove.
12744         (standard_sse_constant_p): Return 2 for integer mode
12745         vector_all_ones_operand when SSE2 is enabled.
12746         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
12747         (ix86_expand_vector_move): Do not check for negative values from
12748         standard_sse_constant_p.
12749
12750 2009-08-06  Richard Guenther  <rguenther@suse.de>
12751
12752         * tree-ssa.c (useless_type_conversion_p_1): Make function and
12753         array type comparisons frontend independent.
12754         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
12755         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
12756         out array reference lower bound and element size operands.
12757         (ao_ref_init_from_vn_reference): Properly compute the offset
12758         for ARRAY_RANGE_REF.
12759         (vn_reference_fold_indirect): Fill out array reference lower
12760         bound and element size operands.
12761         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
12762         a non gimple valued reference operand which can happen for
12763         array reference lower bound or element size.
12764         (create_component_ref_by_pieces_1): Properly generate the
12765         element size operand for array references.
12766
12767 2009-08-06  Richard Guenther  <rguenther@suse.de>
12768
12769         PR tree-optimization/40964
12770         * tree.c (iterative_hash_host_wide_int): Export.
12771         * tree.h (iterative_hash_host_wide_int): Declare.
12772         * tree-ssa-structalias.c (heapvar_map): New struct.
12773         (heapvar_map_eq): New function.
12774         (heapvar_map_hash): Likewise.
12775         (heapvar_lookup): Adjust.
12776         (heapvar_insert): Likewise.
12777         (make_constraint_from_heapvar): Allow multiple heap variables
12778         per decl at different offsets.
12779         (init_alias_heapvars): Adjust.
12780
12781 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
12782
12783         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
12784         * mips_output_sync_loop (mips_output_sync_loop): Only emit
12785         trailing sync if TARGET_SYNC_AFTER_SC.
12786
12787 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
12788
12789         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
12790         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
12791         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
12792         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
12793         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
12794         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
12795         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
12796         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
12797         test_and_set_12): Rewrite calls to mips_output_sync_loop.
12798         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
12799         the prototype declaration match the definition.
12800         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
12801         instructions explicitly.  Add barrier_before and operands
12802         parameters.
12803         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
12804         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
12805         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
12806         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
12807         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
12808         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
12809
12810 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
12811
12812         * tree-ssa-alias.c: Fix intervals to use [) syntax.
12813
12814 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
12815             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
12816
12817         PR target/40906
12818         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
12819         source operand.
12820
12821 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
12822
12823         PR rtl-optimization/40924
12824         * dse.c (canon_address): Before calling cselib_expand_value_rtx
12825         make sure canon_rtx (mem_address) isn't simpler than
12826         canon_rtx (expanded_mem_address).
12827
12828 2009-08-05  Li Feng  <nemokingdom@gmail.com>
12829
12830         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
12831         for each poly_bb_p.
12832         (build_scop_drs): Build alias set for each SCoP.
12833
12834 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
12835
12836         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
12837         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
12838         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
12839         (MIPS_ARCH_FLOAT_SPEC): Likewise.
12840         (BASE_DRIVER_SELF_SPECS): Likewise.
12841
12842 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
12843
12844         * tree-ssa-alias.c: Fix some comment typos.
12845
12846 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
12847
12848         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
12849         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
12850
12851 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
12852
12853         PR c/39902
12854         * simplify-rtx.c (simplify_binary_operation_1): Disable
12855         simplifications for decimal float operations.
12856
12857 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
12858
12859         PR middle-end/40943
12860         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
12861         operand of INDIRECT_REF.
12862
12863 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
12864
12865         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
12866         constants referencing TLS symbols.
12867
12868 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
12869
12870         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
12871         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
12872
12873 2009-08-03  Richard Guenther  <rguenther@suse.de>
12874
12875         * tree.c (make_vector_type): Build a main variant first,
12876         get the canonical one and then build the variant.
12877         * tree-ssa.c (useless_type_conversion_p_1): Handle
12878         fixed-point types.
12879         (useless_type_conversion_p): Conversions to pointers to
12880         incomplete record types are useless.
12881
12882 2009-08-03  Richard Guenther  <rguenther@suse.de>
12883
12884         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
12885         file will be created.
12886         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
12887         * toplev.c (compile_file): Adjust comment.
12888
12889 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
12890
12891         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
12892         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
12893         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12894         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
12895         (sh_promote_function_mode): Fix typo.
12896
12897 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
12898
12899         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
12900
12901 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12902
12903         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
12904         declaration arguments.
12905
12906 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
12907
12908         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
12909         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
12910         (ix86_split_ashl): Ditto.
12911         (ix86_expand_vector_init_one_nonzero): Ditto.
12912         (ix86_expand_vector_set): Ditto.
12913         (ix86_expand_reduc_v4sf): Ditto.
12914
12915 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
12916
12917         * explow.c (promote_function_mode): Remove assert.
12918         * config/sh/sh.c (sh_promote_function_mode): Declare.
12919
12920 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12921
12922         * config/pa/pa.c (pa_promote_function_mode): Declare.
12923         Change to static.  Fix promote_mode call.
12924
12925         * gthr-dce.h (CONST_CAST2): Define if not defined.
12926         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
12927
12928         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
12929
12930 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
12931
12932         * expr.c (store_constructor): Use promote_decl_mode.  Remove
12933         now write-only variable unsignedp.
12934         (expand_expr_real_1): Use promote_decl_mode.
12935         * expr.h (promote_function_mode, promote_decl_mode): New.
12936         (promote_mode): Remove last argument.
12937         * function.c (assign_temp): Drop last argument of promote_mode.
12938         (assign_parm_find_data_types): Use promote_function_mode.
12939         (assign_parm_setup_reg): Likewise.
12940         (expand_function_end): Use promote_function_mode.
12941         * calls.c (initialize_argument_information): Use promote_function_mode.
12942         (precompute_arguments): Use promote_mode instead of checking if
12943         only PROMOTE_FUNCTION_MODE is defined.
12944         (expand_call): When making sibcall decisions, use promote_function_mode.
12945         Below, remove an if for targetm.calls.promote_function_return and
12946         and use promote_function_mode.
12947         (emit_library_call_value_1): Use promote_function_mode, fix bug
12948         where promote_mode was passed FOR_CALL == 0 for a return value in an
12949         assertion.
12950         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
12951         * explow.c (promote_function_mode, promote_decl_mode): New.
12952         (promote_mode): Keep only the FOR_CALL == 0 case.
12953         * combine.c (setup_incoming_promotion): Remove test of
12954         promote_function_args.  Use promote_function_mode.
12955         * stmt.c (expand_value_return): Use promote_decl_mode.
12956         (expand_decl): Use promote_decl_mode.
12957
12958         * expr.c (store_constructor): Use promote_decl_mode.  Remove
12959         now write-only variable unsignedp.
12960         (expand_expr_real_1): Use promote_decl_mode.
12961         * expr.h (promote_function_mode, promote_decl_mode): New.
12962         (promote_mode): Remove last argument.
12963         * function.c (assign_temp): Drop last argument of promote_mode.
12964         (assign_parm_find_data_types): Use promote_function_mode.
12965         (assign_parm_setup_reg): Likewise.
12966         (expand_function_end): Use promote_function_mode.
12967         * calls.c (initialize_argument_information): Use promote_function_mode.
12968         (precompute_arguments): Use promote_mode instead of checking if
12969         only PROMOTE_FUNCTION_MODE is defined.
12970         (expand_call): When making sibcall decisions, use promote_function_mode.
12971         Below, remove an if for targetm.calls.promote_function_return and
12972         and use promote_function_mode.
12973         (emit_library_call_value_1): Use promote_function_mode, fix bug
12974         where promote_mode was passed FOR_CALL == 0 for a return value in an
12975         assertion.
12976         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
12977         * explow.c (promote_function_mode, promote_decl_mode): New.
12978         (promote_mode): Keep only the FOR_CALL == 0 case.
12979         * combine.c (setup_incoming_promotion): Remove test of
12980         promote_function_args.  Use promote_function_mode.
12981         * stmt.c (expand_value_return): Use promote_decl_mode.
12982         (expand_decl): Use promote_decl_mode.
12983
12984         * explow.c (promote_function_mode): Just call the target hook.
12985         * targhooks.c (default_promote_function_mode,
12986         default_promote_function_mode_always_promote): New.
12987         * targhooks.h (default_promote_function_mode,
12988         default_promote_function_mode_always_promote): Declare.
12989         * target.h (promote_function_args, promote_function_return): Remove.
12990         (promote_function_mode): New.
12991         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
12992         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12993         (TARGET_PROMOTE_FUNCTION_MODE): New.
12994         (TARGET_CALLS): Adjust.
12995         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
12996         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
12997
12998         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
12999         * config/s390/s390.c (s390_promote_function_mode): ... here,
13000         with pointer handling.
13001         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13002         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13003
13004         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
13005         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
13006         with pointer handling.
13007         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13008         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13009
13010         * config/sh/sh-protos.h (sh_promote_function_mode): New.
13011         * config/sh/sh.c (sh_promote_function_mode): New.
13012         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13013         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13014
13015         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
13016         * config/cris/cris.c (cris_promote_function_mode): ... here.
13017         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13018         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13019
13020         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
13021         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
13022         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13023         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13024
13025         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
13026         * config/arm/arm.c (arm_promote_function_mode): ... here, without
13027         complex type handling.
13028         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13029         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13030
13031         * config/pa/pa.c (pa_promote_function_mode): New.
13032         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13033         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13034
13035         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
13036         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13037         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
13038         * config/xtensa/xtensa.c: Likewise.
13039         * config/stormy16/stormy16.c: Likewise.
13040         * config/iq2000/iq2000.c: Likewise.
13041         * config/rs6000/rs6000.c: Likewise.
13042         * config/picochip/picochip.c: Likewise.
13043         * config/arc/arc.c: Likewise.
13044         * config/mcore/mcore.c: Likewise.
13045         * config/score/score.c: Likewise.
13046         * config/mips/mips.c: Likewise.
13047         * config/bfin/bfin.c: Likewise.
13048         * config/ia64/ia64.c: Likewise (disabled though).
13049
13050         * config/frv/frv.h: Remove pointless remark.
13051
13052         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
13053         TARGET_PROMOTE_FUNCTION_ARGS,
13054         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
13055         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
13056
13057 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
13058
13059         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
13060         -floop-parallelize-all.
13061         * toplev.c (process_options): Rename flag_graphite_force_parallel to
13062         flag_loop_parallelize_all.
13063         * tree-ssa-loop.c (gate_graphite_transforms): Same.
13064         * graphite.c (graphite_transform_loops): Same.
13065         * common.opt: Same.
13066         * graphite-poly.c (apply_poly_transforms): Same.
13067
13068 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
13069
13070         PR tree-optimization/40914
13071         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
13072         if set, then check the delta field of the PMF record.
13073         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
13074         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
13075         call is stored in the delta.
13076
13077 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
13078
13079         * config/mips/mips.md (*clear_upper32_dext): New pattern.
13080
13081 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
13082
13083         * config/i386/bsd.h (ASM_BYTE): New define.
13084         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
13085         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
13086         .byte.  Use fputs or putc instead of fprintf where appropriate.
13087         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
13088         fputs or putc instead of fprintf where appropriate.
13089         * config/i386/i386elf.h: Ditto.
13090         * config/i386/sysv4.h: Ditto.
13091
13092         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
13093         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
13094         (*tls_global_dynamic_64): Ditto.
13095
13096 2009-07-31  Christian Bruel  <christian.bruel@st.com>
13097
13098         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
13099
13100 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13101
13102         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
13103         Remove dead code for MINUS.
13104
13105 2009-07-31  Anthony Green  <green@moxielogic.com>
13106
13107         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
13108         $r12 in prologue.
13109         (moxie_expand_epilogue): Ditto for epilogue.
13110         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
13111         incoming arguments.
13112         (moxie_function_arg): Ditto.
13113         (moxie_pass_by_reference): Ditto.
13114         (moxie_arg_partial_bytes): Ditto.
13115         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
13116         (FUNCTION_ARG_ADVANCE) Ditto.
13117         (REG_PARM_STACK_SPACE) Ditto.
13118         (FUNCTION_ARG_REGNO_P) Dito.
13119
13120         * config.gcc: Add moxie linux config support.
13121         * gcc/config/moxie/uclinux.h: New file.
13122
13123 2009-07-31  DJ Delorie  <dj@redhat.com>
13124
13125         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
13126         (UNSPECV_SP_SWITCH_E): New.
13127         (sp_switch_1): Change to an unspec.
13128         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
13129         replace $r15.
13130         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
13131         reference the new stack's address
13132
13133 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13134
13135         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
13136         graphite-clast-to-gimple.o, graphite-dependences.o,
13137         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
13138         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
13139         (graphite-blocking.o,
13140         graphite-clast-to-gimple.o, graphite-dependences.o,
13141         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
13142         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
13143         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
13144         * cfgloop.h (struct loop): Add can_be_parallel field.
13145         * common.opt (fgraphite-identity): Moved up.
13146         (fgraphite-force-parallel): New flag.
13147         * graphite.c: Rewrite.
13148         * graphite.h: Rewrite.
13149         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
13150         after Graphite.
13151         * toplev.c (graphite_out_file): New file descriptor.
13152         (graphite_in_file): New.
13153         (process_options): flag_graphite_force_parallel cannot be used without
13154         Graphite.
13155         * tree-ssa-loop.c: Include toplev.h.
13156         (gate_graphite_transforms): Enable flag_graphite for
13157         flag_graphite_force_parallel.
13158
13159 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13160
13161         * ChangeLog.graphite: New.
13162         * graphite-blocking.c: New.
13163         * graphite-clast-to-gimple.c: New.
13164         * graphite-clast-to-gimple.h: New.
13165         * graphite-dependences.c: New.
13166         * graphite-dependences.h: New.
13167         * graphite-interchange.c: New.
13168         * graphite-poly.c: New.
13169         * graphite-poly.h: New.
13170         * graphite-ppl.c: New.
13171         * graphite-ppl.h: New.
13172         * graphite-scop-detection.c: New.
13173         * graphite-scop-detection.h: New.
13174         * graphite-sese-to-poly.c: New.
13175         * graphite-sese-to-poly.h: New.
13176         * sese.c: New.
13177         * sese.h: New.
13178
13179 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13180
13181         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
13182         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
13183
13184 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13185
13186         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
13187         (scev_is_linear_expression): Return false if the evolution is not
13188         affine multivariate.
13189
13190 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13191
13192         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
13193         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
13194
13195 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13196
13197         * tree-data-ref.c (debug_data_references): New.
13198         (debug_data_reference): New.
13199         * tree-data-ref.h (debug_data_references): Declared.
13200         (debug_data_reference): Declared.
13201
13202 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13203
13204         * tree-data-ref.c (stmt_simple_memref_p: Removed.
13205         * tree-data-ref.h (scop_p): Removed.
13206         (struct data_reference): Remove field scop.
13207         (DR_SCOP): Removed.
13208         (stmt_simple_memref_p): Removed.
13209
13210 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13211
13212         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
13213         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
13214         basic block empty.
13215
13216 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13217
13218         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
13219
13220 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13221
13222         * doc/invoke.texi (-fgraphite-identity): Documented.
13223
13224 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13225
13226         * tree-scalar-evolution.c: Fix comment.
13227         (instantiate_scev_1): Return unknow from scev instantiation if the
13228         result is not above instantiate_below.
13229
13230 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13231
13232         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
13233         static anymore.  Instantiate the symbols that may have been introduced
13234         by chrec_apply.
13235         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
13236         Declared.
13237
13238 2009-07-30  DJ Delorie  <dj@redhat.com>
13239
13240         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
13241         .vliw directive to VLIW sections.
13242
13243 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13244
13245         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
13246         New variables.
13247         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
13248         (AUTOHEADER): New variable.
13249         ($(srcdir)/cstamp-h.in): Use it.
13250
13251 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
13252             Pat Haugen  <pthaugen@us.ibm.com>
13253             Revital Eres <ERES@il.ibm.com>
13254
13255         * config/rs6000/vector.md (VEC_F): Add VSX support.
13256         (VEC_A): Ditto.
13257         (VEC_N): Ditto.
13258         (mov<mode>): Ditto.
13259         (vector_load_<mode>): Ditto.
13260         (vector_store_<mode>): Ditto.
13261         (vector GPR move split): Ditto.
13262         (vec_reload_and_plus_<mptrsize>): Ditto.
13263         (vec_reload_and_reg_<mptrsize>): Ditto.
13264         (add<mode>3): Ditto.
13265         (sub<mode>3): Ditto.
13266         (mul<mode>3): Ditto.
13267         (neg<mode>2): Ditto.
13268         (abs<mode>2): Ditto.
13269         (smin<mode>3): Ditto.
13270         (smax<mode>3): Ditto.
13271         (vector_eq<mode>): Ditto.
13272         (vector_gt<mode>): Ditto.
13273         (vector_ge<mode>): Ditto.
13274         (vector_gtu<mode>): Ditto.
13275         (vector_select_<mode>_uns): Ditto.
13276         (vector_eq_<mode>_p): Ditto.
13277         (vector_gt_<mode>_p): Ditto.
13278         (vector_ge_<mode>_p): Ditto.
13279         (vector_gtu_<mode>_p): Ditto.
13280         (cr6_test_for_zero): Ditto.
13281         (cr6_test_for_zero_reverse): Ditto.
13282         (cr6_test_for_lt): Ditto.
13283         (cr6_test_for_lt_reverse): Ditto.
13284         (xor<mode>3): Ditto.
13285         (ior<mode>3): Ditto.
13286         (and<mode>3): Ditto.
13287         (one_cmpl<mode>2): Ditto.
13288         (nor<mode>2): Ditto.
13289         (andc<mode>2): Ditto.
13290         (float<VEC_int<mode>2): Ditto.
13291         (unsigned_float<VEC_int><mode>2): Ditto.
13292         (fix_trunc<mode><VEC_int>2): Ditto.
13293         (fixuns_trunc<mode><VEC_int>2): Ditto.
13294         (vec_init<mode>):
13295         (vec_set<mode>): Ditto.
13296         (vec_extract<mode>): Ditto.
13297         (vec_interleave_highv4sf): Ditto.
13298         (vec_interleave_lowv4sf): Ditto.
13299         (vec_realign_load_<mode>): Ditto.
13300         (vec_shl_<mode>): Ditto.
13301         (vec_shr_<mode>): Ditto.
13302         (div<mode>3): New patterns for VSX.
13303         (vec_interleave_highv2df): Ditto.
13304         (vec_interleave_lowv2df): Ditto.
13305         (vec_pack_trunc_v2df): Ditto.
13306         (vec_pack_sfix_trunc_v2df): Ditto.
13307         (vec_pack_ufix_trunc_v2df): Ditto.
13308         (vec_unpacks_hi_v4sf): Ditto.
13309         (vec_unpacks_lo_v4sf): Ditto.
13310         (vec_unpacks_float_hi_v4si): Ditto.
13311         (vec_unpacks_float_lo_v4si): Ditto.
13312         (vec_unpacku_float_hi_v4si): Ditto.
13313         (vec_unpacku_float_lo_v4si): Ditto.
13314         (movmisalign<mode>): Ditto.
13315         (vector_ceil<mode>2): New patterns for vectorizing math library.
13316         (vector_floor<mode>2): Ditto.
13317         (vector_btrunc<mode>2): Ditto.
13318         (vector_copysign<mode>3): Ditto.
13319
13320         * config/rs6000/predicates.md (easy_vector_constant_msb): New
13321         predicate for setting the high bit in each word, used for copysign.
13322
13323         * config/rs6000/ppc-asm.h (f19): Whitespace.
13324         (f32-f63): Define if VSX.
13325         (v0-v31): Define if Altivec.
13326         (vs0-vs63): Define if VSX.
13327
13328         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
13329
13330         * config/rs6000/power7.md: New file, provide tuning parameters for
13331         -mcpu=power7.
13332
13333         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
13334         (rs6000_cpu_cpp_builtins): Ditto.
13335         (altivec_overloaded_builtins): Ditto.
13336         (altivec_resolve_overloaded_builtin): Ditto.
13337
13338         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
13339         debug switch to disable vectorizing simple math builtin
13340         functions.
13341
13342         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
13343         Vectorize simple math builtin functions.
13344         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
13345         hook to vectorize math builtins.
13346         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
13347         (rs6000_builtin_conversion): Add VSX/power7 support.
13348         (rs6000_builtin_vec_perm): Ditto.
13349         (vsplits_constant): Add support for loading up a vector constant
13350         with just the high bit set in each part.
13351         (rs6000_expand_vector_init): Add VSX/power7 support.
13352         (rs6000_expand_vector_set): Ditto.
13353         (rs6000_expand_vector_extract): Ditto.
13354         (rs6000_emit_move): Ditto.
13355         (bdesc_3arg): Ditto.
13356         (bdesc_2arg): Ditto.
13357         (bdesc_1arg): Ditto.
13358         (rs6000_expand_ternop_builtin): Ditto.
13359         (altivec_expand_builtin): Ditto.
13360         (rs6000_expand_unop_builtin): Ditto.
13361         (rs6000_init_builtins): Ditto.
13362         (altivec_init_builtins): Ditto.
13363         (builtin_function_type): Ditto.
13364         (rs6000_common_init_builtins): Ditto.
13365         (rs6000_handle_altivec_attribute); Ditto.
13366         (rs6000_mangle_type): Ditto.
13367         (rs6000_vector_mode_supported_p): Ditto.
13368         (rs6000_mode_dependent_address): Altivec addresses with AND -16
13369         are mode dependent.
13370
13371         * config/rs6000/vsx.md: New file for VSX support.
13372
13373         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
13374         identifing values with just the most significant bit set.
13375         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
13376         vectorized builtins.
13377
13378         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
13379         (UNSPEC_VRFIM): Delete.
13380         (splitter for loading up vector with most significant bit): New
13381         splitter for vectorizing copysign.
13382         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
13383         vectorizing simple math functions.
13384         (altivec_vrfip): Add support for vectorizing simple math functions.
13385         (altivec_vrfim): Ditto.
13386         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
13387
13388         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
13389         (power7.md, vsx.md): Include for power7 support.
13390         (copysigndf3): Use VSX instructions if -mvsx.
13391         (negdf2_fpr): Ditto.
13392         (absdf2_fpr): Ditto.
13393         (nabsdf2_fpr): Ditto.
13394         (adddf3_fpr): Ditto.
13395         (subdf3_fpr): Ditto.
13396         (muldf3_fpr): Ditto.
13397         (divdf3_fpr): Ditto.
13398         (fix_truncdfdi2_fpr): Ditto.
13399         (cmpdf_internal1): Ditto.
13400         (fred, fred_fpr): Convert into expander/insn to add VSX support.
13401         (btruncdf2, btruncdf2_fpr): Ditto.
13402         (ceildf2, ceildf2_fpr): Ditto.
13403         (floordf2, floordf2_fpr): Ditto.
13404         (floatdidf2, floatdidf2_fpr): Ditto.
13405         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
13406         (fmsubdf4_fpr): Ditto.
13407         (fnmadddf4_fpr_1): Ditto.
13408         (fnmadddf4_fpr_2): Ditto.
13409         (fnmsubdf4_fpr_1): Ditto.
13410         (fnmsubdf4_fpr_2): Ditto.
13411         (fixuns_truncdfdi2): Add expander for VSX support.
13412         (fix_truncdfdi2): Ditto.
13413         (fix_truncdfsi2): Ditto.
13414         (ftruncdf2): Ditto.
13415         (btruncsf2): Whitespace.
13416         (movdf_hardfloat32): Add support for VSX registers.
13417         (movdf_softfloat32): Ditto.
13418         (movdf_hardfloat64): Ditto.
13419         (movdf_hardfloat64_mfpgpr): Ditto.
13420         (movdf_softfloat64): Ditto.
13421         (movti splitters): Add check for vector registers supporting
13422         TImode in the future.
13423         (bpermd): Add power7 bpermd instruction.
13424
13425         * config/rs6000/altivec.h (vec_div): Define if VSX.
13426         (vec_mul): Ditto.
13427         (vec_msub): Ditto.
13428         (vec_nmadd): Ditto.
13429         (vec_nearbyint): Ditto.
13430         (vec_rint): Ditto.
13431         (vec_sqrt): Ditto.
13432         (all predicates): Use the generic builtin function, and not the V4SF
13433         specific function so that the predicates will work with VSX's V2DF.
13434         (vec_all_*): Ditto.
13435         (vec_any_*): Ditto.
13436
13437         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
13438         Document new VSX functions and types.
13439
13440         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
13441         switches.
13442
13443         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
13444         "wa", and "j" constraints.  Modify "v" to talk about Altivec
13445         instead of just vector.
13446
13447 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
13448
13449         PR debug/26475
13450         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
13451         location for phi arguments.
13452         (rewrite_update_phi_arguments): Find locations for reaching defs.
13453         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
13454         Add location to add_phi_arg calls.
13455         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
13456         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
13457         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
13458         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
13459         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
13460         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
13461         * tree-phinodes.c (make_phi_node): Initialize location.
13462         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
13463         (add_phi_arg): Add location parameter.
13464         (remove_phi_arg_num): Move location when moving phi argument.
13465         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
13466         location.
13467         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
13468         slpeel_update_phi_nodes_for_guard1,
13469         slpeel_update_phi_nodes_for_guard2,
13470         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
13471         vect_loop_versioning): Set locations.
13472         * tree-parloops.c (create_phi_for_local_result,
13473         transform_to_exit_first_loop, create_parallel_loop): Add locations.
13474         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
13475         * tree-vect-loop.c (get_initial_def_for_induction,
13476         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
13477         locations.
13478         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
13479         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
13480         (gimple_phi_arg_set_location): New.  Set locus.
13481         (gimple_phi_arg_has_location): New.  Check for locus.
13482         (redirect_edge_var_map_location): New.  Return locus from var_map.
13483         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
13484         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
13485         combining PHI arguments.
13486         (cond_store_replacement): Set location.
13487         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
13488         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
13489         scop_add_exit_phis_edge): Add locations.
13490         * tree-cfgcleanup.c (remove_forwarder_block,
13491         remove_forwarder_block_with_phi): Add locations.
13492         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
13493         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
13494         locations.
13495         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
13496         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
13497         flush_pending_stmts): Add source location.
13498         * lambda-code.c (perfect_nestify): Maintain location stack with argument
13499         stack to preserve locations.
13500         * tree-vect-stmts.c (vectorizable_load): Add location.
13501         * tree-inline.c (copy_phis_for_bb): Copy locus.
13502         (setup_one_parameter): Add call locus to inlined parameter stmts.
13503         (initialize_inlined_parameters): Pass in call location as parameter
13504         assignment locus.
13505         (tree_function_versioning): Pass location to setup_one_parameter.
13506         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
13507         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
13508         copy and edge lists.
13509         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
13510         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
13511         locus parameter and override the stmt default if provided.
13512         (new_elim_graph, clear_elim_graph, delete_elim_graph,
13513         elim_graph_add_edge, elim_graph_remove_succ_edge,
13514         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
13515         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
13516         eliminate_phi):  Add locus info in elimination graph for each edge and
13517         value copy.
13518         (insert_backedge_copies): Copy locus if present.
13519         * tree-flow.h (struct _edge_var_map): Add locus field.
13520         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
13521         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
13522         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
13523         locations.
13524         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
13525
13526 2009-07-30  Martin Jambor  <mjambor@suse.cz>
13527
13528         PR tree-optimization/40570
13529         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
13530         use inlining loops.
13531
13532 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
13533
13534         * ssa-loop-manip.c: Include langhooks.h.
13535         (rewrite_phi_with_iv): New.
13536         (rewrite_all_phi_nodes_with_iv): New.
13537         (canonicalize_loop_ivs): Move here from tree-parloops.c.
13538         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
13539         * tree-parloops.c (loop_parallel_p): Move out all conditions
13540         except dependency check.
13541         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
13542         (gen_parallel_loop): Call canonicalize_loop_ivs without
13543         reduction_list argument.
13544         (build_new_reduction): New.
13545         (gather_scalar_reductions): New.
13546         (try_get_loop_niter): New.
13547         (try_create_reduction_list): New.
13548         (parallleize_loops): Change the parallel conditions check.
13549         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
13550         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
13551
13552 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
13553
13554         * opt-functions.awk (opt_args): Allow argument to be enclosed in
13555         curly braces.
13556         * doc/options.texi (Option properties):  Mention new quoting syntax.
13557
13558 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
13559
13560         * config/alpha/alpha.c (alpha_start_function):
13561         Handle VMS_DEBUG_MAIN_POINTER
13562         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
13563         * doc/invoke.texi: Document -mdebug-main switch.
13564
13565 2009-07-29  Richard Henderson  <rth@redhat.com>
13566
13567         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
13568         (cgraph_create_edge_including_clones): Likewise.
13569         * tree-inline.c (copy_bb): Operate on the correct edges
13570         when updating the callgraph.
13571
13572 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
13573
13574         * config/alpha/vms-cc.c: Deleted.
13575         * config/alpha/vms-ld.c: Deleted.
13576         * config/alpha/t-vms64: Moved to config/vms
13577         * config/alpha/vms-crt0-64.c: Moved to config/vms
13578         * config/alpha/vms-crt0.c: Moved to config/vms
13579         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
13580         * config/alpha/vms-psxcrt0.c: Moved to config/vms
13581         * config/alpha/xm-vms.h: Moved to config/vms
13582         * config/alpha/x-vms: Moved to config/vms
13583         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
13584         config/vms/t-vms.
13585         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
13586         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
13587         (version): Set.
13588         * config/vms/t-vms64: Moved here from config/alpha
13589         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
13590         (argc,argv,envp): Enforce 32bit malloc'ing.
13591         * config/vms/vms-psxcrt0-64.c: Likewise.
13592         * config/vms/vms-crt0.c: Moved here from config/alpha.
13593         * config/vms/vms-psxcrt0.c: Likewise.
13594         * config/vms/vms-crtl-64.h: New file.
13595         * config/vms/vms-crtl.h: New file.
13596         * config/vms/vms.opt: New file.
13597         * config/vms/xm-vms64.h: New file.
13598         * config/vms/xm-vms.h: Moved here from config/alpha.
13599         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
13600         Set.
13601         * config/vms/x-vms: Moved here from config/alpha.
13602         (version, VMS_EXTRA_PARTS): Moved to t-vms.
13603         (vms-ld.o, vms-cc.o): Removed.
13604         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
13605
13606 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
13607
13608         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
13609         correct stack (obvious VMS fix).
13610
13611 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
13612
13613         * dwarf2out.c (output_file_names): Output VMS style file name, size,
13614         date, version info if VMS_DEBUGGING_INFO defined.
13615         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
13616         size, date calculating code moved here.
13617
13618 2009-07-29  Paul Brook  <paul@codesourcery.com>
13619
13620         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
13621         do_push/do_pop.
13622
13623 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
13624
13625         PR target/40577
13626         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
13627         to DImode when generating insq_le insn.
13628
13629 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
13630
13631         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
13632         New macro set for VMS_DEBUGGGING_INFO.
13633         (AT_string_form): Use it.
13634
13635 2009-07-28  DJ Delorie  <dj@redhat.com>
13636
13637         * config/mep/mep.c (vtext_section): New.
13638         (vftext_section): New.
13639         (ftext_section): New.
13640         (mep_select_section): Add support for functions.
13641         (mep_unique_section): Likewise.
13642         (mep_asm_init_sections): Likewise.
13643         (mep_encode_section_info): Remove it from here.
13644
13645         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
13646
13647 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
13648
13649         * tree.h (TREE_DEPRECATED): Document it is used for types too.
13650         (TYPE_VECTOR_OPAQUE): Use default_def_flag
13651
13652 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
13653
13654         * dwarf2out.c (output_file_names): Test new macro
13655         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
13656         (add_comp_dir_attribute): Likewise.
13657
13658 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
13659
13660         * config/i386/mingw-w64.h (LINK_SPEC): Add
13661         separating space between commands.
13662
13663 2009-07-28  Jan Hubicka  <jh@suse.cz>
13664
13665         PR tree-optimization/40759
13666         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
13667         for renaming.
13668
13669 2009-07-27  DJ Delorie  <dj@redhat.com>
13670
13671         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
13672         types are dword-aligned.
13673         (mep_expand_va_start): Likewise.
13674
13675 2009-07-27  Olivier Hainque  <hainque@adacore.com>
13676             Douglas B Rupp  <rupp@gnat.com>
13677
13678         * convert.c (convert_to_pointer): Don't assume the target
13679         pointer type is POINTER_SIZE long. Fetch its precision instead.
13680
13681 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
13682
13683         * system.h (fopen): Undefine if macro.
13684
13685 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
13686
13687         * dwarf2out.c (output_cfi_p): Removed.
13688         (output_cfis): New function.
13689         (output_fde): New function, split from output_call_frame_info.
13690         (output_call_frame_info): Use it.
13691         (dwarf2out_switch_text_section): Use output_cfis.
13692
13693 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
13694
13695         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
13696         TARGET_BI_ARCH is specified without enabling SJLJ.
13697         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
13698         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
13699
13700 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
13701
13702         * arm.md (negdi2): Use DImode if forcing a value into a register.
13703
13704 2009-07-26  Ira Rosen  <irar@il.ibm.com>
13705
13706         PR tree-optimization/40801
13707         * tree-vect-stmts.c (vectorizable_call): Get previous copy
13708         of vector operand from the previous copy of vector statement.
13709         Pass the correct definition type value to
13710         vect_get_vec_def_for_stmt_copy().
13711
13712 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13713
13714         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
13715         const char ** conversion.
13716
13717 2009-07-25 David Daney <ddaney@caviumnetworks.com>
13718
13719         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
13720         fancy_abort() if !ENABLE_ASSERT_CHECKING.
13721         (gcc_unreachable): Invoke __builtin_unreachable() if
13722         !ENABLE_ASSERT_CHECKING.
13723
13724 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
13725
13726         PR rtl-optimization/40445
13727         * emit-rtl.c (next_nonnote_insn_bb): New function.
13728         * rtl.h (next_nonnote_insn_bb): Declare new function.
13729         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
13730         with no successors that is the successor of the ENTRY_BLOCK.
13731         Continue from the top after removing an empty fallthrough block.
13732         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
13733         of next_nonnote_insn.
13734
13735 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
13736
13737         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
13738
13739 2009-07-25  Martin Jambor  <mjambor@suse.cz>
13740
13741         * c-common.c (c_common_attribute_table): New element for noclone.
13742         (handle_noclone_attribute): New function. Forward-declare.
13743         * tree-inline.c (tree_versionable_function_p): Check for noclone
13744         attribute.
13745         * doc/extend.texi (Labels as Values): Document need for noclone.
13746         (Function Attributes): Document noclone attribute.
13747
13748 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
13749
13750         PR rtl-optimization/34999
13751         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
13752         and dw_fde_switched_cold_to_hot fields.
13753         (output_cfi_p): New function.
13754         (output_call_frame_info): If fde->dw_fde_switched_sections,
13755         output 2 FDEs instead of one with corrupted header.
13756         (dwarf2out_do_cfi_startproc): New function.
13757         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
13758         and fde->dw_fde_switched_cold_to_hot.
13759         (dwarf2out_switch_text_section): Compute
13760         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
13761         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
13762         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
13763         Otherwise, compute fde->dw_fde_switch_cfi.
13764
13765 2009-07-24  Cary Coutant  <ccoutant@google.com>
13766
13767         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
13768
13769 2009-07-24  Cary Coutant  <ccoutant@google.com>
13770
13771         * cfghooks.c (split_block): Copy discriminator to new block.
13772         * tree-cfg.c (assign_discriminator): Check location of last
13773         instruction in block as well as first.
13774
13775 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
13776
13777         * config/i386/linux.c: Use fputs or putc instead of fprintf
13778         where appropriate.
13779         * config/i386/gas.h: Ditto.
13780         * config/i386/x86-64.h: Ditto.
13781         * config/i386/att.h: Ditto.
13782
13783 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
13784
13785         * expmed.c (emit_store_flag): Use a recursive call to optimize the
13786         xor case.
13787
13788 2009-07-24  Martin Jambor  <mjambor@suse.cz>
13789
13790         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
13791         (ipa_push_func_to_list_1): Declare.
13792         (ipa_push_func_to_list): New function.
13793
13794         * ipa-prop.c (ipa_push_func_to_list_1): New function.
13795         (ipa_init_func_list): Call ipa_push_func_to_list_1.
13796         (ipa_push_func_to_list): Removed.
13797         (ipa_pop_func_from_list): Clear node_enqueued flag.
13798
13799 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13800
13801         * config/s390/s390.c (override_options): Default
13802         max-unrolled-insns to 100 for z10 tuning.
13803
13804 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
13805
13806         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
13807         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
13808         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
13809         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
13810         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
13811         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
13812         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
13813
13814 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
13815
13816         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
13817         use default set in mingw32.h header.
13818         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
13819         64-bit /mingw/include path.
13820         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
13821         path.
13822
13823 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
13824
13825         PR rtl-optimization/40209
13826         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
13827
13828 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
13829
13830         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
13831         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
13832         with the rest of string where appropriate.  Use fputs or putc
13833         instead of fprintf where appropriate.
13834
13835 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
13836             Pat Haugen  <pthaugen@us.ibm.com>
13837             Revital Eres <ERES@il.ibm.com>
13838
13839         * config/rs6000/vector.md: New file.  Move most of the vector
13840         expander support here from altivec.md to allow for the VSX vector
13841         unit in the future.  Add support for secondary_reload patterns.
13842         Rewrite the patterns for vector comparison, and vector comparison
13843         predicate instructions so that the RTL expresses the desired
13844         behavior, instead of using unspec.
13845
13846         * config/rs6000/constraints.md ("f" constraint): Use
13847         rs6000_constraints to hold the precalculated register class.
13848         ("d" constraint): Ditto.
13849         ("wd" constraint): New constraint for VSX.
13850         ("wf" constraint): Ditto.
13851         ("ws" constraint): Ditto.
13852         ("wa" constraint): Ditto.
13853         ("wZ" constraint): Ditto.
13854         ("j" constraint): Ditto.
13855
13856         * config/rs6000/predicates.md (vsx_register_operand): New
13857         predicate for VSX.
13858         (vfloat_operand): New predicate for vector.md.
13859         (vint_operand): Ditto.
13860         (vlogical_operand): Ditto.
13861         (easy_fp_constant): If VSX, 0.0 is an easy constant.
13862         (easy_vector_constant): Add VSX support.
13863         (altivec_indexed_or_indirect_operand): New predicate for
13864         recognizing Altivec style memory references with AND -16.
13865
13866         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
13867         for vector secondary reload support.
13868         (rs6000_vector_reg_class): Delete, replacing it with
13869         rs6000_constraints.
13870         (rs6000_vsx_reg_class): Ditto.
13871         (rs6000_constraints): New array to hold the register classes of
13872         each of the register constraints that can vary at runtime.
13873         (builtin_mode_to_type): New static array for builtin function type
13874         creation.
13875         (builtin_hash_table): New static hash table for builtin function
13876         type creation.
13877         (TARGET_SECONDARY_RELOAD): Define target hook.
13878         (TARGET_IRA_COVER_CLASSES): Ditto.
13879         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
13880         registers are 128 bits if VSX memory reference instructions are used.
13881         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
13882         unit is being used.
13883         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
13884         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
13885         Print several of the scheduling related parameters.
13886         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
13887         rs6000_constraints instead of rs6000_vector_reg_class.  Move
13888         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
13889         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
13890         Altivec.  Add VSX support.  Setup for secondary reload support on
13891         Altivec/VSX registers.
13892         (rs6000_override_options): Make power7 set the scheduling groups
13893         like the power5.  Add support for new debug switches to override
13894         the scheduling defaults.  Temporarily disable -mcpu=power7 from
13895         setting -mvsx.  Add support for debug switches -malways-hint,
13896         -msched-groups, and -malign-branch-targets.
13897         (rs6000_buitlin_conversion): Add support for returning unsigned
13898         vector conversion functions to fix regressions due to stricter
13899         type checking.
13900         (rs6000_builtin_mul_widen_even): Ditto.
13901         (rs6000_builtin_mul_widen_odd): Ditto.
13902         (rs6000_builtin_vec_perm): Ditto.
13903         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
13904         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
13905         to zero a register.
13906         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
13907         generated upstream.
13908         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
13909         VSX types for bit operations.  Changes to accomidate vector.md.
13910         (bdesc_2arg): Ditto.
13911         (bdesc_1arg): Ditto.
13912         (struct builtin_description_predicates): Rewrite predicate
13913         handling so that RTL describes the operation, instead of passing
13914         the instruction to be used as a string argument.
13915         (bdesc_altivec_preds): Ditto.
13916         (altivec_expand_predicate_builtin): Ditto.
13917         (altivec_expand_builtin): Ditto.
13918         (rs6000_expand_ternop_builtin): Use a switch instead of an if
13919         statement for vsldoi support.
13920         (altivec_expand_ld_builtin): Change to use new names from vector.md.
13921         (altivec_expand_st_builtin): Ditto.
13922         (paired_expand_builtin): Whitespace changes.
13923         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
13924         builtin_mode_to_type table for secondary reload.  Call
13925         builtin_function_type to build random builtin functions.
13926         (altivec_init_builtins): Change to use builtin_function_type to
13927         create builtin function types dynamically as we need them.
13928         (builtin_hash_function): New support for hashing the tree types
13929         for builtin function as we need it, rather than trying to build
13930         all of the trees that we need.  Add initial preliminary VSX support.
13931         (builtin_function_type): Ditto.
13932         (builtin_function_eq): Ditto.
13933         (builtin_hash_struct): Ditto.
13934         (rs6000_init_builtins): Ditto.
13935         (rs6000_common_init_builtins): Ditto.
13936         (altivec_init_builtins): Ditto.
13937         (rs6000_common_init_builtins): Ditto.
13938         (enum reload_reg_type): New enum for simplifing reg classes.
13939         (rs6000_reload_register_type): Simplify register classes into GPR,
13940         Vector, and other registers.  Altivec and VSX addresses in reload.
13941         (rs6000_secondary_reload_inner): Ditto.
13942         (rs6000_ira_cover_classes): New target hook, that returns the
13943         appropriate cover classes, based on -mvsx being used or not.
13944         (rs6000_secondary_reload_class): Add VSX support.
13945         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
13946         (get_vsel_insn): Ditto.
13947         (rs6000_emit_vector_compare): Rewrite vector conditional support
13948         so that where we can, we use RTL operators, instead of blindly use
13949         UNSPEC.
13950         (rs6000_emit_vector_select): Ditto.
13951         (rs6000_emit_vector_cond_expr): Ditto.
13952         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
13953         (create_TOC_reference): Add -mdebug=addr support.
13954         (emit_frame_save): VSX loads/stores need register indexed addressing.
13955
13956         * config/rs6000/rs6000.md: Include vector.md.
13957
13958         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
13959
13960         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
13961         support for V2DI, V2DF in logical, permute, select operations.
13962
13963         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
13964         switch for vsx/power7.
13965         (-mvsx-scalar-memory): Ditto.
13966         (-mvsx-align-128): Ditto.
13967         (-mallow-movmisalign): Ditto.
13968         (-mallow-df-permute): Ditto.
13969         (-msched-groups): Ditto.
13970         (-malways-hint): Ditto.
13971         (-malign-branch-targets): Ditto.
13972
13973         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
13974         hook instead.
13975         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
13976         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
13977         (rs6000_vector_reg_class): Delete.
13978         (rs6000_vsx_reg_class): Ditto.
13979         (enum rs6000_reg_class_enum): New enum for the constraints that
13980         vary based on target switches.
13981         (rs6000_constraints): New array to hold the register class for all
13982         of the register constraints that vary based on the switches used.
13983         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
13984         (enum rs6000_builtins): Add unsigned varients for the builtin
13985         declarations returned by target hooks for expanding multiplies,
13986         select, and permute operations.  Add VSX builtins.
13987         (enum rs6000_builtin_type_index): Add entries for VSX.
13988         (V2DI_type_node): Ditto.
13989         (V2DF_type_node): Ditto.
13990         (unsigned_V2DI_type_node): Ditto.
13991         (bool_long_type_node): Ditto.
13992         (intDI_type_internal_node): Ditto.
13993         (uintDI_type_internal_node): Ditto.
13994         (double_type_internal_node): Ditto.
13995
13996         * config/rs6000/altivec.md (whole file): Move all expanders to
13997         vector.md from altivec.md.  Rename insn matching functions to be
13998         altivec_foo.
13999         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
14000         (altivec_vcmp*): Ditto.
14001         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
14002         (VM): New iterator for moves that includes the VSX types.
14003         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
14004         (altivec_vperm_<mode>_uns): New, for unsigned types.
14005         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
14006         (altivec_eq<mode>): Ditto.
14007         (altivec_gt<mode>): Ditto.
14008         (altivec_gtu<mode>): Ditto.
14009         (altivec_eqv4sf): Ditto.
14010         (altivec_gev4sf): Ditto.
14011         (altivec_gtv4sf): Ditto.
14012         (altivec_vcmpbfp_p): Ditto.
14013
14014 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
14015
14016         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
14017         unsigned HWI.
14018
14019 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
14020
14021         PR target/40832
14022         * config/i386/i386.c (output_387_ffreep): Rewrite to use
14023         ASM_SHORT instead of .word.
14024         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
14025         instead of .word in asm template.
14026
14027 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
14028
14029         PR target/37488
14030         * ira-lives.c (bb_has_abnormal_call_pred): New function.
14031         (process_bb_node_lives): Use it.
14032
14033         * ira.c (setup_cover_and_important_classes): Don't setup
14034         ira_important_class_nums.  Add cover classes to the end of
14035         important classes.
14036         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
14037         New.
14038         (find_reg_class_closure): Use reorder_important_classes.
14039
14040         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
14041
14042         * config/i386/i386.c (i386_ira_cover_classes): New function.
14043         (TARGET_IRA_COVER_CLASSES): Redefine.
14044
14045         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
14046         importance of order of cover classes in the array.
14047
14048 2009-07-22  Diego Novillo  <dnovillo@google.com>
14049
14050         * tree-pass.h (TDF_EH): Define.
14051         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
14052         contains TDF_EH, print the EH region number holding GS.
14053         * tree-dump.c (dump_options): Add "eh".
14054         * doc/invoke.texi: Document it.
14055
14056 2009-07-22  Doug Kwan  <dougkwan@google.com>
14057
14058         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
14059
14060 2009-07-22  Michael Matz  <matz@suse.de>
14061
14062         PR tree-optimization/35229
14063         PR tree-optimization/39300
14064
14065         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
14066         (inhibit_phi_insertion): New function.
14067         (insert_into_preds_of_block): Call it for REFERENCEs.
14068         (init_pre): Initialize and finalize scalar evolutions.
14069         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
14070
14071 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
14072
14073         * config/i386/predicates.md (zero_extended_scalar_load_operand):
14074         Use CONST_VECTOR_NUNITS to determine number of elements.
14075
14076 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
14077
14078         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
14079         (U, W): Constraints are now deprecated and will be removed if we
14080         run out of letters.
14081         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
14082         the file.
14083         ("prefetch"): Add the stcmh instruction for prefetching.
14084         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
14085         changes.
14086         (s390_short_displacement): Return always true if compiling for
14087         machines not providing the long displacement facility.
14088         (s390_mem_constraint): Support the new constraint letter Z.
14089         (s390_check_qrst_address): New function.
14090
14091 2009-07-21  DJ Delorie  <dj@redhat.com>
14092
14093         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
14094         alone too.
14095
14096 2009-07-21  Jason Merrill  <jason@redhat.com>
14097
14098         * c-common.c (max_tinst_depth): Increase default to 1024.
14099
14100 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
14101
14102         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
14103         (vec_unpacku_float_lo_v4si): Ditto.
14104
14105 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
14106
14107         PR target/40811
14108         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
14109         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
14110         (builtin_description): Add __builtin_ia32_cvtudq2ps.
14111         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
14112
14113 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
14114
14115         PR tree-optimization/40813
14116         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
14117         it.
14118
14119 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
14120
14121         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
14122         with a NOP_EXPR if needed.
14123
14124 2009-07-21  Paul Brook <paul@codesourcery.com>
14125
14126         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
14127         Terminate debug dump with newline.
14128
14129 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14130
14131         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
14132         Cast "1" to unsigned HOST_WIDE_INT.
14133         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
14134         deposit length to the maximum length - lsb.  Extend length if
14135         HOST_BITS_PER_WIDE_INT is 32.
14136
14137 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
14138
14139         * cgraph.h (constant_pool_htab): New function.
14140         (constant_descriptor_tree): Move from varasm.c.
14141         * varasm.c (constant_pool_htab): New function.
14142         (constant_descriptor_tree): Move to cgraph.h.
14143
14144 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
14145
14146         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
14147
14148 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
14149
14150         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
14151         $(VARRAY_H).
14152
14153 2009-07-20  Xinliang David Li  <davidxl@google.com>
14154
14155         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
14156
14157 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
14158
14159         * config/mips/mips.md (move_type): Add arith.
14160         (type): Handle arith.
14161         (zero_extendsidi2): Rename this into ...
14162         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
14163         (zero_extendsidi2): New expander.
14164         (*zero_extendsidi2_dext): New pattern.
14165
14166 2009-07-20  Nick Clifton  <nickc@redhat.com>
14167
14168         * config.gcc (mips64-*-*): Add definition of tm_defines in order
14169         to set MIPS_ABI_DEFAULT.
14170         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
14171
14172 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
14173
14174         * tree-object-size.c (addr_object_size): Handle unions with
14175         array in it as last field of structs in __bos (, 1) as __bos (, 0).
14176
14177         PR tree-optimization/40792
14178         * tree.c (build_function_type_skip_args): Remove bogus assert.
14179
14180 2009-07-20  Jan Hubicka  <jh@suse.cz>
14181             Martin Jambor  <mjambor@suse.cz>
14182
14183         * cgraph.h (combined_args_to_skip): New field.
14184         * cgraph.c (cgraph_create_virtual_clone): Properly handle
14185         combined_args_to_skip and args_to_skip.
14186         * tree-inline.c (update_clone_info): New function.
14187         (tree_function_versioning): Call update_clone_info.
14188         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
14189         functions.
14190         (cgraph_materialize_all_clones): More extensive dumping, working
14191         with combined_args_to_skip rather than args_to_skip.
14192
14193 2009-07-20  Ira Rosen  <irar@il.ibm.com>
14194
14195         * tree-vectorizer.h (vectorizable_condition): Add parameters.
14196         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
14197         (get_initial_def_for_reduction): Likewise.
14198         (vectorizable_reduction): Skip the check of first operand in case
14199         of COND_EXPR. Add check that it is outer loop vectorization if
14200         nested cycle was detected. Call vectorizable_condition() for
14201         COND_EXPR. If reduction epilogue cannot be created do not fail for
14202         nested cycles (if it is not double reduction). Assert that there
14203         is only one type in the loop in case of COND_EXPR. Call
14204         vectorizable_condition() to vectorize COND_EXPR.
14205         * tree-vect-stmts.c (vectorizable_condition): Update comment.
14206         Add parameters. Allow nested cycles if called from
14207         vectorizable_reduction(). Use reduction vector variable if provided.
14208         (vect_analyze_stmt): Call vectorizable_reduction() before
14209         vectorizable_condition().
14210         (vect_transform_stmt): Update call to vectorizable_condition().
14211
14212 2009-07-20  Christian Bruel  <christian.bruel@st.com>
14213
14214         * config/sh/sh.opt (-mfmovd): Resurrect and document.
14215         * doc/invoke.texi (-mfmovd): Likewise.
14216         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
14217
14218 2009-07-20  Jan Hubicka  <jh@suse.cz>
14219
14220         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
14221         when handling SSA name.
14222
14223 2009-07-19  Jan Hubicka  <jh@suse.cz>
14224
14225         PR tree-optimization/40676
14226         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
14227         virtual PHIs in empty BBs.
14228
14229 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14230
14231         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
14232         re-expanded the compound use gen_lowpart instead to convert to the
14233         desired mode.
14234
14235 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14236
14237         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
14238         OUTER_CONST arguments.
14239         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
14240         the new wider mode will be masked off.
14241         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
14242
14243 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14244
14245         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
14246         high-order bits are zero.
14247
14248 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14249
14250         * combine.c (simplify_shift_const_1): Split code to determine
14251         shift_mode into ...
14252         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
14253         new bits shifted in are identical to the old sign bit.
14254
14255 2009-07-18  Richard Guenther  <rguenther@suse.de>
14256
14257         PR c/40787
14258         * gimplify.c (gimplify_call_expr): Reject code using results from
14259         functions returning void.
14260
14261 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
14262
14263         * doc/md.texi: Document the new PowerPC "es" constraint.
14264         Document that "m" can include automodified addresses on this target,
14265         and explain how %U must be used.  Extend the "Q" and "Z" documentation
14266         to suggest "es" as well as "m".
14267         * config/rs6000/constraints.md (es): New memory constraint.
14268         (Q, Z): Update strings to match new documentation.
14269
14270 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
14271
14272         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
14273         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
14274         * config/rs6000/predicates.md (volatile_mem_operand): Use
14275         offsettable_nonstrict_memref_p.
14276         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
14277         (*floatunssidf2_internal): Likewise.
14278         (*fix_truncdfsi2_internal): Likewise.
14279         (*fix_trunctfsi2_internal): Likewise.
14280
14281 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
14282
14283         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
14284         atmega32u2 devices.
14285         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
14286
14287 2009-07-17  Richard Guenther  <rguenther@suse.de>
14288
14289         PR c/40401
14290         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
14291         (pass_warn_unused_result): Likewise.
14292         (TODO_set_props): Remove.
14293         * omp-low.c (diagnose_omp_structured_block_errors): Change to
14294         run as a pass.
14295         (pass_diagnose_omp_blocks): Define.
14296         * c-decl.c (pop_file_scope): Do not finalize the CU here.
14297         (c_gimple_diagnostics_recursively): Remove.
14298         (finish_function): Do not call it.
14299         (c_write_global_declarations): Continue after errors.
14300         Finalize the CU here.
14301         * c-gimplify.c (c_genericize): Do not gimplify here.
14302         * c-common.c (c_warn_unused_result): Move ...
14303         * tree-cfg.c (do_warn_unused_result): ... here.
14304         (run_warn_unused_result): New function.
14305         (gate_warn_unused_result): New function.
14306         (pass_warn_unused_result): New pass.
14307         * c-common.h (c_warn_unused_result): Remove.
14308         * flags.h (flag_warn_unused_result): Declare.
14309         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
14310         * opts.c (flag_warn_unused_result): Initialize to false.
14311         * toplev.c (compile_file): Add comment.
14312         * omp-low.c (create_omp_child_function): Do not register
14313         the function with the frontend.
14314         (diagnose_omp_structured_block_errors): Prepare to be
14315         called as optimization pass.
14316         (gate_diagnose_omp_blocks): New function.
14317         (pass_diagnose_omp_blocks): New pass.
14318         * cgraph.h (cgraph_optimize): Remove.
14319         (cgraph_analyze_function): Likewise.
14320         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
14321         * cgraphunit.c (cgraph_lower_function): Lower nested functions
14322         before their parents here.
14323         (cgraph_finalize_function): Not here.
14324         (cgraph_analyze_function): Gimplify functions here.
14325         (cgraph_finalize_compilation_unit): Continue after errors.
14326         Optimize the callgraph from here.
14327         (cgraph_optimize): Make static.
14328         * langhooks.c (write_global_declarations): Finalize the CU.
14329         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
14330         (gimplify_function_tree): Assert we gimplify only once.
14331         Set PROP_gimple_any property.
14332         * tree-nested.c (gimplify_all_functions): New function.
14333         (lower_nested_functions): Gimplify all nested functions.
14334         * gimple.h (diagnose_omp_structured_block_errors): Remove.
14335         * passes.c (init_optimization_passes): Add pass_warn_unused_result
14336         and pass_diagnose_omp_blocks after gimplification.  Do not
14337         set TODO_set_props on all_lowering_passes.
14338         (execute_one_pass): Do not handle TODO_set_props.
14339         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
14340         (gimplify.o): Add tree-pass.h dependency.
14341         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
14342         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
14343         (unsave_r): Likewise.
14344         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
14345         temporary variable.
14346
14347 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
14348
14349         * doc/service.texi (Service): Restore previously removed link,
14350         which isn't broken after all.
14351
14352 2009-07-17  Richard Guenther  <rguenther@suse.de>
14353
14354         PR tree-optimization/40321
14355         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
14356         PHI nodes to the maximal set.
14357         (make_values_for_phi): Add PHI arguments to the maximal set.
14358         (execute_pre): Dump PHI_GEN and the maximal set.
14359
14360 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
14361
14362         PR c++/40780
14363         * gimplify.c (gimplify_conversion): Don't change non-conversions into
14364         VIEW_CONVERT_EXPR.
14365
14366 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
14367
14368         * doc/extend.texi (Nested Functions): Replace broken link with
14369         textual reference.
14370         * doc/service.texi (Service): Remove broken link.
14371
14372 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
14373
14374         PR bootstrap/40781
14375         * builtins.c (expand_builtin_memcmp): Use loc instead of
14376         EXPR_LOCATION (exp).
14377         (expand_builtin_strncmp): Likewise.
14378
14379 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
14380             Manuel López-Ibáñez  <manu@gcc.gnu.org>
14381
14382         PR 40435
14383         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
14384         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
14385         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
14386         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
14387         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
14388         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
14389         tree-inline.c, c-common.c, c-common.h, gimple.c,
14390         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
14391         convert.c: Add location argument to fold_{unary,binary,ternary},
14392         fold_build[123], build_call_expr, build_size_arg,
14393         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
14394         fold_build1_initializer, fold_build2_initializer,
14395         fold_build3_initializer, fold_build_call_array,
14396         fold_build_call_array_initializer, fold_single_bit_test,
14397         omit_one_operand, omit_two_operands, invert_truthvalue,
14398         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
14399         combine_comparisons, fold_builtin_*, fold_call_expr,
14400         build_range_check, maybe_fold_offset_to_address, round_up,
14401         round_down.
14402
14403 2009-07-16  Jason Merrill  <jason@redhat.com>
14404
14405         PR libstdc++/37907
14406         * c-common.c (c_common_reswords): Add __is_standard_layout
14407         and __is_trivial.
14408         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
14409         * doc/implement-cxx.texi: New.
14410         * doc/gcc.texi: Include it.
14411
14412 2009-07-16  DJ Delorie  <dj@redhat.com>
14413
14414         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
14415         compares that may be indirectly affected by previous instructions.
14416
14417 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14418
14419         * builtins.c (do_mpc_arg2): New.
14420         (fold_builtin_2): Fold builtin cpow.
14421         * real.h (HAVE_mpc_pow): New.
14422
14423 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
14424
14425         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
14426         comparison to skip unprofitable schedule
14427
14428 2009-07-16  Simon Baldwin  <simonb@google.com>
14429
14430         * gcc.c (option_map): New flag -no-canonical-prefixes.
14431         * (display_help): Print help text for new flag.
14432         * (process_command): Move options translation and language specifics
14433         and handle new flag early.  Use it to set a function pointer to a
14434         prefix builder.  Replace make_relative_prefix calls with calls to
14435         the function pointed to.  Ignore new flag in regular options handling.
14436         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
14437
14438 2009-07-15  DJ Delorie  <dj@redhat.com>
14439
14440         * config/mep/mep.md (sibcall_internal): Change register to avoid
14441         argument registers.
14442         (sibcall_value_internal): Likewise.
14443
14444 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
14445
14446         PR rtl-optimization/40710
14447         * resource.c (mark_target_live_regs): Reset DF problem to LR.
14448
14449 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
14450
14451         * config/mips/mips.md (*extenddi_truncate<mode>,
14452         *extendsi_truncate<mode>): Change type attribute to move_type
14453         with shift_shift.  Split out code handling exts from here ...
14454         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
14455         pattern.
14456         (*extendhi_truncateqi): Change type attribute to move_type with
14457         shift_shift.  Split out code handling exts from here ...
14458         (*extendhi_truncateqi_exts): ... to this new pattern.
14459
14460 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
14461
14462         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
14463         instead of "and" with inverted sign bit mask value.  Use
14464         "nonimmediate_operand" for operand 1 and operand 2 predicate.
14465         Allocate registers only for operand 4 and operand 5.
14466
14467 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
14468
14469         PR middle-end/40747
14470         * fold-const.c (fold_cond_expr_with_comparison): When folding
14471         < and <= to MIN, make sure the MIN uses the same type as the
14472         comparison's operands.
14473
14474 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
14475
14476         * arm.md (ior_xor): New code iterator.
14477         (split for ior/xor with shift and zero-extend): New split pattern.
14478         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
14479
14480 2009-07-15  Richard Guenther  <rguenther@suse.de>
14481
14482         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
14483         offset member.
14484
14485 2009-07-15  Richard Guenther  <rguenther@suse.de>
14486
14487         PR middle-end/40753
14488         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
14489
14490 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
14491
14492         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
14493         handle 2.6.30 kernel.
14494
14495 2009-07-15  DJ Delorie  <dj@redhat.com>
14496
14497         * config/mep/mep.md (sibcall_internal): Change register to allow
14498         for 24-bit addresses.
14499         (sibcall_value_internal): Likewise.
14500
14501 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
14502
14503         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
14504         that are enabled/disabled by the flags introduced by a previous patch.
14505
14506 2009-07-14  DJ Delorie  <dj@redhat.com>
14507
14508         * config/mep/mep.md (sibcall_internal): Include non-toggling
14509         non-jmp case.
14510         (sibcall_value_internal): Likewise.
14511
14512 2009-07-14  Taras Glek  <tglek@mozilla.com>
14513             Rafael Espindola  <espindola@google.com>
14514
14515         * doc/sourcebuild.texi: Document install-plugin target.
14516         * configure.ac: Added install-plugin target to language makefiles.
14517         * configure: Regenerate.
14518         * Makefile.in (install-plugin): Install more headers,
14519         depend on lang.install-plugin.
14520
14521 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14522
14523         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
14524         translation.
14525
14526 2009-07-14  DJ Delorie  <dj@redhat.com>
14527
14528         * config/mep/mep.c (mep_vliw_jmp_match): New function.
14529         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
14530         * config/mep/mep.md (sibcall_internal): Change test from
14531         mep_vliw_mode_match to mep_vliw_jmp_match.
14532         (sibcall_value_internal): Likewise.
14533
14534 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
14535
14536         * config/i386/sse.md (copysign<mode>3): New expander.
14537         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
14538         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
14539         Use ix86_build_const_vector.
14540         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
14541         IX86_BUILTIN_CPYSGNPD.
14542         (builtin_description): Add __builtin_ia32_copysignps and
14543         __builtin_ia32_copysignpd.
14544         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
14545         and BUILT_IN_COPYSIGNF.
14546
14547 2009-07-13  Jason Merrill  <jason@redhat.com>
14548
14549         * builtins.c (can_trust_pointer_alignment): New fn.
14550         (get_pointer_alignment): Factor it out from here.
14551         * tree.h: Declare it.
14552
14553 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
14554
14555         * config/rs6000/predicates.md (offsettable_mem_operand): Test
14556         RTX_AUTOINC class.
14557
14558 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
14559
14560         PR debug/40705
14561         PR c++/403057
14562         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
14563
14564 2009-07-14  Richard Guenther  <rguenther@suse.de>
14565             Andrey Belevantsev <abel@ispras.ru>
14566
14567         PR middle-end/40745
14568         * cfgexpand.c (partition_stack_vars): Do not bother to update
14569         alias information when not optimizing.
14570
14571 2009-07-14  Richard Guenther  <rguenther@suse.de>
14572             Andrey Belevantsev <abel@ispras.ru>
14573
14574         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
14575         (pt_solution_set): Likewise.
14576         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
14577         * tree-ssa-structalias.c (pt_solution_set): New function.
14578         * final.c (rest_of_clean_state): Free SSA data structures.
14579         * print-rtl.c (print_decl_name): Remove.
14580         (print_mem_expr): Implement in terms of print_generic_expr.
14581         * alias.c (ao_ref_from_mem): New function.
14582         (rtx_refs_may_alias_p): Likewise.
14583         (true_dependence): Query alias-export info.
14584         (canon_true_dependence): Likewise.
14585         (write_dependence_p): Likewise.
14586         * tree-dfa.c (get_ref_base_and_extent): For void types leave
14587         size unknown.
14588         * emit-rtl.c (component_ref_for_mem_expr): Remove.
14589         (mem_expr_equal_p): Use operand_equal_p.
14590         (set_mem_attributes_minus_bitpos): Do not use
14591         component_ref_for_mem_expr.
14592         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
14593         (update_alias_info_with_stack_vars): Likewise.
14594         (partition_stack_vars): Call update_alias_info_with_stack_vars.
14595         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
14596         explicitly nor clear stmt operands.
14597         Free the decl-to-pointer map.
14598         * tree-optimize.c (execute_free_datastructures): Do not free
14599         SSA data structures here.
14600         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
14601         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
14602         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
14603         dependencies.
14604         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
14605
14606 2009-07-13  DJ Delorie  <dj@redhat.com>
14607
14608         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
14609         unrolling at the right iteration count.
14610
14611         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
14612         calculations.
14613
14614 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
14615
14616         * haifa-sched.c (rank_for_schedule): Introduced flags to
14617         enable/disable individual scheduling heuristics.
14618         * common.opt: Introduced flags to enable/disable individual
14619         heuristics in the scheduler.
14620         * doc/invoke.texi: Introduced flags to enable/disable individual
14621         heuristics in the scheduler.
14622
14623 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
14624
14625         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
14626         config/i386/mingw-tls.c.
14627         * config/i386/mingw-tls.c: Removed.
14628
14629 2009-07-13  Ira Rosen  <irar@il.ibm.com>
14630
14631         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
14632         checks access only relevant statements.
14633         (vectorizable_reduction): Likewise.
14634
14635 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
14636
14637         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
14638         just for 32-bit case.
14639
14640 2009-07-12  Jan Hubicka  <jh@suse.cz>
14641
14642         PR tree-optimization/40585
14643         * except.c (expand_resx_expr): When there already is resume
14644         instruction, produce linked list.
14645         (build_post_landing_pads): Assert that resume is empty.
14646         (connect_post_landing_pads): Handle resume lists.
14647         (dump_eh_tree): Dump resume list.
14648
14649 2009-07-12  Ira Rosen  <irar@il.ibm.com>
14650
14651         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
14652         with additional argument.
14653         * tree-vectorizer.h (enum vect_def_type): Add
14654         vect_double_reduction_def.
14655         (vect_is_simple_reduction): Add argument.
14656         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
14657         indentation.
14658         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
14659         vect_is_simple_reduction with additional argument.
14660         (vect_analyze_loop_operations): Handle exit phi nodes in case of
14661         double reduction.
14662         (reduction_code_for_scalar_code): Handle additional codes by
14663         returning ERROR_MARK for them. Fix comment and indentation.
14664         (vect_is_simple_reduction): Fix comment, add argument to specify
14665         double reduction. Detect double reduction.
14666         (get_initial_def_for_induction): Fix indentation.
14667         (get_initial_def_for_reduction): Fix comment and indentation.
14668         Handle double reduction. Create initial definitions that do not
14669         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
14670         (vect_create_epilog_for_reduction): Fix comment, add argument to
14671         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
14672         epilogue result extraction. Create double reduction phi node and
14673         replace relevant uses.
14674         (vectorizable_reduction): Call vect_is_simple_reduction with
14675         additional argument. Fix indentation. Update epilogue code treatment
14676         according to the changes in reduction_code_for_scalar_code. Check
14677         for double reduction. Call vect_create_epilog_for_reduction with
14678         additional argument.
14679         * tree-vect-stmts.c (process_use): Handle double reduction, update
14680         documentation.
14681         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
14682         (vect_get_vec_def_for_operand): Likewise.
14683
14684 2009-07-12  Danny Smith  <dansmister@gmail.com>
14685
14686         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
14687         dllexport if !TREE_PUBLIC.
14688         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
14689
14690 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
14691
14692         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
14693         (avr_extra_arch_macro) Remove declatation.
14694         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
14695         (avr_extra_arch_macro) Declare as static.
14696         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
14697
14698 2009-07-11  Jan Hubicka  <jh@suse.cz>
14699
14700         PR middle-end/48388
14701         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
14702
14703 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
14704
14705         PR debug/40713
14706         * dwarf2out.c (dw_fde_struct): Add in_std_section and
14707         cold_in_std_section bits.
14708         (dwarf2out_begin_prologue): Initialize them.
14709         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
14710         if already covered by text_section or cold_text_section range.
14711
14712         PR rtl-optimization/40667
14713         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
14714         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
14715         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
14716         * config/i386/i386.c (ix86_minimum_alignment): New function.
14717         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
14718         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
14719         * emit-rtl.c (gen_reg_rtx): Likewise.
14720         * function.c (assign_parms): Likewise.  If nominal_type needs
14721         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
14722         rather than passed_type's alignment.
14723
14724         PR target/40668
14725         * function.c (assign_parm_setup_stack): Adjust
14726         MEM_OFFSET (data->stack_parm) if promoted_mode is different
14727         from nominal_mode on big endian.
14728
14729 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
14730
14731         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
14732
14733 2009-07-10  DJ Delorie  <dj@redhat.com>
14734
14735         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
14736
14737 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
14738
14739         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
14740         attribute.
14741         (thumb2_cbnz): Likewise.
14742
14743 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
14744
14745         PR target/39079
14746         * config.gcc (supported_defaults): Add synci.
14747         (with_synci): Add validation.
14748         (all_defaults): Add synci.
14749         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
14750         ISA_HAS_SYNCI.
14751         (synci): Same.
14752         * config/mips/mips.opt (msynci): New option.
14753         * config/mips/mips.c (mips_override_options): Warn on use of
14754         -msynci for targets that do now support it.
14755         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
14756         msynci.
14757         * gcc/doc/invoke.texi (-msynci): Document the new option.
14758         * doc/install.texi (--with-synci): Document the new option.
14759
14760 2009-07-10  Richard Guenther  <rguenther@suse.de>
14761
14762         PR tree-optimization/40496
14763         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
14764         the PHI result with a compatible type.
14765
14766 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14767
14768         PR 25509
14769         PR 40614
14770         * c.opt (Wunused-result): New.
14771         * doc/invoke.texi: Document it.
14772         * c-common.c (c_warn_unused_result): Use it.
14773
14774 2009-07-09  DJ Delorie  <dj@redhat.com>
14775
14776         * targhooks.c (default_target_can_inline_p): Rename from
14777         default_target_option_can_inline_p.
14778         * targhooks.h (default_target_can_inline_p): Likewise.
14779         * target-def.h (TARGET_CAN_INLINE_P): Rename from
14780         TARGET_OPTION_CAN_INLINE_P.
14781         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
14782         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
14783         (mep_target_can_inline_p): Rename from
14784         mep_target_option_can_inline_p.
14785
14786         PR target/40626
14787         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
14788         registers used to pass vectors.
14789
14790         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
14791
14792 2009-07-09  Tom Tromey  <tromey@redhat.com>
14793
14794         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
14795         * config/mmix/mmix.c: Include dwarf2.h.
14796         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
14797         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
14798         * config/sh/sh.c: Include dwarf2.h.
14799         * config/i386/i386.c: Include dwarf2.h.
14800         * Makefile.in (DWARF2_H): Remove 'elf'.
14801         * except.c: Include dwarf2.h.
14802         * unwind-dw2.c: Include dwarf2.h.
14803         * dwarf2out.c: Include dwarf2.h.
14804         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
14805         * unwind-dw2-fde.c: Include dwarf2.h.
14806         * dwarf2asm.c: Include dwarf2.h.
14807
14808 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
14809
14810         * haifa-sched.c (insn_finishes_cycle_p): New static function.
14811         (max_issue): Use it.
14812         * sched-int.h (struct sched_info: insn_finishes_block_p): New
14813         scheduler hook.
14814         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
14815         (region_sched_info): Update.
14816         * sched-ebb.c (ebb_sched_info): Update.
14817         * modulo-sched.c (sms_sched_info): Update.
14818         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
14819
14820 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
14821
14822         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
14823
14824 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
14825
14826         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
14827
14828 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
14829
14830         PR middle-end/40692
14831         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
14832         arg1 with arg01 if arg1 is already INTEGER_CST.
14833
14834 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
14835
14836         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
14837         Transform (and (truncate)) into (truncate (and)).
14838
14839 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
14840
14841         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
14842         creating LHS paradoxical subregs.  Fix surrounding returns to
14843         use NULL_RTX rather than 0.
14844
14845 2009-07-08  DJ Delorie  <dj@redhat.com>
14846
14847         * config/mep/mep.c (mep_option_can_inline_p): New.
14848         (TARGET_OPTION_CAN_INLINE_P): Define.
14849
14850 2009-07-08  Mark Wielaard  <mjw@redhat.com>
14851
14852         PR debug/40659
14853         * dwarf2out.c (add_data_member_location_attribute): When we have
14854         only a constant offset don't emit a new location description using
14855         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
14856         dwarf_version > 2.
14857
14858 2009-07-08  Richard Henderson  <rth@redhat.com>
14859
14860         PR target/38900
14861         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
14862         (enum reg_class): Add CLOBBERED_REGS.
14863         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
14864         * config/i386/i386.c (ix86_conditional_register_usage): Moved
14865         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
14866         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
14867         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
14868         force 64-bit sibcalls into R11.
14869         * config/i386/constraints.md (U): New constraint.
14870         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
14871         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
14872         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
14873
14874 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
14875
14876         * basic-block.h (dump_regset, debug_regset): Remove duplicate
14877         prototypes.
14878         * c-objc-common.h (c_initialize_diagnostics): Ditto.
14879         * ebitmap.h (dump_ebitmap): Ditto.
14880         * optabs.h (optab_libfunc): Ditto.
14881         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
14882         * tree-flow.h (vect_can_force_dr_alignment_p,
14883         get_vectype_for_scalar_type): Ditto.
14884         (vectorize_loops): Move prototype to ...
14885         * tree-vectorizer.h: ... here. Also, adjust comment.
14886         (vect_set_verbosity_level): Remove duplicate prototype.
14887         * tree-ssa-loop.c: Include tree-vectorizer.h.
14888         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
14889
14890 2009-07-08  Nick Clifton  <nickc@redhat.com>
14891
14892         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
14893         forward slash.
14894
14895 2009-07-08  DJ Delorie  <dj@redhat.com>
14896
14897         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
14898         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
14899         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
14900         written to.
14901         * config/mep/intrinsics.md: Regenerated.
14902         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
14903         registers when asm() or calls are detected.
14904
14905 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14906
14907         PR c++/31246
14908         * gimplify.c (gimplify_expr): Propagate no_warning flag when
14909         gimplifying.
14910         * gimple (gimple_build_call_from_tree): Likewise.
14911         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
14912         no_warning flag before warning.
14913
14914 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14915
14916         * tree.c (set_expr_locus): Remove.
14917         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
14918         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
14919         EXPR_LOCATION.
14920         * gimplify.c (internal_get_tmp_var): Likewise.
14921         (gimplify_call_expr): Likewise.
14922         (gimplify_one_sizepos): Likewise.
14923
14924 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
14925
14926         PR debug/40666
14927         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
14928         to variables for debugging purposes.
14929
14930 2009-06-23  Mark Loeser  <mark@halcy0n.com>
14931
14932         PR build/40010
14933         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
14934
14935 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14936
14937         * pretty-print.c (pp_base_format): Remove %J.
14938         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
14939         gcc_cxxdiag_char_table): Likewise.
14940         (init_dynamic_diag_info): Likewise.
14941
14942 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14943
14944         * pretty-print.c (pp_base_format): Remove %H.
14945         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
14946         gcc_cxxdiag_char_table): Likewise.
14947         (init_dynamic_diag_info): Likewise.
14948         * config/mep/mep.c (mep_select_section): Likewise.
14949
14950 2009-07-07  Duncan Sands  <baldrick@free.fr>
14951
14952         * final.c (pass_clean_state): Give the pass a name.
14953         * passes.c (pass_rest_of_compilation): Likewise.
14954         * tree-optimize.c (pass_all_optimizations): Likewise.
14955
14956 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
14957
14958         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
14959         an extra 'decl' for error_at.
14960
14961 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
14962
14963         PR middle-end/40669
14964         * tree-tailcall.c (adjust_return_value_with_ops,
14965         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
14966         if it has complex or vector type.
14967
14968 2009-07-07  Olivier Hainque  <hainque@adacore.com>
14969
14970         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
14971         pthread symbols.
14972
14973 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
14974
14975         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
14976
14977 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14978
14979         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
14980         * c-decl.c: Likewise.
14981         * function.c: Likewise.
14982         * varasm.c: Likewise.
14983         * tree-ssa.c: Likewise.
14984         * c-common.c: Likewise.
14985         * tree-cfg.c: Likewise.
14986         * config/spu/spu.c: Likewise.
14987         * config/ia64/ia64.c: Likewise.
14988         * config/v850/v850.c: Likewise.
14989
14990 2009-07-06  DJ Delorie  <dj@redhat.com>
14991
14992         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
14993         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
14994         unspecified accesses to control registers.
14995         * config/mep/intrinsics.md: Regenerate.
14996         * config/mep/intrinsics.h: Regenerate.
14997         * config/mep/mep-intrin.h: Regenerate.
14998
14999 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15000
15001         * c-lex.c: Replace %H by an explicit location. Update all calls.
15002         * c-common.c: Likewise.
15003         * c-decl.c: Likewise.
15004         * c-typeck.c: Likewise.
15005         * fold-const.c: Likewise.
15006         * gimplify.c: Likewise.
15007         * stmt.c: Likewise.
15008         * tree-cfg.c: Likewise.
15009         * tree-ssa-loop-niter.c: Likewise.
15010         * tree-vrp.c: Likewise.
15011         * value-prof.c: Likewise.
15012
15013 2009-07-06  Diego Novillo  <dnovillo@google.com>
15014
15015         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
15016         if it has one.  Handle cases where VAR does not have an
15017         annotation or cfun is NULL.
15018
15019 2009-07-06  Diego Novillo  <dnovillo@google.com>
15020
15021         * tree.c: Include debug.h.
15022         (initialize_tree_contains_struct): New.
15023         (init_ttree): Call it.
15024         (tree_node_structure_for_code): Factor out of ...
15025         (tree_node_structure): ... here.
15026         * treestruct.def (TS_PHI_NODE): Remove.
15027         (TS_GIMPLE_STATEMENT): Remove.
15028
15029 2009-07-06  Diego Novillo  <dnovillo@google.com>
15030
15031         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
15032         (debug_tree_chain): Handle cycles.
15033
15034 2009-07-06  Nick Clifton  <nickc@redhat.com>
15035             DJ Delorie  <dj@redhat.com>
15036
15037         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
15038         __FMOVD_ENABLED__ is defined.
15039         * config/sh/sh.h
15040         (TARGET_FMOVD): Provide a default definition.
15041         (MASK_FMOVD): Likewise.
15042         (TARGET_CPU_CPP_BUILTINS): Define
15043         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
15044         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
15045         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
15046         (split for DF load from memory into register): Also handle
15047         MEMs which consist of REG+DISP addressing.
15048         (split for DF store from register to memory): Likewise.
15049         (movsf_ie): Always use single fp_mode.
15050         * config/sh/sh.c (sh_override_options): Do not automatically
15051         enable TARGET_MOVD for the SH2A when supporting doubles - leave
15052         that to the -mfmovd command line switch.
15053         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
15054         (fldi_ok): Always allow.
15055         * config/sh/sh.opt (mfmovd): Remove this switch.
15056         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
15057
15058 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
15059             Kaz Kojima  <kkojima@gcc.gnu.org>
15060
15061         PR rtl-optimization/30807
15062         * postreload.c (reload_combine): For every new use of REG_SUM,
15063         record the use of BASE.
15064
15065 2009-07-06  Jan Hubicka  <jh@suse.cz>
15066
15067         * params.def: Revert my accidental commit at 2009-06-30.
15068
15069 2009-07-04  Ian Lance Taylor  <iant@google.com>
15070
15071         PR target/40636
15072         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
15073         EXPORTED_CONST.
15074         (mingw_format_attribute_overrides): Likewise.
15075
15076 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
15077
15078         PR debug/40596
15079         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
15080         don't check cfa.reg.  Instead of cfa.indirect use
15081         fde && fde->drap_reg != INVALID_REGNUM test.
15082
15083 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
15084
15085         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
15086
15087 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
15088
15089         PR target/40587
15090         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
15091
15092 2009-07-03  Richard Guenther  <rguenther@suse.de>
15093
15094         PR tree-optimization/40640
15095         * tree-switch-conversion.c (build_arrays): Perform arithmetic
15096         in original type.
15097
15098 2009-07-03  Jan Hubicka  <jh@suse.cz>
15099
15100         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
15101         for size, reduce amount of inlining.
15102
15103 2009-07-03  Richard Guenther  <rguenther@suse.de>
15104
15105         PR middle-end/34163
15106         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
15107         if t +- x is known to not overflow and the conversion widens the
15108         operation.
15109         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
15110
15111 2009-07-03  Jan Hubicka  <jh@suse.cz>
15112
15113         * ipa-pure-const.c (analyze): Update loop optimizer init.
15114         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
15115         try_remove_empty_loop, remove_empty_loops): Remove.
15116         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
15117         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
15118         to mark regular loops as neccesary.
15119         (degenerate_phi_p): New function.
15120         (propagate_necessity, remove_dead_phis): Use it.
15121         (forward_edge_to_pdom): Likewise.
15122         (eliminate_unnecessary_stmts): Take care to remove uses of results of
15123         virtual PHI nodes that became unreachable.
15124         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
15125         * tree-flow.h (remove_empty_loops): Remove.
15126         * passes.c (init_optimization_passes): Remove.
15127
15128 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
15129
15130         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
15131         can_create_pseudo_p.
15132         (*fix_trunc<mode>_i387_1): Ditto.
15133         (*floathi<mode>2_1): Ditto.
15134         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
15135         (*fistdi2_1): Ditto.
15136         (*fist<mode>2_1): Ditto.
15137         (frndintxf2_floor): Ditto.
15138         (*fist<mode>2_floor_1): Ditto.
15139         (frndintxf2_ceil): Ditto.
15140         (*fist<mode>2_ceil_1): Ditto.
15141         (frndintxf2_trunc): Ditto.
15142         (frndintxf2_mask_pm): Ditto.
15143         (fxam<mode>2_i387_with_temp): Ditto.
15144         * config/i386/sse.md (mulv16qi3): Ditto.
15145         (*sse2_mulv4si3): Ditto.
15146         (mulv2di3): Ditto.
15147         (sse4_2_pcmpestr): Ditto.
15148         (sse4_2_pcmpistr): Ditto.
15149
15150 2009-07-03  Jan Hubicka  <jh@suse.cz>
15151
15152         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
15153         (mark_stmt_necessary): Set it.
15154         (mark_operand_necessary): Set it.
15155         (mark_control_dependent_edges_necessary): Set it.
15156         (mark_virtual_phi_result_for_renaming): New function.
15157         (get_live_post_dom): New function.
15158         (forward_edge_to_pdom): New function.
15159         (remove_dead_stmt): Fix handling of control dependences.
15160         (tree_dce_init): Init new bitmap.
15161         (tree_dce_done): Free it.
15162
15163 2009-07-02  Richard Guenther  <rguenther@suse.de>
15164
15165         PR bootstrap/40617
15166         * tree-ssa-structalias.c (new_var_info): Initialize
15167         is_restrict_var.
15168
15169 2009-07-02  Jan Hubicka  <jh@suse.cz>
15170
15171         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
15172         local.
15173
15174 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
15175
15176         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
15177         instead of recomputing it.  Adjust calls.
15178         (emit_store_flag): Adjust recursive calls.
15179
15180 2009-07-02  Richard Guenther  <rguenther@suse.de>
15181
15182         * tree-ssa-live.c (remove_unused_locals): Do not remove
15183         heap variables.
15184         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
15185         of DECL_EXTERNAL for HEAP variables.
15186         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
15187         HEAP variables.  Do not adjust RESTRICT vars.
15188         (find_what_var_points_to): Nobody cares if something
15189         points to READONLY.
15190
15191 2009-07-02  Ben Elliston  <bje@au.ibm.com>
15192
15193         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
15194         pc_low and pc_high declarations to the top of the function.
15195
15196 2009-07-01  DJ Delorie  <dj@redhat.com>
15197
15198         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
15199         registers as fixed.
15200         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
15201         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
15202         unspecified accesses to control registers.
15203         * config/mep/intrinsics.md: Regenerate.
15204         * config/mep/intrinsics.h: Regenerate.
15205         * config/mep/mep-intrin.h: Regenerate.
15206
15207 2009-07-01  Anthony Green  <green@moxielogic.com>
15208
15209         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
15210         instruction when possible.
15211         (moxie_expand_prologue): Ditto.  Also, save an instruction and
15212         some complexity by popping off of $r12 instead of $sp.
15213         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
15214         operands.
15215
15216 2009-07-01  Richard Henderson  <rth@redhat.com>
15217
15218         PR bootstrap/40347
15219         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
15220         contained no insns, reposition note before last insn.
15221
15222 2009-07-01  Richard Henderson  <rth@redhat.com>
15223
15224         PR debug/40431
15225         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
15226         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
15227
15228 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
15229
15230         PR bootstrap/40558
15231         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
15232         darwin9 for printing reg addresses with %y.
15233
15234 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
15235
15236         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
15237         truncation from operands in binary operations.
15238
15239 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
15240
15241         Revert:
15242         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
15243         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
15244         subreg of op0 to the original op0.
15245
15246         * expmed.c (store_bit_field_1): Use a temporary as the destination
15247         instead of a paradoxical subreg when we need to truncate the result.
15248
15249 2009-07-01  DJ Delorie  <dj@redhat.com>
15250
15251         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
15252         names to VLIW variants.
15253         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
15254         * config/mep/intrinsics.md: Regenerate.
15255         * config/mep/intrinsics.h: Regenerate.
15256         * config/mep/mep-intrin.h: Regenerate.
15257
15258 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
15259
15260         PR debug/40462
15261         * jump.c (returnjump_p): Revert last patch.
15262         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
15263
15264 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15265
15266         PR target/40575
15267         * pa.md (casesi32p): Use jump table label to determine the offset
15268         of the jump table.
15269         (casesi64p): Likewise.
15270
15271         * pa.c (forward_branch_p): Return bool type.  Use instruction
15272         addresses when available.  Assert that INSN has a jump label.
15273         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
15274         have a jump label.
15275
15276 2009-07-01  Richard Guenther  <rguenther@suse.de>
15277
15278         PR tree-optimization/19831
15279         * tree-ssa-dce.c (propagate_necessity): Calls to functions
15280         that only act as barriers do not make any previous stores necessary.
15281         * tree-ssa-structalias.c (handle_lhs_call): Delay making
15282         HEAP variables global, do not add a constraint from nonlocal.
15283         (find_func_aliases): Handle escapes through return statements.
15284         (compute_points_to_sets): Make escaped HEAP variables global.
15285
15286 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
15287
15288         PR bootstrap/40597
15289         * expmed.c (emit_store_flag): Perform a conversion if necessary,
15290         after reducing a DImode cstore to SImode.
15291
15292 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
15293
15294         * expr.c (expand_expr_real_1): Reinstate fallthrough to
15295         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
15296
15297 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
15298
15299         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
15300         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
15301         to 0.
15302         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
15303         and umod_optab if TARGET_BSD_DIVMOD.
15304         * config/vax/lib1funcs.asm: New file.
15305         * config/vax/t-linux: New file.
15306         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
15307
15308 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
15309
15310         PR c++/40566
15311         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
15312         to type arguments that have void type.
15313
15314         PR debug/40573
15315         * dwarf2out.c (gen_formal_parameter_die): Call
15316         equate_decl_number_to_die if node is different from origin.
15317
15318 2009-06-30  Anthony Green  <green@moxielogic.com>
15319
15320         Clean up moxie port for --enable-build-with-cxx.
15321         * config/moxie/moxie.c (moxie_function_value): First two
15322         parameters are const_tree, not tree.
15323         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
15324         (REG_CLASS_NAMES): Ditto.
15325         (REGNO_REG_CLASS): Ditto.
15326         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
15327         (moxie_function_value): Fix constyness of arguments.
15328
15329 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
15330
15331         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
15332         finalize_size_functions before further processing.
15333         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
15334         (variable_size): Call self_referential_size on size expressions
15335         that contain a PLACEHOLDER_EXPR.
15336         (size_functions): New static variable.
15337         (copy_self_referential_tree_r): New static function.
15338         (self_referential_size): Likewise.
15339         (finalize_size_functions): New global function.
15340         * tree.c: Include tree-inline.h.
15341         (push_without_duplicates): New static function.
15342         (find_placeholder_in_expr): New global function.
15343         (substitute_in_expr) <tcc_declaration>: Return the replacement object
15344         on equality.
15345         <tcc_expression>: Likewise.
15346         <tcc_vl_exp>: If the replacement object is a constant, try to inline
15347         the call in the expression.
15348         * tree.h (finalize_size_functions): Declare.
15349         (find_placeholder_in_expr): Likewise.
15350         (FIND_PLACEHOLDER_IN_EXPR): New macro.
15351         (substitute_placeholder_in_expr): Update comment.
15352         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
15353         is true.
15354         (copy_tree_body_r): Likewise.
15355         (copy_tree_body): New static function.
15356         (maybe_inline_call_in_expr): New global function.
15357         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
15358         (maybe_inline_call_in_expr): Declare.
15359         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
15360         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
15361         GIMPLE_H.
15362
15363 2009-06-30  Richard Guenther  <rguenther@suse.de>
15364
15365         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
15366         continue walking.
15367         (propagate_necessity): Do not mark reaching defs of stores
15368         as necessary.
15369
15370 2009-06-30  Jan Hubicka  <jh@suse.cz>
15371
15372         * cfgloopanal.c (check_irred): Move into ...
15373         (mark_irreducible_loops): ... here; return true if ireducible
15374         loops was found.
15375         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
15376         (analyze_function): Try to prove loop finiteness.
15377         * cfgloop.h (mark_irreducible_loops): Update prototype.
15378         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
15379
15380 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
15381
15382         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
15383
15384 2009-06-30  Ira Rosen  <irar@il.ibm.com>
15385
15386         PR tree-optimization/40542
15387         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
15388         types.
15389
15390 2009-06-30  Martin Jambor  <mjambor@suse.cz>
15391
15392         PR tree-optimization/40582
15393         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
15394         than useless_type_conversion_p.
15395         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
15396         proper place.
15397
15398 2009-06-30  Martin Jambor  <mjambor@suse.cz>
15399
15400         PR middle-end/40554
15401         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
15402
15403 2009-06-30  Richard Guenther  <rguenther@suse.de>
15404
15405         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
15406         use ao_ref references.
15407         (walk_aliased_vdefs): Likewise.
15408         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
15409         * tree-ssa-dce.c (struct ref_data): Remove.
15410         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
15411         (mark_aliased_reaching_defs_necessary): Adjust.
15412         (mark_all_reaching_defs_necessary_1): Likewise.
15413
15414 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
15415
15416         PR boostrap/40597
15417         * expmed.c (emit_cstore): New name of emit_store_flag_1.
15418         (emit_store_flag_1): Extract from emit_store_flag, adjust
15419         calls to (what now is) emit_cstore.
15420         (emit_store_flag): Call emit_store_flag_1 and also use it
15421         for what used to be recursive calls.
15422
15423 2009-06-30  Wei Guozhi  <carrot@google.com>
15424
15425         PR/40416
15426         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
15427         if the target bb post dominates from bb.
15428         * config/i386/i386.c (memory_address_length): Check existence of base
15429         register before using it.
15430
15431 2009-06-30  Nick Clifton  <nickc@redhat.com>
15432             DJ Delorie  <dj@redhat.com>
15433
15434         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
15435         __FMOVD_ENABLED__ is defined.
15436         * config/sh/sh.h
15437         (TARGET_FMOVD): Provide a default definition.
15438         (MASK_FMOVD): Likewise.
15439         (TARGET_CPU_CPP_BUILTINS): Define
15440         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
15441         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
15442         two fmov instructions depending upon whether TARGET_FMOVD is
15443         enabled.
15444         (split for DF load from memory into register): Also handle
15445         MEMs which consist of REG+DISP addressing.
15446         (split for DF store from register to memory): Likewise.
15447         * config/sh/sh.opt (mfmovd): Remove this switch.
15448         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
15449         * config/sh/sh.c (sh_override_options): Do not automatically
15450         enable TARGET_MOVD for the SH2A when supporting doubles - leave
15451         that to the -mfmovd command line switch.
15452
15453         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
15454         the SH4 and SH4A.
15455         (fldi_ok): Always allow.
15456         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
15457
15458 2009-06-29  DJ Delorie  <dj@redhat.com>
15459
15460         * doc/install.texi (mep-x-elf): Correct chip's full name.
15461
15462 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
15463
15464         * doc/extend.texi: Fix typo.
15465
15466 2009-06-29  Tom Tromey  <tromey@redhat.com>
15467
15468         * dwarf2.h: Remove.
15469         * Makefile.in (DWARF2_H): New variable.
15470         (except.o): Use it.
15471         (dwarf2out.o): Likewise.
15472         (dwarf2asm.o): Likewise.
15473         * config/i386/t-i386: Use DWARF2_H.
15474         * except.c: Include elf/dwarf2.h.
15475         * unwind-dw2.c: Include elf/dwarf2.h.
15476         * dwarf2out.c: Include elf/dwarf2.h.
15477         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
15478         <dtprel>: New field.
15479         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
15480         (size_of_loc_descr): Likewise.
15481         (output_loc_operands_raw): Likewise.
15482         (output_loc_operands): Handle new dtprel field.
15483         (loc_checksum): Update.
15484         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
15485         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
15486         * unwind-dw2-fde.c: Include elf/dwarf2.h.
15487         * dwarf2asm.c: Include elf/dwarf2.h.
15488         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
15489         * config/mmix/mmix.c: Include elf/dwarf2.h.
15490         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
15491         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
15492         * config/sh/sh.c: Include elf/dwarf2.h.
15493         * config/i386/i386.c: Include elf/dwarf2.h.
15494
15495 2009-06-29  DJ Delorie  <dj@redhat.com>
15496
15497         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
15498
15499         * doc/extend.texi: Add MeP attributes and pragmas.
15500         * doc/invoke.text: Add MeP Options.
15501         * doc/contrib.texi: Add MeP contribution.
15502         * doc/md.texi: Add MeP constraints.
15503         * doc/install.texi: Add MeP target.
15504
15505 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
15506
15507         * target.h (struct gcc_target): Add frame_pointer_required field.
15508         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
15509         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
15510         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
15511         hook.
15512         * reload1.c (update_eliminables): (Ditto.).
15513         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
15514         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
15515         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
15516
15517         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
15518
15519         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
15520         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15521         (arm_frame_pointer_required): New function.
15522
15523         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
15524         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15525         (avr_frame_pointer_required_p): Declare as static.
15526         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
15527
15528         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
15529         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15530         (bfin_frame_pointer_required): Make as static, change return type
15531         to bool.
15532         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
15533
15534         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
15535         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15536         (cris_frame_pointer_required): New function.
15537
15538         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
15539
15540         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
15541         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15542         (fr30_frame_pointer_required): New function.
15543
15544         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
15545         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15546         (frv_frame_pointer_required): Make as static, change return type
15547         to bool.
15548         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
15549
15550         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
15551         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15552         (ix86_frame_pointer_required): Make as static, change return type to
15553         bool.
15554         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
15555
15556         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
15557         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15558
15559         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
15560
15561         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
15562
15563         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
15564
15565         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
15566         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15567         (mips_frame_pointer_required): Make as static.
15568         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
15569
15570         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
15571         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15572         (mmix_frame_pointer_required): Mew function.
15573
15574         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
15575         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15576
15577         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
15578
15579         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
15580
15581         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
15582
15583         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
15584         (CAN_ELIMINATE): Redefine.
15585         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15586         (sparc_frame_pointer_required): New function.
15587         (sparc_can_eliminate): New function.
15588         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
15589
15590         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
15591         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15592
15593         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
15594         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15595         (xtensa_frame_pointer_required): Make as static, change return type
15596         to bool.
15597         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
15598         Remove.
15599
15600 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
15601
15602         * doc/plugins.texi: Document PLUGIN_START_UNIT.
15603         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
15604         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
15605         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
15606         (register_callback): Handle PLUGIN_START_UNIT.
15607         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
15608
15609 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
15610
15611         * tree.c (process_call_operands): Propagate TREE_READONLY from the
15612         operands.
15613         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
15614         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
15615
15616 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
15617
15618         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
15619         move cost.
15620
15621 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
15622
15623         * doc/extend.texi (Additional Floating Types): __float128 is also
15624         supported on i386 targets.
15625
15626 2009-06-29  Richard Guenther  <rguenther@suse.de>
15627
15628         PR middle-end/14187
15629         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
15630         flag.
15631         (pt_solutions_same_restrict_base): Declare.
15632         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
15633         flag.
15634         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
15635         (make_constraint_from, make_copy_constraint): Move earlier.
15636         (make_constraint_from_heapvar): New function.
15637         (make_constraint_from_restrict): Likewise.
15638         (handle_lhs_call): Use it.
15639         (find_func_aliases): Use it to track conversions to restrict
15640         qualified pointers.
15641         (struct fieldoff): Add only_restrict_pointers flag.
15642         (push_fields_onto_fieldstack): Initialize it.
15643         (create_variable_info_for): Track global restrict qualified pointers.
15644         (intra_create_variable_infos): Use make_constraint_from_heapvar.
15645         Track restrict qualified pointer arguments.
15646         (set_uids_in_ptset): Use varinfo is_global_var flag.
15647         (find_what_var_points_to): Set the vars_contains_restrict flag.
15648         Always create the points-to solution for sets including restrict tags.
15649         (pt_solutions_same_restrict_base): New function.
15650         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
15651         qualified pointers use pt_solutions_same_restrict_base as
15652         additional source for disambiguation.
15653
15654 2009-06-29  Richard Guenther  <rguenther@suse.de>
15655
15656         PR middle-end/38212
15657         * alias.c (find_base_decl): Remove.
15658         (get_deref_alias_set_1): Remove restrict handling.
15659         * c-common.c (c_apply_type_quals_to_decl): Do not set
15660         DECL_POINTER_ALIAS_SET.
15661         * gimplify.c (find_single_pointer_decl_1): Remove.
15662         (find_single_pointer_decl): Likewise.
15663         (internal_get_tmp_var): Remove restrict handling.
15664         (gimple_regimplify_operands): Likewise.
15665         * omp-low.c (expand_omp_atomic_pipeline): Do not set
15666         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
15667         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
15668         * tree.c (restrict_base_for_decl): Remove.
15669         (init_ttree): Do not allocate it.
15670         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
15671         LABEL_DECL_UID for label decls.
15672         (copy_node_stat): Do not copy restrict information.
15673         (decl_restrict_base_lookup): Remove.
15674         (decl_restrict_base_insert): Likewise.
15675         (print_restrict_base_statistics): Likewise.
15676         (dump_tree_statistics): Do not call print_restrict_base_statistics.
15677         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
15678         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
15679         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
15680         (LABEL_DECL_UID): Adjust.
15681         (DECL_BASED_ON_RESTRICT_P): Remove.
15682         (DECL_GET_RESTRICT_BASE): Likewise.
15683         (SET_DECL_RESTRICT_BASE): Likewise.
15684         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
15685
15686         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
15687         instead of DECL_POINTER_ALIAS_SET.
15688         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
15689         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
15690         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
15691
15692 2009-06-29  Richard Guenther  <rguenther@suse.de>
15693
15694         PR tree-optimization/40579
15695         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
15696         the IL to simplify has constants that overflowed.
15697
15698 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
15699
15700         PR tree-optimization/40550
15701         * tree-vect-generic.c (expand_vector_operations_1): Compute in
15702         vector_compute_type only when the size of vector_compute_type is
15703         less than the size of type.
15704
15705 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
15706
15707         * fold-const.c (contains_label_1): Fix comments.
15708         (contains_label_p): Do not walk trees multiple time.
15709
15710 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15711
15712         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
15713         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
15714         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
15715         ix86_fp_comparison_operator.
15716         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
15717         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
15718         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
15719         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
15720         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
15721         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
15722         (related splits): Change predicate to ix86_fp_comparison_operator.
15723         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
15724         instead of ix86_fp_comparison_codes.
15725         (ix86_trivial_fp_comparison_operator,
15726         ix86_fp_comparison_operator): New.
15727         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
15728         (ix86_expand_compare): Eliminate last two parameters.
15729         (ix86_fp_jump_nontrivial_p): Kill.
15730         * config/i386/i386.c (put_condition_code): Eliminate call to
15731         ix86_fp_comparison_codes and subsequent assertion.
15732         (ix86_fp_comparison_codes): Eliminate.
15733         (ix86_fp_swap_condition): New.
15734         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
15735         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
15736         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
15737         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
15738         and ix86_fp_swap_condition.
15739         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
15740         Use ix86_fp_comparison_strategy.
15741         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
15742         (ix86_fp_jump_nontrivial_p): Eliminate.
15743         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
15744         call to ix86_expand_compare.
15745         (ix86_split_fp_branch, ix86_expand_setcc,
15746         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
15747         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
15748
15749 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15750
15751         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
15752         related to jump_clobbers.
15753         * config/arm/arm.md (conds): Remove jump_clob case.
15754         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
15755         splits): Change comparison_operator to arm_comparison_operator.
15756         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
15757         Eliminate.
15758
15759 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15760
15761         * dojump.c (do_compare_rtx_and_jump): Try swapping the
15762         condition for floating point modes.
15763         * expmed.c (emit_store_flag_1): Move here a bigger part
15764         of emit_store_flag.
15765         (emit_store_flag): Try swapping the condition for floating point
15766         modes.
15767         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
15768
15769 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15770
15771         * expr.c (expand_expr_real_1): Just use do_store_flag.
15772         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
15773         emit_store_flag_force.
15774         * expmed.c (emit_store_flag_force): Copy here trick
15775         previously in expand_expr_real_1.  Try reversing the comparison.
15776         (emit_store_flag_1): Work if target is NULL.
15777         (emit_store_flag): Work if target is NULL, using the result mode
15778         from the comparison.  Use split_comparison, restructure final part
15779         to simplify conditionals.
15780
15781 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15782
15783         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
15784         * dojump.c (do_jump): Change handling of floating-point
15785         ops to use just do_compare_and_jump.
15786         (split_comparison): New.
15787         (do_compare_rtx_and_jump): Add here logic coming previously
15788         in do_jump, using split_comparison.
15789
15790 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
15791
15792         PR target/40489
15793         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
15794
15795 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15796
15797         * tree-ssa-alias.c: Fix unintentional commit.
15798
15799 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15800
15801         * passes.c (execute_one_pass): Fix unintentional commit.
15802
15803 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15804
15805         * df-problems.c (df_set_seen, df_unset_seen): Delete.
15806         (df_rd_local_compute, df_md_local_compute): Inline them.
15807
15808         (df_md_scratch): New.
15809         (df_md_alloc, df_md_free): Allocate/free it.
15810         (df_md_local_compute): Only include live registers in init.
15811         (df_md_transfer_function): Prune the in-set computed by
15812         the confluence function, and the gen-set too.
15813
15814 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15815
15816         PR rtl-optimization/26854
15817         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
15818         * df-problems.c (df_rd_add_problem): Fix comment.
15819         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
15820         df_md_simulate_artificial_defs_at_top,
15821         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
15822         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
15823         df_md_transfer_function, df_md_init, df_md_confluence_0,
15824         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
15825         problem_MD, df_md_add_problem): New.
15826         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
15827         df_md_get_bb_info): New.
15828         (DF_LAST_PROBLEM_PLUS1): Adjust.
15829
15830         * Makefile.in (fwprop.o): Include domwalk.h.
15831         * fwprop.c: Include domwalk.h.
15832         (reg_defs, reg_defs_stack): New.
15833         (bitmap_only_bit_between): Remove.
15834         (process_defs): New.
15835         (process_uses): Use reg_defs and local_md instead of
15836         bitmap_only_bit_between and local_rd.
15837         (single_def_use_enter_block): New, from build_single_def_use_links.
15838         (single_def_use_leave_block): New.
15839         (build_single_def_use_links): Remove code moved to
15840         single_def_use_enter_block, invoke domwalk.
15841         (use_killed_between): Adjust comment.
15842
15843 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15844
15845         * bitmap.h (bitmap_ior_and_into): New.
15846         * bitmap.c (bitmap_ior_and_into): New.
15847
15848 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15849
15850         * domwalk.h (struct dom_walk_data): Remove all callbacks except
15851         before_dom_children_before_stmts and after_dom_children_after_stmts.
15852         Rename the two remaining callbacks to just before_dom_children and
15853         after_dom_children. Remove other GIMPLE statement walking bits.
15854         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
15855         * graphite.c: Do not include domwalk.h.
15856         * tree-into-ssa.c (interesting_blocks): New global.
15857         (struct mark_def_sites_global_data): Remove it and names_to_rename.
15858         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
15859         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
15860         now that they're not domwalk callbacks.
15861         (rewrite_initialize_block): Rename to...
15862         (rewrite_enter_block): ... this, place after called functions.  Test
15863         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
15864         (rewrite_finalize_block): Rename to...
15865         (rewrite_leave_block): ... this, place after called functions.
15866         (rewrite_update_init_block): Rename to...
15867         (rewrite_update_enter_block): ... this, place after called functions.
15868         Test interesting_blocks, call rewrite_update_stmt and
15869         rewrite_update_phi_arguments.
15870         (rewrite_update_fini_block): Rename to...
15871         (rewrite_leave_block): ... this, place after called functions.
15872         (rewrite_blocks): Remove last argument, simplify initialization of
15873         walk_data.
15874         (mark_def_sites_initialize_block): Rename to...
15875         (mark_def_sites_block): ... this, call mark_def_sites.
15876         (mark_def_sites_blocks): Remove argument, simplify initialization of
15877         walk_data.
15878         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
15879         (update_ssa): Likewise.
15880         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
15881         callback.
15882         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
15883         (dom_opt_initialize_block): Rename to...
15884         (dom_opt_enter_block): ... this, place after called functions.  Walk
15885         statements here, inline propagate_to_outgoing_edges.
15886         (dom_opt_finalize_block): Rename to...
15887         (dom_opt_leave_block): ... this, place after called functions.
15888         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
15889         domwalk callback.
15890         (dse_enter_block, dse_record_phi): New.
15891         (dse_record_phis): Delete.
15892         (dse_finalize_block): Rename to...
15893         (dse_leave_block): ... this.
15894         (tree_ssa_dse): Simplify initialization of walk_data.
15895         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
15896         Adjust initialization of walk_data.
15897         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
15898         * tree-ssa-loop-phiopt.c (get_non_trapping):
15899         Adjust initialization of walk_data.
15900         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
15901         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
15902         it's not a domwalk callback.
15903         (uncprop_initialize_block): Rename to...
15904         (dse_enter_block): ... this, call uncprop_into_successor_phis.
15905         (dse_finalize_block): Rename to...
15906         (dse_leave_block): ... this.
15907         (tree_ssa_uncprop): Simplify initialization of walk_data.
15908         * Makefile.in: Adjust dependencies.
15909
15910 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
15911
15912         * arm.md (casesi): Fix test for Thumb1.
15913         (thumb1_casesi_internal_pic): Likewise.
15914         (thumb1_casesi_dispatch): Likewise.
15915
15916 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
15917
15918         * config/arm/arm-cores.def: Added core cortex-m0.
15919         * config/arm/arm-tune.md: Regenerated.
15920         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
15921
15922 2009-06-26  DJ Delorie  <dj@redhat.com>
15923
15924         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
15925
15926         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
15927         the scheduler doesn't tag jump insns.
15928
15929 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
15930
15931         * c-decl.c (merge_decls): Re-indent.
15932
15933 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
15934
15935         PR c/39902
15936         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
15937         Special-case decimal float constants.
15938
15939 2009-06-26  Richard Henderson  <rth@redhat.com>
15940
15941         * function.h (struct function): Add cannot_be_copied_reason,
15942         and cannot_be_copied_set.
15943         * tree-inline.c (has_label_address_in_static_1): Rename from
15944         inline_forbidden_p_2; don't set inline_forbidden_reason here.
15945         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
15946         don't set inline_forbidden_reason.
15947         (copy_forbidden): New function, split out of inline_forbidden_p.
15948         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
15949         (inline_forbidden_p): Use copy_forbidden.
15950         (tree_versionable_function_p): Likewise.
15951         (inlinable_function_p): Merge into tree_inlinable_function_p.
15952         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
15953         * ipa-cp.c (ipcp_versionable_function_p): New function.
15954         (ipcp_cloning_candidate_p): Use it.
15955         (ipcp_node_modifiable_p): Likewise.
15956
15957 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
15958
15959         * builtins.c (expand_builtin_alloca): Handle builtin alloca
15960         that is marked not to be inlined. Remove flag_mudflap use.
15961         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
15962         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
15963
15964 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
15965
15966         PR bootstrap/40338
15967         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
15968         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
15969
15970 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
15971
15972         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
15973         shared libgcc.
15974         (__mingwthr_remove_key_dtor): Likewise.
15975
15976 2009-06-26  Richard Guenther  <rguenther@suse.de>
15977
15978         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
15979
15980 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
15981
15982         PR middle-end/40525
15983         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
15984         try the non-cond_exec path also.
15985
15986 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15987
15988         PR target/40468
15989         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
15990         (output_cbranch): Use new functions.
15991         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
15992         Likewise.
15993
15994 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
15995             Pat Haugen  <pthaugen@us.ibm.com>
15996             Revital Eres <ERES@il.ibm.com>
15997
15998         * config/rs6000/rs6000.c (print_operand): Correct lossage message
15999         for %c error.  Add %x support to print VSX registers as a unified
16000         register set, instead of separate float and altivec registers.
16001         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
16002         %y case, and add support for VSX pre-modify addresses.
16003         (output_toc): Add assert for CONST containing an integer constant
16004         in the PLUS case.
16005         (rs6000_adjust_cost): Add POWER7 support.
16006         (insn_must_be_first_in_group): Ditto.
16007         (insn_must_be_last_in_group): Ditto.
16008         (rs6000_emit_popcount): Ditto.
16009         (rs6000_vector_mode_supported_p): Ditto.
16010
16011         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
16012         Change some of the functions called by macros to being called
16013         through a pointer, so debug functions can be inserted if
16014         -mdebug=addr or -mdebug=cost.
16015         (rs6000_preferred_reload_class_ptr): Ditto.
16016         (rs6000_secondary_reload_class_ptr): Ditto.
16017         (rs6000_secondary_memory_needed_ptr): Ditto.
16018         (rs6000_cannot_change_mode_class_ptr): Ditto.
16019         (rs6000_secondary_reload_inner): Ditto.
16020         (rs6000_legitimize_reload_address): Ditto.
16021         (rs6000_legitimize_reload_address_ptr): Ditto.
16022         (rs6000_mode_dependent_address): Ditto.
16023         (rs6000_mode_dependent_address_ptr): Ditto.
16024
16025         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
16026         function to return true if the mode allows reg + integer
16027         addresses.
16028         (virtual_stack_registers_memory_p): New function to return true if
16029         the address refers to a virtual stack register.
16030         (rs6000_legitimate_offset_address_p): Move code to say whether a
16031         mode supports reg+int addressing to reg_offset_addressing_ok_p and
16032         call it.
16033         (rs6000_legitimate_address_p): Add checks for modes that only can
16034         do reg+reg addressing.  Start adding VSX support.
16035         (rs6000_legitimize_reload_address): Ditto.
16036         (rs6000_legitimize_address): Ditto.
16037         (rs6000_debug_legitimate_address_p): New debug functions for
16038         -mdebug=addr and -mdebug=cost.
16039         (rs6000_debug_rtx_costs): Ditto.
16040         (rs6000_debug_address_costs): Ditto.
16041         (rs6000_debug_adjust_cost): Ditto.
16042         (rs6000_debug_legitimize_address): Ditto.
16043         (rs6000_legitimize_reload_address_ptr): Point to call normal
16044         function or debug function.  Make functions called via pointer
16045         static.
16046         (rs6000_mode_dependent_address_ptr): Ditto.
16047         (rs6000_secondary_reload_class_ptr): Ditto.
16048         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
16049         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
16050         into a friendlier error.
16051         (rs6000_init_builtins): Add initial VSX support.
16052         (rs6000_adjust_cost): Fix some spacing issues.
16053
16054         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
16055         (REG_CLASS_NAMES): Ditto.
16056         (REG_CLASS_CONTENTS): Ditto.
16057         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
16058         pointer, to add -mdebug=addr support.
16059         (CANNOT_CHANGE_MODE_CLASS): Ditto.
16060         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
16061         -mdebug=addr support.
16062         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
16063         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
16064         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
16065
16066         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
16067         16-bit values.
16068         (bswapsi*): Set attribute types for load/store.  Add combiner
16069         patterns to eliminate zero extend on 64-bit.
16070         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
16071         stdbrx if the hardware supports those instructions.
16072
16073 2009-06-25  Ian Lance Taylor  <iant@google.com>
16074
16075         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
16076         (Link Options): Document -static-libstdc++.
16077
16078 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16079
16080         PR target/38731
16081         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
16082         DATA_ALIGNMENT instead.
16083
16084 2009-06-25  Richard Guenther  <rguenther@suse.de>
16085
16086         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
16087         indirect references against the callused/escaped solutions.
16088         (call_may_clobber_ref_p_1): Likewise.
16089
16090 2009-06-25  Martin Jambor  <mjambor@suse.cz>
16091
16092         PR tree-optimization/40493
16093         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
16094         (enum unscalarized_data_handling): New type.
16095         (handle_unscalarized_data_in_subtree): Return what has been done.
16096         (load_assign_lhs_subreplacements): Handle left flushes differently.
16097         (sra_modify_assign): Use unscalarized_data_handling, simplified
16098         condition determining whether to remove the statement.
16099
16100 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
16101
16102         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
16103         excerpt - @ should be doubled for texinfo.
16104
16105 2009-06-24  Ian Lance Taylor  <iant@google.com>
16106
16107         * config/arc/arc.c: Include "df.h".
16108         (arc_attribute_table): Make static.  Move higher in file.
16109         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
16110         (output_shift): Initialize n later to avoid warning.
16111         * config/arm/arm.c (arm_attribute_table): Make static.  Move
16112         higher in file.
16113         * config/avr/avr.c (avr_attribute_table): Make static.  Move
16114         higher in file.
16115         (reg_class_tab): Change array type from int to enum reg_class.
16116         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
16117         LABEL_REF.
16118         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
16119         (lshrhi3_out): Likewise.
16120         (class_likely_spilled_p): Change return type to bool.
16121         (avr_rtx_costs): Use local code variable with enum type.
16122         * config/avr/avr.md (movmemhi): Use add_reg_note.
16123         (andhi3, andsi3): Don't use AS2 with "and".
16124         (iorhi3, iorsi3): Don't use AS2 with "or".
16125         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
16126         * config/crx/crx.c: Include "df.h".
16127         (crx_attribute_table): Make static.
16128         * config/m32r/m32r.c: Include "df.h".
16129         (m32r_attribute_table): Make static.  Move higher in file.
16130         (pop): Use add_reg_note.
16131         (block_move_call): Change 0 to LCT_NORMAL in function call.
16132         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
16133         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
16134         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
16135         declare, not just when TREE_CODE is defined.
16136         * config/m68hc11/m68hc11.c: Include "expr.h".
16137         (m68hc11_attribute_table): Make static.  Move higher in file.
16138         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
16139         function call.
16140         (m68hc11_register_indirect_p): Likewise.
16141         (m68hc11_function_arg_padding): Change return type to enum
16142         direction.
16143         (emit_move_after_reload): Use add_reg_note.
16144         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
16145         (m68hc11_split_logical): Likewise.
16146         (m68hc11_rtx_costs): Add local code_and outer_code variables with
16147         enum type.
16148         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
16149         to VOIDmode in function call.
16150         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
16151         tree is defined.
16152         (m68hc11_split_logical): Update declaration.
16153         (m68hc11_function_arg_padding): Update declaration.
16154         * config/mcore/mcore.c (regno_reg_class): Change form array of int
16155         to array of enum reg_class.
16156         (mcore_attribute_table): Make static.  Move higher in file.
16157         (mcore_rtx_costs): Add cast to enum type.
16158         * config/mcore/mcore.h (regno_reg_class): Update declaration.
16159         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
16160         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
16161         in file.
16162         * config/sh/predicates.md (trapping_target_operand): Rename and to
16163         and_expr.
16164         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
16165         higher in file.
16166         * config/spu/spu.c (spu_attribute_table): Make static.  Move
16167         higher in file.
16168         * config/v850/v850.c (v850_attribute_table): Make static.  Move
16169         higher in file.
16170         (v850_rtx_costs): Use local code with enum type.
16171         (expand_epilogue): Add cast.
16172         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
16173
16174 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
16175
16176         PR target/40515
16177         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
16178         -m2a-single-only and -m2a-nofpu.
16179         * config/sh/sh.opt: Document m2a generates FPU code.
16180
16181 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
16182
16183         * defaults.h (CAN_ELIMINATE): Provide default.
16184         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
16185         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
16186         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
16187         * config/spu/spu.h (CAN_ELIMINATE): Delete.
16188         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
16189         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
16190         * config/cris/cris.h (CAN_ELIMINATE): Delete.
16191         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
16192         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
16193         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
16194
16195 2009-06-24  DJ Delorie  <dj@redhat.com>
16196
16197         * mep-ext-cop.cpu: Fix copyright notice.
16198         * mep-default: Fix copyright notice.
16199         * mep-core: Fix copyright notice.
16200         * mep: Fix copyright notice.
16201         * mep-ivc2: Fix copyright notice.
16202         * mep-c5: Fix copyright notice.
16203
16204 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
16205
16206         * doc/contrib.texi (Contributors):
16207
16208 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
16209
16210         PR middle-end/40501
16211         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
16212         src and dst operands if necessary.
16213
16214 2009-06-23  DJ Delorie  <dj@redhat.com>
16215
16216         Add MeP port.
16217         * config.gcc: Add mep support.
16218         * recog.c: Resurrect validate_replace_rtx_subexp().
16219         * recog.h: Likewise.
16220         * config/mep/: Add new port:
16221         * config/mep/constraints.md: New file.
16222         * config/mep/default.h: New file.
16223         * config/mep/intrinsics.h: New file.
16224         * config/mep/intrinsics.md: New file.
16225         * config/mep/ivc2-template.h: New file.
16226         * config/mep/mep-c5.cpu: New file.
16227         * config/mep/mep-core.cpu: New file.
16228         * config/mep/mep-default.cpu: New file.
16229         * config/mep/mep-ext-cop.cpu: New file.
16230         * config/mep/mep-intrin.h: New file.
16231         * config/mep/mep-ivc2.cpu: New file.
16232         * config/mep/mep-lib1.asm: New file.
16233         * config/mep/mep-lib2.c: New file.
16234         * config/mep/mep-pragma.c: New file.
16235         * config/mep/mep-protos.h: New file.
16236         * config/mep/mep-tramp.c: New file.
16237         * config/mep/mep.c: New file.
16238         * config/mep/mep.cpu: New file.
16239         * config/mep/mep.h: New file.
16240         * config/mep/mep.md: New file.
16241         * config/mep/mep.opt: New file.
16242         * config/mep/predicates.md: New file.
16243         * config/mep/t-mep: New file.
16244
16245 2009-06-23  Ian Lance Taylor  <iant@google.com>
16246
16247         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
16248         from loose_warn into c_loose_warn and from strict_warn into
16249         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
16250         --enable-build-with-cxx.  Set and substitute
16251         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
16252         * Makefile.in (CXXFLAGS): New variable.
16253         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
16254         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
16255         the default is the same as $(STRICT_WARN).
16256         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
16257         (CXX): New variable.
16258         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
16259         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
16260         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
16261         (HOST_LIBS): New variable.
16262         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
16263         (ALL_CXXFLAGS): New variable.
16264         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
16265         * doc/install.texi (Configuration): Document
16266         --enable-build-with-cxx, --with-stage1-ldflags,
16267         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
16268         * configure: Rebuild.
16269
16270 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16271
16272         * config/arm/arm.c (arm_override_options): Fix braces and formatting
16273         from previous commit.
16274
16275 2009-06-23  Ian Lance Taylor  <iant@google.com>
16276
16277         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
16278
16279 2009-06-23  Ian Lance Taylor  <iant@google.com>
16280
16281         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
16282         with ATTRIBUTE_UNUSED.
16283
16284 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
16285             Pat Haugen  <pthaugen@us.ibm.com>
16286             Revital Eres  <eres@il.ibm.com>
16287
16288         * config.in (HAVE_AS_POPCNTD): Add default definition.
16289         (HAVE_AS_LWSYNC): Ditto.
16290
16291         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
16292         release number.
16293         (gcc_cv_as_powerpc_cmpb): Ditto.
16294         (gcc_cv_as_powerpc_dfp): Ditto.
16295         (gcc_cv_as_powerpc_vsx): Ditto.
16296         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
16297         supporting the popcntd/lwsync instructions.
16298         (gcc_cv_as_powerpc_lwsync): Ditto.
16299         * configure: Regenerate.
16300
16301         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
16302         -mcpu=native and -mcpu=power7.
16303         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
16304
16305         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
16306         a variable instead of a mask to reduce the number of mask bits.
16307         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
16308         (-mbit-word): Ditto.
16309         (-mregnames): Ditto.
16310         * config/rs6000/rs6000.opt (-mupdate): Ditto.
16311         (-mfused-madd): Ditto.
16312
16313         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
16314         2.06 instructions.
16315         (-mvsx): New switch for VSX instructions.
16316         (-misel): Move from a variable to a mask to allow it to be set by
16317         -mcpu=.
16318
16319         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
16320         function declaration to an array declaration.
16321         (rs6000_hard_regno_nregs): New external array declaration.
16322
16323         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
16324         files included by rs6000.md.
16325
16326         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
16327         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
16328
16329         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
16330         a target mask.
16331         (rs6000_debug_reg): New -mdebug= variables.
16332         (rs6000_debug_addr): Ditto.
16333         (rs6000_debug_cost): Ditto.
16334         (rs6000_pmode): New variable to hold Pmode.
16335         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
16336         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
16337         calculated at compiler start.
16338         (rs6000_hard_regno_nregs): Change function to an array which holds
16339         HARD_REGNO_NREGS calculated at compiler start.
16340         (rs6000_explicit_options): Delete isel field.
16341         (rs6000_vector_unit): New array to hold which vector unit
16342         supports arithmetic options for a given type.
16343         (rs6000_vector_mem): New array to hold which vector unit supports
16344         memory reference operations for a given type.
16345         (rs6000_vector_align): New array to given the alignment of each
16346         vector type.
16347         (power7_cost): New basic costs for power7.
16348         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
16349         (rs6000_hard_regno_nregs_internal): New function, moved from
16350         HARD_REGNO_NREGS, to calculate the number of registers each hard
16351         register takes for each type.
16352         (rs6000_debug_reg_print): New function for -mdebug=reg support.
16353         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
16354         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
16355         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
16356         unit information here so it is calculated once at compiler startup
16357         time.
16358         (rs6000_override_options): Make -misel a target mask.  Add more
16359         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
16360         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
16361         -mdebug=cost.
16362         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
16363         (rs6000_handle_option): Move -misel from variable to target mask.
16364         (rs6000_builtin_mask_for_load): Add VSX support.
16365         (rs6000_conditional_register_usage): Ditto.
16366         (USE_ALTIVEC_FOR_ARG_P): Ditto.
16367         (function_arg_boundary): Ditto.
16368         (rs6000_expand_builtin): Ditto.
16369         (def_builtin): Make abort message a little friendlier.
16370         (rs6000_emit_int_cmove): Add support for 64-bit isel.
16371
16372         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
16373         assembler support the popcntd instruction instead of a vsx
16374         instruction to enable power7 support.
16375         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
16376         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
16377         option to the assembler if -mcpu=native.
16378         (ASM_CPU_NATIVE_SPEC): Ditto.
16379         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
16380         ISA 2.06 features.
16381         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
16382         the lwsync instruction.
16383         (enum processor_type): Add PROCESSOR_POWER7.
16384         (rs6000_debug_reg): New -mdebug= options.
16385         (rs6000_debug_addr): Ditto.
16386         (rs6000_debug_cost): Ditto.
16387         (rs6000_isel): Delete.
16388         (enum rs6000_vector): New enum to say what vector unit we have.
16389         (VECTOR_UNIT_*): New macros to say which vector unit has
16390         arithmetic operations for a given type.
16391         (VECTOR_MEM_*): New macros to say which vector unit has memory
16392         operations for a given type.
16393         (TARGET_LDBRX): Whether the machine supports the ldbrx
16394         instruction.
16395         (TARGET_ISEL): Delete, -misel moved to be a mask.
16396         (TARGET_ISEL64): New macro for 64-bit isel support.
16397         (UNITS_PER_VSX_WORD): New macro.
16398         (POINTER_SIZE): Move to be an external variable, rather than
16399         calculating whether we are generating 32 ot 64-bit code.
16400         (Pmode): Ditto.
16401         (STACK_BOUNDARY): Add VSX support.
16402         (LOCAL_ALIGNMENT): Ditto.
16403         (SLOW_UNALIGNED_ACCESS): Ditto.
16404         (VSX_REGNO_P): New macro for VSX support.
16405         (VFLOAT_REGNO_P): Ditto.
16406         (VINT_REGNO_P): Ditto.
16407         (VLOGICAL_REGNO_P): Ditto.
16408         (VSX_VECTOR_MODE): Ditto.
16409         (VSX_SCALAR_MODE): Ditto.
16410         (VSX_MODE): Ditto.
16411         (VSX_MOVE_MODE): Ditto.
16412         (VSX_REG_CLASS_P): Ditto.
16413         (HARD_REGNO_NREGS): Instead of calling a function, use an array
16414         lookup.
16415         (UNITS_PER_SIMD_WORD): Add VSX support.
16416         (MODES_TIEABLE_P): Ditto.
16417         (STARTING_FRAME_OFFSET): Ditto.
16418         (STACK_DYNAMIC_OFFSET): Ditto.
16419         (EPILOGUE_USES): Ditto.
16420         (REGNO_REG_CLASS): Move to array lookup.
16421         (CLASS_MAX_NREGS): Ditto.
16422         (rs6000_vector_reg_class): Add declaration.
16423         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
16424         overlap with the floating point and Altivec registers.
16425
16426         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
16427
16428         * config/rs6000/driver-rs6000.c (asm_names): New static array to
16429         give the appropriate asm switches if -mcpu=native.
16430         (host_detect_local_cpu): Add support for "asm".
16431         (host_detect_local_cpu): Follow GNU code guidelines for name.
16432
16433         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
16434         -mbit-word to a variable instead of being a target mask.
16435
16436         * config/rs6000/sync.md (lwsync): If the assembler supports it,
16437         emit the lwsync instruction instead of emitting the instruction as
16438         an integer constant.
16439
16440         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
16441         fixuns_trundfsi2, move expander into rs6000.md.
16442
16443         * config/rs6000/rs6000.md (cpu): Add power7.
16444         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
16445         (logical predicate patterns): Change the single instruction
16446         primitives that set CR0 to be fast_compare instead of compare.
16447         (norsi*): Ditto.
16448         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
16449         (popcntddi2): Ditto.
16450         (popcount<mode>): Ditto.
16451         (floating multiply/add insns): Name the floating point
16452         multiply/add insns.
16453         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
16454         (isel_unsigned_<mode>): Ditto.
16455         (fixuns_trundfsi2): Move expander here from spe.md.
16456         (smindi3): Define if we have -misel on 64-bit systems.
16457         (smaxdi3): Ditto.
16458         (umindi3): Ditto.
16459         (umaxdi3): Ditto.
16460
16461 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
16462
16463         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
16464         extra_objs.
16465         * config/avr/avr.c (avr_current_device): New variable.
16466         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
16467         (avr_arch, mcu_type_s): Move to avr.h.
16468         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
16469         default_data_section_start fields.
16470         (avr_arch): Moved from avr.c.
16471         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
16472         library_name fields.
16473         (avr_current_device, avr_mcu_types, avr_arch_types,
16474         avr_device_to_arch, avr_device_to_data_start,
16475         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
16476         (EXTRA_SPEC_FUNCTIONS): Define.
16477         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
16478         options mapping. Use device_to_arch and device_to_data_start insted.
16479         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
16480         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
16481         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
16482         * config/avr/driver-avr.c: New file.
16483         * config/avr/avr-devices.c: New file.
16484
16485 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
16486
16487         * var-tracking.c (unshare_variable): Force initialized to
16488         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
16489         (set_variable_part): Likewise.
16490         (struct variable_union_info): Remove pos_src field.
16491         (vui_vec, vui_allocated): New variables.
16492         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
16493         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
16494         == 1 use a simpler sorting algorithm.  Compute pos field right
16495         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
16496         Avoid quadratic comparison if !flag_var_tracking_uninit.
16497         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
16498         unshare_variable unconditionally.
16499         (dataflow_set_different_2): Removed.
16500         (dataflow_set_different): Don't traverse second hash table.
16501         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
16502         unconditionally to var_reg_set or var_mem_set.
16503         (emit_notes_in_bb): Likewise.
16504         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
16505         unshare_variable.
16506         (emit_note_insn_var_location): Don't set initialized to
16507         VAR_INIT_STATUS_INITIALIZED early.
16508         (vt_finalize): Free vui_vec if needed, clear vui_vec and
16509         vui_allocated.
16510         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
16511
16512         * tree-object-size.c (addr_object_size): Instead of checking
16513         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
16514         are no FIELD_DECLs following it.
16515
16516 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
16517
16518         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
16519         order to match bswaps with signed source operands.
16520
16521 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
16522
16523         * sdbout.c (sdbout_one_type): Fix braces in switch.
16524
16525 2009-06-23  Richard Guenther  <rguenther@suse.de>
16526
16527         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
16528         member.
16529         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
16530         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
16531         var_callused, callused_tree, var_storedanything, storedanything_tree,
16532         var_integer, integer_tree): Remove global variables.
16533         (new_var_info): Do not pass new id, append the new var to the
16534         global variable vector.
16535         (do_ds_constraint): Use is_global_var member of the variable-info.
16536         (new_scalar_tmp_constraint_exp): Adjust.
16537         (create_function_info_for): Likewise.
16538         (create_variable_info_for): Likewise.
16539         (find_what_var_points_to): Remove dead code.
16540         (init_base_vars): Simplify.
16541         (compute_points_to_sets): Adjust.
16542
16543 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
16544
16545         * combine.c (try_combine): Dump information about the insns we're
16546         combining.
16547
16548 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
16549
16550         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
16551         check when calling force_to_mode on TRUNCATE's operand.
16552
16553 2009-06-22  Ian Lance Taylor  <iant@google.com>
16554
16555         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
16556
16557 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
16558
16559         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
16560
16561 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16562
16563         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
16564         override library linkage flags such as -static-libgcc or
16565         -shared-libgcc.
16566
16567 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
16568
16569         * config/m68k/m68k-devices.def: Add line for MCF5221x.
16570
16571 2009-06-22  Ian Lance Taylor  <iant@google.com>
16572
16573         * config/linux.opt: Put mglibc ahead of muclibc.
16574
16575         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
16576         for duplicate decls.
16577
16578 2009-06-22  Matthias Klose  <doko@ubuntu.com>
16579
16580         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
16581
16582 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
16583
16584         PR objc/28050
16585         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
16586         instead of NULL if a parser error occurs.
16587
16588 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
16589
16590         * dwarf2out.c (dwarf2_debug_hooks): Initialize
16591         non-DWARF2_DEBUGGING_INFO version.
16592
16593 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
16594
16595         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
16596         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
16597
16598         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
16599         (LIBGCC2_TF_CEXT): Define.
16600         (TF_SIZE): Define.
16601
16602 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16603
16604         PR target/40463
16605         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
16606
16607 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16608
16609         * config/arm/arm.c (arm_override_options): Disable
16610         -mcaller-super-interworking and -mcallee-super-interworking.
16611         * doc/invoke.texi (ARM Options): Document this.
16612
16613 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
16614
16615         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
16616         * config/arm/constraints.md (j): New constraint for movw operands.
16617         (N): Remove thumb2 meaning.
16618         * config/arm/arm.md (*arm_movw): Delete.
16619         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
16620         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
16621         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
16622
16623 2009-06-22  Martin Jambor  <mjambor@suse.cz>
16624
16625         PR tree-optimization/40492
16626         * tree-sra.c (sra_modify_assign): Pass zero offsets to
16627         build_ref_for_offset.
16628
16629 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
16630
16631         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
16632         JUMP_TABLE_DATA_P predicates where applicable.
16633         * auto-inc-dec.c: Ditto.
16634         * builtins.c: Ditto.
16635         * caller-save.c: Ditto.
16636         * calls.c: Ditto.
16637         * cfgcleanup.c: Ditto.
16638         * cfglayout.c: Ditto.
16639         * cfgrtl.c: Ditto.
16640         * combine.c: Ditto.
16641         * combine-stack-adj.c: Ditto.
16642         * cse.c: Ditto.
16643         * cselib.c: Ditto.
16644         * dbxout.c: Ditto.
16645         * df-scan.c: Ditto.
16646         * dse.c: Ditto.
16647         * dwarf2asm.c: Ditto.
16648         * dwarf2out.c: Ditto.
16649         * emit-rtl.c: Ditto.
16650         * except.c: Ditto.
16651         * explow.c: Ditto.
16652         * expmed.c: Ditto.
16653         * expr.c: Ditto.
16654         * final.c: Ditto.
16655         * function.c: Ditto.
16656         * fwprop.c: Ditto.
16657         * gcse.c: Ditto.
16658         * genpreds.c: Ditto.
16659         * genrecog.c: Ditto.
16660         * ifcvt.c: Ditto.
16661         * ira-costs.c: Ditto.
16662         * ira-lives.c: Ditto.
16663         * jump.c: Ditto.
16664         * loop-iv.c: Ditto.
16665         * lower-subreg.c: Ditto.
16666         * modulo-sched.c: Ditto.
16667         * optabs.c: Ditto.
16668         * postreload.c: Ditto.
16669         * print-rtl.c: Ditto.
16670         * recog.c: Ditto.
16671         * reginfo.c: Ditto.
16672         * regmove.c: Ditto.
16673         * reload1.c: Ditto.
16674         * reload.c: Ditto.
16675         * reorg.c: Ditto.
16676         * rtlanal.c: Ditto.
16677         * rtl.c: Ditto.
16678         * sched-vis.c: Ditto.
16679         * sdbout.c: Ditto.
16680         * sel-sched-ir.c: Ditto.
16681         * simplify-rtx.c: Ditto.
16682         * targhooks.c: Ditto.
16683         * var-tracking.c: Ditto.
16684         * vmsdbgout.c: Ditto.
16685
16686 2009-06-22  Matthias Klose  <doko@ubuntu.com>
16687
16688         * Makefile.in (install-plugin): Always use DESTDIR.
16689
16690 2009-06-22  Olivier Hainque  <hainque@adacore.com>
16691
16692         * config/pa/pa.c (output_call): Don't optimize post call jumps
16693         into return address adjustments if the call may throw.
16694
16695 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
16696
16697         * arm.c (thumb1_output_casesi): New function.
16698         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
16699         optimizing for size or PIC.
16700         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
16701         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
16702         (casesi): Handle Thumb-1 when optimizing for size or PIC.
16703         (thumb1_casesi_internal_pic): New expand rule.
16704         (thumb1_casesi_dispatch): New pattern.
16705         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
16706         thumb-1 mode.
16707         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
16708         in the text seciton when PIC or optimizing for size.
16709         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
16710         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
16711         preservation properties of code.
16712         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
16713         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
16714         (__gnu_thumb1_case_si): New function.
16715         * t-arm (LIB1ASMSRC): Define here.
16716         (LIB1ASMFUNCS): Add some common functions.
16717         * t-arm-elf (LIB1ASMSRC): Delete.
16718         (LIB1ASMFUNCS): Append to existing set.
16719         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16720         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16721         * t-symbian (LIB1ASMFUNCS): Likewise.
16722         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16723         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16724
16725 2009-06-21  Richard Guenther  <rguenther@suse.de>
16726
16727         PR tree-optimization/38729
16728         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
16729         to loops with a single exit if -fno-expensive-optimizations.
16730
16731 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
16732
16733         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
16734         (dataflow_set): Change vars type from htab_t to shared_hash.
16735         (shared_hash_pool, empty_shared_hash): New variables.
16736         (vars_clear): Removed.
16737         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
16738         shared_hash_find_slot_unshare, shared_hash_find_slot,
16739         shared_hash_find_slot_noinsert, shared_hash_find): New
16740         static inlines.
16741         (shared_hash_unshare, shared_hash_destroy): New functions.
16742         (unshare_variable): Unshare set->vars if shared, use
16743         shared_hash_htab.
16744         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
16745         (get_init_value, find_src_set_src, dump_dataflow_set,
16746         clobber_variable_part, emit_notes_for_differences): Use
16747         shared_hash_htab.
16748         (dataflow_set_init): Remove second argument, set vars to
16749         empty_shared_hash instead of creating a new htab.
16750         (dataflow_set_clear): Call shared_hash_destroy and set vars
16751         to empty_shared_hash instead of calling vars_clear.
16752         (dataflow_set_copy): Don't call vars_copy, instead just share
16753         the src htab with dst.
16754         (variable_union): Use shared_hash_*, use initially NO_INSERT
16755         lookup if set->vars is shared.  Don't keep slot cleared before
16756         calling unshare_variable.  Unshare set->vars if needed.
16757         Even ->refcount == 1 vars must be unshared if set->vars is shared
16758         and var needs to be modified.
16759         (variable_canonicalize): New function.
16760         (dataflow_set_union): If dst->vars is empty, just share src->vars
16761         with dst->vars and traverse with variable_canonicalize to canonicalize
16762         and unshare what is needed.
16763         (dataflow_set_different): If old_set and new_set use the same shared
16764         htab, they aren't different.  If number of htab elements is different,
16765         htabs are different.  Use shared_hash_*.
16766         (dataflow_set_destroy): Call shared_hash_destroy instead of
16767         htab_delete.
16768         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
16769         second argument to dataflow_set_init.
16770         (vt_initialize): Likewise.  Initialize shared_hash_pool and
16771         empty_shared_hash, move bb in/out initialization afterwards.
16772         Use variable_htab_free instead of NULL as changed_variables del hook.
16773         (variable_was_changed): Change type of second argument to pointer to
16774         dataflow_set.  When inserting var into changed_variables, bump
16775         refcount.  Unshare set->vars if set is shared htab and slot needs to
16776         be cleared.
16777         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
16778         lookup if set->vars is shared.  Unshare set->vars if needed.
16779         Even ->refcount == 1 vars must be unshared if set->vars is shared
16780         and var needs to be modified.  Adjust variable_was_changed caller.
16781         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
16782         vars must be unshared if set->vars is shared and var needs to be
16783         modified.  Adjust variable_was_changed caller.
16784         (emit_note_insn_var_location): Don't pool_free var.
16785         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
16786         instead of 1.
16787         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
16788         free_alloc_pool on shared_hash_pool.
16789
16790 2009-06-20  Anthony Green  <green@moxielogic.com>
16791
16792         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
16793         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
16794
16795 2009-06-20  Richard Guenther  <rguenther@suse.de>
16796
16797         * tree-ssa-structalias.c (find_func_aliases): For memset use
16798         a constraint from NULL if we memset to zero.
16799         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
16800         we explicitly handle that do not read from memory.
16801         (call_may_clobber_ref_p_1): Properly handle builtins that may
16802         set errno.
16803
16804 2009-06-20  Richard Guenther  <rguenther@suse.de>
16805
16806         PR tree-optimization/40495
16807         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
16808         (new_scalar_tmp_constraint_exp): New function.
16809         (process_constraint): Do not create temporary decls.
16810         (process_all_all_constraints): Likewise.
16811         (handle_const_call): Likewise.
16812         (create_function_info_for): Do not set decl.
16813
16814 2009-06-19  Ian Lance Taylor  <iant@google.com>
16815
16816         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
16817         (rs6000_attribute_table): Make static; move before use.
16818
16819 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
16820
16821         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
16822         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
16823         Propagate the TREE_READONLY flag without overwriting it.
16824         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
16825         Propagate the TREE_READONLY flag onto the result.
16826         (process_call_operands): Move around.  Use correct constant value.
16827
16828 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16829
16830         PR target/40482
16831         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
16832         * config/arm/arm.md: Likewise.
16833
16834 2009-06-19  Ian Lance Taylor  <iant@google.com>
16835
16836         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
16837         to GIMPLE_ERROR_MARK.
16838
16839         * c-typeck.c (build_conditional_expr): Add op1_original_type and
16840         op2_original_type parameters.  Warn about using different enum types.
16841         * c-parser.c (c_parser_conditional_expression): Pass original
16842         types to build_conditional_expr.
16843         * c-tree.h (build_conditional_expr): Update declaration.
16844
16845 2009-06-19  Ian Lance Taylor  <iant@google.com>
16846
16847         * config/i386/i386.c (ix86_function_specific_save): Test that
16848         fields match values, rather than testing the values are in a
16849         certain range.
16850
16851 2009-06-19  Richard Guenther  <rguenther@suse.de>
16852
16853         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
16854         ADDR_EXPR pointers.
16855         (ptr_derefs_may_alias_p): Likewise.
16856         (ptr_deref_may_alias_ref_p_1): New function.
16857         (ptr_deref_may_alias_ref_p): Likewise.
16858         (ref_maybe_used_by_call_p_1): Handle builtins that are not
16859         covered by looking at the ESCAPED solution.
16860         (call_may_clobber_ref_p_1): Likewise.
16861         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
16862         Handle NULL_TREE offset.  Do not produce redundant constraints.
16863         (process_all_all_constraints): New helper function.
16864         (do_structure_copy): Use it.
16865         (handle_lhs_call): Likewise.
16866         (find_func_aliases): Handle some builtins with pointer arguments
16867         and/or return values explicitly.
16868
16869 2009-06-19  Ian Lance Taylor  <iant@google.com>
16870
16871         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
16872
16873 2009-06-19  Ian Lance Taylor  <iant@google.com>
16874
16875         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
16876
16877 2009-06-19  Ian Lance Taylor  <iant@google.com>
16878
16879         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
16880         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
16881         version.
16882
16883         * c-decl.c (finish_decl): If -Wc++-compat, warn about
16884         uninitialized const.
16885
16886 2009-06-19  Ian Lance Taylor  <iant@google.com>
16887
16888         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
16889         all uses.
16890
16891         * c-decl.c (in_struct, struct_types): Remove.
16892         (struct c_binding): Add in_struct field.
16893         (c_binding_ptr): Define type, along with VEC.
16894         (struct c_struct_parse_info): Define.
16895         (struct_parse_info): New static variable.
16896         (bind): Initialize in_struct field.
16897         (start_struct): Remove enclosing_in_struct and
16898         enclosing_struct_types parameters.  Add
16899         enclosing_struct_parse_info parameter.  Change all callers.  Set
16900         struct_parse_info rather than in_struct and struct_types.
16901         (grokfield): If -Wc++-compat and there is a symbol binding for the
16902         field name, set the in_struct flag and push it on the
16903         struct_parse_info->fields vector.
16904         (warn_cxx_compat_finish_struct): New static function.
16905         (finish_struct): Remove enclosing_in_struct and
16906         enclosing_struct_types parameters.  Add
16907         enclosing_struct_parse_info parameter.  Change all callers.  Don't
16908         set C_TYPE_DEFINED_IN_STRUCT here.  Call
16909         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
16910         parameter.  Only push on struct_types if warn_cxx_compat.
16911         (finish_enum): Only push on struct_types if warn_cxx_compat.
16912         (declspecs_add_type): Add loc parameter.  Change all callers.
16913         Change all error calls to error_at.  Pass loc, not input_location,
16914         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
16915         defined in a struct.  If -Wc++-compat and parsing a struct, record
16916         that a typedef name was used.
16917         * c-parser.c (c_parser_declspecs): Get location to pass to
16918         declspecs_add_type.
16919         (c_parser_struct_or_union_specifier): Update calls to start_struct
16920         and finish_struct.
16921         * c-tree.h (struct c_struct_parse_info): Declare.
16922         (finish_struct, start_struct): Update declarations.
16923         (declspecs_add_type): Update declaration.
16924
16925 2009-06-19  Ian Lance Taylor  <iant@google.com>
16926
16927         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
16928         variable with an anonymous type.
16929
16930 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
16931
16932         * see.c: Remove for real.
16933
16934 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
16935
16936         * optabs.h (enum optab_index): Add new OTI_significand.
16937         (significand_optab): Define corresponding macro.
16938         * optabs.c (init_optabs): Initialize significand_optab.
16939         * genopinit.c (optabs): Implement significand_optab using
16940         significand?f2 patterns.
16941         * builtins.c (expand_builtin_mathfn): Handle
16942         BUILT_IN_SIGNIFICAND{,F,L}.
16943         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
16944         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
16945
16946         * config/i386/i386.md (significandxf2, significand<mode>2): New
16947         expanders to implement significandf, significand and significandl
16948         built-ins as inline x87 intrinsics.
16949
16950 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
16951
16952         * config/avr/avr.c (avr_override_options): Remove setting value of
16953         PARAM_INLINE_CALL_COST.
16954
16955 2009-06-18  Richard Henderson  <rth@redhat.com>
16956
16957         PR 40488
16958         * tree-pass.h (TDF_ASMNAME): New.
16959         * tree-dump.c (dump_options): Add asmname.
16960         * doc/invoke.texi: Document it.
16961
16962         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
16963         (dump_decl_name): ...here.
16964         (dump_function_name): New flags arg; mind TDF_ASMNAME.
16965         (dump_generic_node): Update dump_function_name calls.
16966         (print_call_name): New flags arg; update all dump calls.
16967         * diagnostic.h (print_call_name): Update.
16968         * gimple-pretty-print.c (dump_gimple_call): Update.
16969
16970 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
16971
16972         PR target/40470
16973         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
16974
16975 2009-06-18  Diego Novillo  <dnovillo@google.com>
16976
16977         * doc/plugins.texi: Document plugin_is_GPL_compatible.
16978         * plugin.c (str_license): Declare.
16979         (try_init_one_plugin): Assert that the symbol
16980         'plugin_is_GPL_compatible' exists.
16981
16982 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
16983
16984         * see.c: Remove.
16985         * Makefile.in (OBJS-common): Remove see.o.
16986         (see.o): Remove.
16987         * common.opt (fsee): Mark as preserved for backward compatibility.
16988         * opts.c (common_handle_option): Add OPT_fsee to the backward
16989         compatibility section.
16990         * passes.c (init_optimization_passes, pass_see): Remove pass.
16991         * timevar.def (TV_SEE): Remove.
16992         * tree-pass.h (pass_see): Remove declaration.
16993         * doc/invoke.texi (-fsee): Remove documentation.
16994
16995 2009-06-18  Martin Jambor  <mjambor@suse.cz>
16996
16997         * tree-sra.c: Include statistics.h
16998         (sra_stats): New variable.
16999         (sra_initialize): Clear sra_stats.
17000         (create_access_replacement): Increment sra_stats.replacements.
17001         (get_access_replacement): Do not return twice.
17002         (analyze_all_variable_accesses): Increment statistics counter by the
17003         number of scalarized aggregates.
17004         (generate_subtree_copies): Increment sra_stats.subtree_copies.
17005         (sra_modify_expr): Increment sra_stats.exprs.
17006         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
17007         (sra_modify_assign): Increment sra_stats.exprs,
17008         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
17009         (perform_intra_sra): Update statistics counters.
17010         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
17011
17012 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
17013
17014         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
17015         (arm_scalar_mode_supported_p): New function.
17016
17017 2009-06-18  Paul Brook  <paul@codesourcery.com>
17018             Sandra Loosemore  <sandra@codesourcery.com>
17019
17020         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
17021         (__extendhfsf2, __truncsfhf2): Define.
17022         * config/arm/fp16.c: New file.
17023         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
17024         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
17025
17026 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
17027
17028         * doc/extend.texi (Half-Precision): New section.
17029         * doc/invoke.texi (Option Summary): List -mfp16-format.
17030         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
17031         * config/arm/arm.opt (mfp16-format=): New.
17032         * config/arm/arm.c: Include intl.h.
17033         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
17034         (TARGET_INVALID_RETURN_TYPE): Redefine.
17035         (TARGET_PROMOTED_TYPE): Redefine.
17036         (TARGET_CONVERT_TO_TYPE): Redefine.
17037         (arm_fp16_format): Define.
17038         (all_fpus): Add entry for neon-fp16.
17039         (fp_model_for_fpu): Likewise.
17040         (struct fp16_format): Declare.
17041         (all_fp16_formats): Define.
17042         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
17043         functions.
17044         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
17045         and no ldrh.
17046         (arm_legitimate_index_p): Treat HFmode like HImode.
17047         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
17048         (coproc_secondary_reload_class): Special-case HFmode.
17049         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
17050         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
17051         (arm_init_fp16_builtins): New.
17052         (arm_init_builtins): Call it.
17053         (arm_invalid_parameter_type): New.
17054         (arm_invalid_return_type): New.
17055         (arm_promoted_type): New.
17056         (arm_convert_to_type).
17057         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
17058         format.
17059         (arm_emit_fp16_const): New function.
17060         (arm_mangle_type): Mangle __fp16 as "Dh".
17061         * config/arm/arm.h (TARGET_VFPD32): Make it know about
17062         FPUTYPE_NEON_FP16.
17063         (TARGET_NEON_FP16): New.
17064         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
17065         (enum fputype): Add FPUTYPE_NEON_FP16.
17066         (enum arm_fp16_format_type): Declare.
17067         (arm_fp16_format): Declare.
17068         (LARGEST_EXPONENT_IS_NORMAL): Define.
17069         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
17070         * config/arm/arm-modes.def (HFmode): Define.
17071         * config/arm/vfp.md (*movhf_vfp): New.
17072         (extendhfsf2): New.
17073         (truncsfhf2): New.
17074         * config/arm/arm.md (fpu): Add neon_fp16.
17075         (floatsihf2, floatdihf2): New.
17076         (fix_trunchfsi2, fix_trunchfdi2): New.
17077         (truncdfhf2): New.
17078         (extendhfdf2): New.
17079         (movhf): New.
17080         (*arm32_movhf): New.
17081         (*thumb1_movhf): New.
17082         (consttable_2): Add check for HFmode constants.
17083         (consttable_4): Handle HFmode constants.
17084
17085 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
17086
17087         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
17088
17089 2009-06-17  Olivier Hainque  <hainque@adacore.com>
17090
17091         * collect2.c (main): Use CONST_CAST2 to perform char ** to
17092         const char ** conversion in AIX specific section.
17093
17094 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
17095
17096         * config/i386/i386.c (ix86_special_builtin_type): Remove
17097         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
17098         (bdesc_special_args): Updated.
17099         (ix86_init_mmx_sse_builtins): Likewise.
17100         (ix86_expand_special_args_builtin): Likewise.
17101
17102 2009-06-17  Richard Henderson  <rth@redhat.com>
17103
17104         * tree-pretty-print.c (maybe_dump_asm_name): New.
17105         (dump_decl_name): Use it.
17106         (PRINT_FUNCTION_NAME): Merge into...
17107         (dump_function_name): ... here.  Use maybe_dump_asm_name.
17108
17109 2009-06-17  Cary Coutant  <ccoutant@google.com>
17110
17111         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
17112         Change caller.
17113         * debug.c (struct gcc_debug_hooks): Change placeholder for
17114         source_line hook.
17115         (debug_nothing_int_charstar_int): Replaced by...
17116         (debug_nothing_int_charstar_int_bool): ...this.
17117         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
17118         source_line prototype.
17119         (debug_nothing_int_charstar_int): Replaced by...
17120         (debug_nothing_int_charstar_int_bool): ...this.
17121         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
17122         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
17123         Output is_stmt operand when necessary.
17124         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
17125         (notice_source_line): Add is_stmt parameter.
17126         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
17127         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
17128         Change callers.
17129         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
17130         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
17131
17132 2009-06-17  Ian Lance Taylor  <iant@google.com>
17133
17134         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
17135         Change all uses.
17136         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
17137         call uses.
17138
17139 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
17140
17141         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
17142         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
17143         tree_strip_sign_nop_conversions and
17144         tree_ssa_strip_useless_type_conversions rather than stripping
17145         the operations here.
17146         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
17147         Declare them.
17148         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
17149         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
17150         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
17151         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
17152         functions.
17153
17154 2009-06-17  Michael Eager  <eager@eagercon.com>
17155
17156         * config/rs6000/constraints.md (register_constraint "d"): New.
17157         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
17158         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
17159         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
17160         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
17161         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
17162         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
17163         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
17164         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
17165         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
17166         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
17167         __fctiwz): Same.
17168         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
17169         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
17170         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
17171         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
17172         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
17173         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
17174         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
17175         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
17176         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
17177         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
17178         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
17179         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
17180         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
17181         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
17182
17183 2009-06-16  Ian Lance Taylor  <iant@google.com>
17184
17185         * profile.c (total_num_never_executed): Don't define.
17186         (compute_branch_probabilities): Don't count or print
17187         num_never_executed.
17188         (init_branch_prob): Don't set total_num_never_executed.
17189         (end_branch_prob): Don't print total_num_never_executed.
17190
17191 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
17192
17193         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
17194
17195 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
17196
17197         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
17198         (nabstd2_fpr): Same.
17199
17200 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
17201
17202         * expr.c (expand_assignment): Change complex type check.
17203
17204 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
17205
17206         * doc/plugins.texi (Building GCC plugins): Added new section.
17207
17208 2009-06-17  Ian Lance Taylor  <iant@google.com>
17209
17210         * c-pch.c (get_ident): Don't set size of templ array.
17211         (pch_init): Don't set size of partial_pch array.
17212
17213         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
17214         string constant to intialize an array whose size is the length of
17215         the string.
17216
17217 2009-06-17  Richard Guenther  <rguenther@suse.de>
17218
17219         PR tree-optimization/40389
17220         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
17221         to addressable types.
17222         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
17223
17224 2009-06-17  Richard Guenther  <rguenther@suse.de>
17225
17226         PR middle-end/40460
17227         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
17228         if there is no evolution of left in the loop bail out.
17229         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
17230         chrec_fold_multiply.
17231
17232 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
17233             Janis Johnson  <janis187@us.ibm.com>
17234
17235         PR target/39254
17236         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
17237         for the symbol ref of a constant that is the source of a move
17238         - nor for any other not-obvious-label-ref constants.
17239
17240 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
17241
17242         * plugin.c (position_pass): Skip newly inserted pass during list
17243         traversal to avoid repeated insertion.
17244
17245 2009-06-16  Ian Lance Taylor  <iant@google.com>
17246
17247         * vec.h (VEC_stack_alloc): Define different version if
17248         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
17249         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
17250         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
17251         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
17252
17253 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
17254
17255         * config.gcc (extra_headers): Add ia32intrin.h for x86.
17256
17257         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
17258         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
17259         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
17260         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
17261         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
17262         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
17263         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
17264         (bdesc_special_args): Add __builtin_ia32_rdtsc and
17265         __builtin_ia32_rdtscp.
17266         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
17267         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
17268         and __builtin_ia32_rorhi.
17269         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
17270         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
17271         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
17272         (ix86_expand_args_builtin): Likewise.
17273         (ix86_expand_special_args_builtin): Likewise.
17274
17275         * config/i386/i386.md (UNSPECV_RDTSCP): New.
17276         (UNSPECV_RDTSC): Likewise.
17277         (UNSPECV_RDPMC): Likewise.
17278         (*bsr): Renamed to ...
17279         (bsr): This
17280         (*bsr_rex64): Renamed to ...
17281         (bsr_rex64): This.
17282         (rdpmc): New.
17283         (*rdpmc): Likewise.
17284         (*rdpmc_rex64): Likewise.
17285         (rdtsc): Likewise.
17286         (*rdtsc): Likewise.
17287         (*rdtsc_rex64): Likewise.
17288         (rdtscp): Likewise.
17289         (*rdtscp): Likewise.
17290         (*rdtscp_rex64): Likewise.
17291
17292         * config/i386/ia32intrin.h: New.
17293
17294         * config/i386/x86intrin.h: Include <ia32intrin.h>.
17295
17296 2009-06-16  Ian Lance Taylor  <iant@google.com>
17297
17298         * ira-build.c (copy_info_to_removed_store_destinations):
17299         Initialize parent_a.
17300
17301 2009-06-16  Ian Lance Taylor  <iant@google.com>
17302
17303         * c-decl.c (grokdeclarator): Change size_varies to bool.
17304
17305 2009-06-16  Ian Lance Taylor  <iant@google.com>
17306
17307         * sel-sched.c: Make forward declarations of move_op_hooks and
17308         fur_hooks explicitly extern.
17309
17310 2009-06-16  Ian Lance Taylor  <iant@google.com>
17311
17312         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
17313         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
17314
17315 2009-06-16  Ian Lance Taylor  <iant@google.com>
17316
17317         * resource.c (mark_referenced_resources): Change
17318         include_delayed_effects parameter to bool.  Change all callers.
17319         (mark_end_of_function_resources): Likewise.
17320         * reorg.c (insn_references_resource_p): Likewise.
17321         (insn_sets_resource_p): Likewise.
17322         * resource.h (mark_referenced_resources): Update declaration.
17323         (mark_end_of_function_resources): Update declaration.
17324
17325 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
17326
17327         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
17328
17329 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
17330
17331         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
17332         GCC can bootstrap on AIX with GNU Binutils 2.20.
17333
17334 2009-06-16  Ian Lance Taylor  <iant@google.com>
17335
17336         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
17337
17338 2009-06-16  Ian Lance Taylor  <iant@google.com>
17339
17340         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
17341         inline, not extern inline.
17342         (exact_log2): Likewise.
17343         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
17344         test CLZ_HWI.
17345         (exact_log2): Likewise, but don't test CTZ_HWI.
17346
17347 2009-06-16  Ian Lance Taylor  <iant@google.com>
17348
17349         * bitmap.c (bitmap_clear): Don't declare as inline.
17350         * gimple.c (gimplify_assign): Likewise.
17351         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
17352         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
17353         (sched_scan_info): Remove duplicate definition.
17354
17355 2009-06-16  Ian Lance Taylor  <iant@google.com>
17356
17357         * c-common.c (skip_evaluation): Don't define.
17358         (c_inhibit_evaluation_warnings): Define global variable.
17359         (overflow_warning): Check c_inhibit_evaluation_warnings rather
17360         than skip_evaluation.
17361         (convert_and_check, warn_for_div_by_zero): Likewise.
17362         * c-common.h (skip_evaluation): Don't declare.
17363         (c_inhibit_evaluation_warnings): Declare.
17364         * c-parser.c (c_parser_typeof_specifier): Set
17365         c_inhibit_evaluation_warnings rather than skip_evaluation.
17366         (c_parser_conditional_expression): Likewise.
17367         (c_parser_binary_expression): Likewise.
17368         (c_parser_sizeof_expression): Likewise.
17369         (c_parser_alignof_expression): Likewise.
17370         * c-typeck.c (build_indirect_ref): Check
17371         c_inhibit_evaluation_warnings rather than skip_evaluation.
17372         (build_conditional_expr, build_binary_op): Likewise.
17373
17374 2009-06-16  Richard Guenther  <rguenther@suse.de>
17375
17376         * tree-ssa-alias.c (is_escape_site): Remove.
17377         * tree-ssa-alias.h (enum escape_type): Remove.
17378         (is_escape_site): Likewise.
17379         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
17380         via casts and asms without deferring to is_escape_site.
17381
17382 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
17383
17384         PR middle-end/40446
17385         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
17386         use gen_lowpart if op0 has complex mode.
17387
17388 2009-06-16  Richard Guenther  <rguenther@suse.de>
17389
17390         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
17391         variables add them to ESCAPED.
17392         (find_func_aliases): Do not make all indirectly stored values escaped.
17393
17394 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
17395
17396         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
17397         make_decl_one_only.
17398
17399 2009-06-16  Martin Jambor  <mjambor@suse.cz>
17400
17401         PR tree-optimization/40432
17402         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
17403         check whether we need to force gimple register operand.
17404
17405 2009-06-16  Martin Jambor  <mjambor@suse.cz>
17406
17407         PR tree-optimization/40413
17408         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
17409         build_ref_for_offset.
17410         (propagate_subacesses_accross_link): Fix a typo in a comment.
17411
17412 2009-06-16  Ira Rosen  <irar@il.ibm.com>
17413
17414         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
17415         with additional parameter.
17416         * tree-vectorizer.h (enum vect_def_type): Add new value
17417         vect_nested_cycle.
17418         (enum vect_relevant): Add comments.
17419         (vect_is_simple_reduction): Add new argument.
17420         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
17421         Detect nested cycles.
17422         (vect_is_simple_reduction): Update documentation, add an argument to
17423         distinguish inner-loop reduction from nested cycle, detect nested
17424         cycles, fix printings and indentation, don't swap operands in case
17425         of nested cycle.
17426         (get_initial_def_for_reduction): Handle subtraction.
17427         (vect_create_epilog_for_reduction): Add new argument to specify
17428         reduction variable.
17429         (vect_finalize_reduction): Handle subtraction, fix comments.
17430         (vectorizable_reduction): Handle nested cycles. In case of nested
17431         cycle keep track of the reduction variable position. Call
17432         vect_is_simple_reduction with additional parameter. Use original
17433         statement code in reduction epilogue for nested cycle. Call
17434         vect_create_epilog_for_reduction with additional parameter.
17435         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
17436         inner-loop vectorization.
17437         (vect_recog_widen_sum_pattern): Likewise.
17438         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
17439         and reductions.
17440         (vect_mark_stmts_to_be_vectorized): Likewise.
17441         (vect_get_vec_def_for_operand): Handle nested cycles.
17442
17443 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17444
17445         * doc/invoke.texi (Debugging Options): Fix option index entries
17446         for -fdump-statistics, -frandom-seed add entries for
17447         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
17448         (FRV Options): Fix entries for -mTLS, -mtls.
17449         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
17450         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
17451         (M68hc1x Options): Fix @itemx for -mnominmax.
17452         (MCore Options): Fix entry for -mno-lsim.
17453         (MMIX Options): Fix entry for -mabi=mmixware.
17454         (PDP-11 Options): Fix entry for -mbcopy-builtin.
17455
17456 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
17457
17458         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
17459         Mention the plugin mode of gengtype.
17460         * doc/gty.texi (Source Files Containing Type Information): Likewise.
17461         * gengtype.c: Updated copyright.
17462         (plugin_files, nb_plugin_files) Added new static variables.
17463         (measure_input_list) Care about plugin_files.
17464         (write_rtx_next): Added early return in plugin mode.
17465         (create_file): Updated copyright year in generated file. Added
17466         asserts.
17467         (oprintf): Added early return if NULL outf.
17468         (get_output_file_with_visibility): Care of plugin_files.
17469         (get_output_file_name): May return null.
17470         (write_local): Added early return.
17471         (put_mangled_filename): Ditto.
17472         (finish_root_table): Added check for base_files.
17473         (write_roots): Care about null when plugins.
17474         (main): Added plugin mode.
17475
17476 2009-06-15  Ian Lance Taylor  <iant@google.com>
17477
17478         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
17479         * gcov.c (read_count_file): Add braces around variables declared
17480         before label.
17481
17482         * c.opt (Wjump-misses-init): New warning.
17483         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
17484         -Wall and -Wc++-compat if not already set.
17485         (c_common_post_options): Clear warn_jump_misses_init if it was not
17486         set.
17487         * c-decl.c (struct c_binding): Change type field to a union with
17488         new label field.  Make it the first field in the struct.  Update
17489         references to type to use u.type instead.
17490         (struct c_spot_bindings): Define.
17491         (struct c_goto_bindings): Define.
17492         (c_goto_bindings_p): Define, along with VECs.
17493         (struct c_label_vars): Define.
17494         (struct c_scope): Add has_label_bindings field.
17495         (bind_label, set_spot_bindings): New static functions.
17496         (decl_jump_unsafe, update_spot_bindings): New static functions.
17497         (update_label_decls): New static function.
17498         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
17499         Update binding u.label field to shadowed field.
17500         (c_binding_start_stmt_expr): New function.
17501         (c_binding_end_stmt_expr): New function.
17502         (pushdecl): Don't call c_begin_vm_scope.
17503         (make_label): Add defining and p_label_vars parameters.  Change
17504         all callers.
17505         (lookup_label): Correct test for whether a label has not yet been
17506         defined.  Call bind_label rather than bind.
17507         (warn_about_goto): New static function.
17508         (lookup_label_for_goto): New function.
17509         (declare_label): Call bind_label rather than bind.
17510         (check_earlier_gotos): New static function.
17511         (define_label): Don't give errors about jumping into statement
17512         expressions or scopes of variably modified types.  Call
17513         set_spot_bindings and check_earlier_gotos.  Call bind_label
17514         instead of bind.  Don't set label_context_stack_se or
17515         label_context_stack_vm.
17516         (c_get_switch_bindings): New function.
17517         (c_release_switch_bindings): New function.
17518         (c_check_switch_jump_warnings): New function.
17519         (start_function): Don't set label_context_stack_se or
17520         label_context_stack_vm.
17521         (finish_function): Likewise.
17522         * c-typeck.c (label_context_stack_se): Don't define.
17523         (label_context_stack_vm): Don't define.
17524         (c_finish_goto_label): Call lookup_label_for_goto rather than
17525         lookup_label.  Don't give errors about jumping into a statement
17526         expression or the scope of a variably modified type.  Don't set
17527         label_context_stack_se or label_context_stack_vm.
17528         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
17529         fields.  Add bindings field.
17530         (c_start_case): Don't set deleted fields.  Set bindings field.
17531         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
17532         or blocked_vm.  Call c_check_switch_jump_warnings.
17533         (c_finish_case): Don't test blocked_stmt_expr field.  Call
17534         c_release_switch_bindings.
17535         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
17536         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
17537         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
17538         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
17539         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
17540         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
17541         (c_begin_vm_scope, c_end_vm_scope): Don't define.
17542         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
17543         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
17544         (C_DECL_UNJUMPABLE_VM): Don't define.
17545         (C_DECL_UNDEFINABLE_VM): Don't define.
17546         (struct c_label_list): Don't define.
17547         (struct c_label_context_se): Don't define.
17548         (struct c_label_context_vm): Don't define.
17549         (struct c_spot_bindings): Declare.
17550         (c_bindings_start_stmt_expr): Declare.
17551         (c_bindings_end_stmt_expr): Declare.
17552         (lookup_label_for_goto): Declare.
17553         (c_get_switch_bindings, c_release_switch_bindings): Declare.
17554         (c_check_switch_jump_warnings): Declare.
17555         (label_context_stack_se, label_context_stack_vm): Don't declare.
17556         (c_finish_goto_label): Update declaration.
17557         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
17558         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
17559         (Warning Options): Document -Wjump-misses-init.
17560
17561 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
17562
17563         * tree-object-size.c (addr_object_size): Fix a pasto in the last
17564         change.
17565
17566 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
17567
17568         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
17569
17570 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
17571
17572         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
17573
17574 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
17575
17576         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
17577
17578 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
17579
17580         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
17581         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
17582         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
17583         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
17584         * dwarf2asm.c (dw2_force_const_mem): Update call to
17585         make_decl_one_only.
17586         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
17587         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
17588         * langhooks.c (lhd_comdat_group): Remove.
17589         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
17590         * tree.h (DECL_COMDAT_GROUP): New.
17591         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
17592         (tree_decl_with_vis): Add comdat_group. Remove one_only.
17593         (make_decl_one_only): Change signature.
17594         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
17595         make_decl_one_only.
17596         (make_decl_one_only): Change signature.
17597         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
17598
17599 2009-06-15  Richard Guenther  <rguenther@suse.de>
17600
17601         PR middle-end/40439
17602         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
17603
17604 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
17605
17606         * tree-ssa-math-opts.c: Remove extra divide.
17607
17608 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
17609
17610         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
17611
17612 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
17613
17614         * passes.c: Add bswap pass.
17615         * tree-pass.h: Add pass_optimize_bswap declaration.
17616         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
17617         Include rtl.h, expr.h and optabs.h for optab_handler check.
17618         (struct symbolic_number, pass_optimize_bswap): New definition.
17619         (do_shift_rotate, verify_symbolic_number_p): New functions.
17620         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
17621         (gate_optimize_bswap): New function.
17622         * tree.c (widest_int_cst_value): New function.
17623         * tree.h (widest_int_cst_value): Prototype added.
17624
17625 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
17626
17627         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
17628         REG_EQUAL/REG_EQUIV notes.
17629
17630 2009-06-14  Richard Guenther  <rguenther@suse.de>
17631
17632         PR middle-end/40389
17633         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
17634         has its address taken if NRV was applied and it is addressable.
17635         * tree-ssa-structalias.c (get_constraint_for_address_of): New
17636         function split out from ...
17637         (get_constraint_for_1): ... here.
17638         (handle_rhs_call): Use it to mark the return slot escaped if
17639         it is addressable and NRV was applied.
17640
17641 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
17642
17643         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
17644         Change first argument type to location_t.
17645         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
17646         Do not set input_location.
17647         Use loc instead of input_location throughout.
17648
17649 2009-06-13  Richard Guenther  <rguenther@suse.de>
17650
17651         PR tree-optimization/40421
17652         * tree-predcom.c (should_unroll_loop_p): Remove.
17653         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
17654
17655 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
17656
17657         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
17658         Add location argument.
17659
17660 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
17661
17662         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
17663         build_decl.
17664         * config/s390/s390.c (s390_build_builtin_va_list): Same.
17665         (s390_gimplify_va_arg): Pass location to create_artificial_label.
17666         * config/spu/spu-protos.h: Add location to
17667         spu_resolve_overloaded_builtin.
17668         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
17669         spu_build_builtin_va_list.
17670         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
17671         argument.  Pass location to build_function_call_vec.
17672         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
17673         build_decl.
17674         (emit_fpu_switch): Same.
17675         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
17676         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
17677         to build_decl and create_artificial_label.
17678         (xtensa_gimplify_va_arg_expr): Same.
17679         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
17680         (xstormy16_gimplify_va_arg_expr): Same.
17681         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
17682         * config/arm/arm.c (arm_build_builtin_va_list): Same.
17683         * config/mips/mips.c (mips_build_builtin_va_list): Same.
17684         (mips16_build_function_stub): Same.
17685         (mips16_build_call_stub): Same.
17686
17687 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
17688
17689         PR target/40327
17690         * arm/constraints.md (Pa, Pb): New constraints.
17691         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
17692         split pattern to deal with them.
17693
17694 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
17695
17696         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
17697         fix index entry for -Xpreprocessor.
17698
17699 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
17700
17701         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
17702         Add location argument to build_decl call.
17703         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
17704         (rs6000_init_builtins): Same.
17705         (spe_init_builtins): Same.
17706         (rs6000_gimplify_va_arg): Add location argument to
17707         create_artificial_label call.
17708
17709 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
17710
17711         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
17712         * combine-stack-adj.c (pass_stack_adjustments): Use it.
17713         * Makefile.in: Fix GGC dependency for gcse.o.
17714
17715 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
17716
17717         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
17718         * gimple-pretty-print.c (dump_gimple_stmt): Same.
17719         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
17720         created.
17721         * c-parser.c (c_parser_binary_expression): Use current column while
17722         building binary operations.
17723         * common.opt (fshow-column): Enable by default.
17724         * tree-vrp.c (check_array_ref): Use warning_at.
17725         (check_array_bounds): Use location from call back if expr has no
17726         location.
17727         * tree.h: Add location argument to maybe_fold_*.
17728         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
17729         (maybe_fold_offset_to_array_ref): Add location argument and use it.
17730         (maybe_fold_offset_to_component_ref): Same.
17731         (maybe_fold_offset_to_reference): Same.
17732         (maybe_fold_offset_to_address): Same.
17733         (maybe_fold_stmt_indirect): Same.
17734         (maybe_fold_stmt_addition): Same.
17735         (fold_stmt_r): Pass location to maybe_fold_*.
17736         (fold_gimple_assign): Same.
17737         * c-tree.h: Add location argument to finish_decl,
17738         default_function_array_conversion, store_init_value.
17739         * c-decl.c (define_label): Use error_at.
17740         (c_make_fname_decl): Pass location to finish_decl.
17741         (finish_decl): New location argument.
17742         (build_compound_literal): Pass location to store_init_value.
17743         (grokdeclarator): Pass location to finish_decl.
17744         (grokfield): Same.
17745         * c-typeck.c (array_to_pointer_conversion): New location argument.
17746         (function_to_pointer_conversion): Same.
17747         (default_function_array_conversion): Same.
17748         (parser_build_unary_op): Pass location to overflow_warning.
17749         (parser_build_binary_op): Same.  Use warning_at.
17750         (build_unary_op): Pass location to array_to_pointer_conversion.
17751         (build_c_cast): Pass location to digest_init.
17752         (build_modify_expr): New location argument.
17753         (convert_for_assignment): Same.
17754         (store_init_value): Same.
17755         (digest_init): Same.
17756         (output_init_element): Pass location to digest_init and
17757         array_to_pointer_conversion.
17758         (c_finish_return): Pass location to convert_for_assignment.
17759         * gimplify.c (gimplify_conversion): Pass location to
17760         maybe_fold_offset_to_address.
17761         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
17762         to maybe_fold_stmt_addition.
17763         * c-omp.c (c_finish_omp_atomic): Pass new location to
17764         build_modify_expr.
17765         (c_finish_omp_for): Same.
17766         * c-common.c (overflow_warning): New argument.
17767         * c-common.h: New argument to build_modify_expr, overflow_warning.
17768         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
17769         finish_decl.
17770         (c_parser_initializer): Pass location to
17771         default_function_array_conversion.
17772         (c_parser_initelt): Same.
17773         (c_parser_initval): Same.
17774         (c_parser_asm_operands): Same.
17775         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
17776         (c_parser_conditional_expression): Same.
17777         (c_parser_binary_expression): Add location info to stack.  Use it.
17778         (c_parser_unary_expression): Pass location to
17779         default_function_array_conversion, parser_build_unary_op,
17780         build_indirect_ref, c_parser_postfix_expression_after_primary.
17781         (c_parser_postfix_expression_after_primary): New location argument.
17782         Use it.
17783         (c_parser_expression_conv): Pass location to
17784         default_function_array_conversion.
17785         (c_parser_expr_list): Same.
17786         (c_parser_omp_atomic): Same.
17787         (c_parser_omp_for_loop): Same.
17788         * c-tree.h (struct c_declarator): Add comment to id_loc.
17789         (build_array_declarator): New argument.
17790         * c-decl.c (build_array_declarator): Add location argument.
17791         (grokdeclarator): Set id_loc for cdk_array.
17792         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
17793         build_array_declarator.
17794         * tree.c (build_omp_clause): Add location argument.
17795         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
17796         (OMP_CLAUSE_LOCATION): New macro.
17797         (struct tree_omp_clause): Add location field.
17798         (build_omp_clause): Add argument.
17799         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
17800         build_omp_clause.
17801         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
17802         (cp_parser_omp_clause_collapse): Same.
17803         (cp_parser_omp_clause_default): Same.
17804         (cp_parser_omp_clause_if): Same.
17805         (cp_parser_omp_clause_nowait): Same.
17806         (cp_parser_omp_clause_num_threads): Same.
17807         (cp_parser_omp_clause_ordered): Same.
17808         (cp_parser_omp_clause_schedule): Same.
17809         (cp_parser_omp_clause_untied): Same.
17810         (cp_parser_omp_for_loop): Same.
17811         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
17812         * c-tree.h (c_start_case): Add location argument.
17813         (c_process_expr_stmt): Same.
17814         (c_finish_goto_*): Same.
17815         * tree-parloops.c (initialize_reductions): Pass location to
17816         build_omp_clause.
17817         (create_parallel_loop): Same.
17818         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
17819         (gfc_trans_omp_reduction_list): Same.
17820         (gfc_trans_omp_clauses): Same.
17821         (gfc_trans_omp_do): Same.
17822         * c-typeck.c (c_finish_goto_label): Same.
17823         (c_finish_goto_ptr): New location argument.
17824         (c_start_case): Same.
17825         (emit_side_effect_warnings): Same.
17826         (c_process_expr_stmt): Same.
17827         (c_finish_stmt_expr): Same.
17828         (c_finish_omp_clauses): Use error_at instead of error.
17829         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
17830         build_omp_clause.
17831         * c-omp.c (c_split_parallel_clauses): New location argument.
17832         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
17833         to build_omp_clause.
17834         (convert_local_reference_stmt): Same.
17835         (convert_gimple_call): Same.
17836         * c-common.h (c_split_parallel_clauses): New argument.
17837         * c-parser.c (c_parser_statement_after_labels): Pass location to
17838         c_finish_goto_label.
17839         (c_parser_switch_statement): Pass location to c_start_case.
17840         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
17841         and c_process_expr_stmt.
17842         (c_parser_omp_variable_list): Add location argument.
17843         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
17844         (c_parser_omp_clause_default): Same.
17845         (c_parser_omp_clause_if): Same.
17846         (c_parser_omp_clause_num_threads): Same.
17847         (-c_parser_omp_clause_ordered): Same.
17848         (c_parser_omp_clause_reduction): Pass location to
17849         c_parser_omp_variable_list.
17850         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
17851         (c_parser_omp_clause_untied): Same.
17852         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
17853         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
17854
17855         * c-tree.h (check_for_loop_decls, undeclared_variable,
17856         build_component_ref, build_array_ref, build_external_ref,
17857         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
17858         build_conditional_expr, build_compound_expr, c_cast_expr,
17859         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
17860         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
17861         argument.
17862         * c-semantics.c (build_stmt): Same.
17863         (build_case_label): Same.
17864         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
17865         (undeclared_variable): New argument.
17866         (make_label): Same.
17867         (lookup_label): Pass location on down.
17868         (define_label): Same.
17869         (finish_decl): Same.
17870         (build_compound_literal): Same.
17871         (finish_struct): Same.
17872         (finish_function): Do not set location here.
17873         (check_for_loop_decls): New argument.
17874         * tree.c (save_expr): Set location.
17875         (build_empty_stmt): New argument.
17876         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
17877         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
17878         * builtins.c (gimplify_va_arg_expr): Use locations.
17879         (expand_builtin_sync_operation): Same.
17880         * c-typeck.c (build_component_ref): New argument.
17881         (build_array_ref): Same.
17882         (build_external_ref): Same.
17883         (c_expr_sizeof_expr): Same.
17884         (c_expr_sizeof_type): Same.
17885         (parser_build_unary_op): Same.
17886         (build_conditional_expr): Same.
17887         (build_compound_expr): Pass location on down.
17888         (build_compound_expr): New argument.
17889         (build_c_cast): Same.
17890         (c_cast_expr): Same.
17891         (build_asm_expr): Same.
17892         (c_finish_return): Same.
17893         (c_process_expr_stmt): Pass location on down.
17894         (c_finish_stmt_expr): New argument.
17895         (push_clenaup): Same.
17896         (c_finish_omp_parallel): Same.
17897         (c_finish_omp_task): Same.
17898         * gimplify.c (gimplify_call_expr): Pass location on down.
17899         * c-omp.c (c_finish_omp_master): New argument.
17900         (c_finish_omp_critical): Same.
17901         (c_finish_omp_ordered): Same.
17902         (c_finish_omp_barrier): Same.
17903         (-c_finish_omp_taskwait): Same.
17904         (c_finish_omp_atomic): Same.
17905         (c_finish_omp_flush): Same.
17906         * tree-inline.c (copy_tree_body_r): Pass location on down.
17907         (inline_forbidden_p): Remove use of input_location.
17908         * c-gimplify.c (c_build_bind_expr): New argument.
17909         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
17910         (c_sizeof_or_alignof_type): New argument.
17911         (c_alignof_expr): Same.
17912         (build_va_arg): Same.
17913         (c_add_case_label): Same.
17914         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
17915         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
17916         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
17917         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
17918         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
17919         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
17920         New argument.
17921         * stub-objc.c (objc_build_selector_expr): Same.
17922         (objc_build_throw_stmt): Same.
17923         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
17924         (c_parser_initelt): Same.
17925         (c_parser_compound_statement): Same.
17926         (c_parser_compound_statement_nostart): Same.
17927         (c_parser_label): Same.
17928         (c_parser_statement_after_labels): Same.
17929         (c_parser_if_body): Same.
17930         (c_parser_else_body): Same.
17931         (c_parser_if_statement): Same.
17932         (c_parser_switch_statement): Same.
17933         (c_parser_while_statement): Same.
17934         (c_parser_do_statement): Same.
17935         (c_parser_for_statement): Same.
17936         (c_parser_asm_statement): Same.
17937         (c_parser_conditional_expression): Same.
17938         (c_parser_binary_expression): Same.
17939         (c_parser_cast_expression): Same.
17940         (c_parser_unary_expression): Same.
17941         (c_parser_sizeof_expression): Same.
17942         (c_parser_alignof_expression): Same.
17943         (c_parser_postfix_expression): Same.
17944         (c_parser_expression): Same.
17945         (c_parser_objc_receiver): Same.
17946         (c_parser_omp_variable_list): Same.
17947         (c_parser_omp_structured_block): Same.
17948         (c_parser_omp_atomic): New argument.
17949         (c_parser_omp_barrier): Same.
17950         (c_parser_omp_critical): Same.
17951         (c_parser_omp_flush): Pass location on down.
17952         (c_parser_omp_for_loop): New argument.
17953         (c_parser_omp_for): Same.
17954         (c_parser_omp_master): Same.
17955         (c_parser_omp_ordered): Same.
17956         (c_parser_omp_sections_scope): Same.
17957         (c_parser_omp_sections): Same.
17958         (c_parser_omp_parallel): Same.
17959         (c_parser_omp_single): Same.
17960         (c_parser_omp_task): Same.
17961         (c_parser_omp_taskwait): Pass location on down.
17962         (c_parser_omp_construct): Same.
17963         (c_parser_omp_threadprivate): Same.
17964         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
17965         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
17966         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
17967         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
17968         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
17969         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
17970         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
17971         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
17972         config/i386/i386.c, stmt.c:
17973         Add location argument to the following function definitions and/or
17974         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
17975         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
17976         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
17977         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
17978         do_case, c_finish_bc_stmt, build_compound_literal,
17979         build_function_call.
17980         * c-decl.c (build_compound_literal): Add location argument.
17981         Make all diagnostic calls use location.
17982         (start_struct): Same.
17983         (finish_struct): Same.
17984         (start_enum): Same.
17985         (build_enumerator): Same.
17986         (start_function): Same.
17987         (grokdeclarator): Make all diagnostic calls use location.
17988         (store_parm_decls_oldstyle): Same.
17989         * c-typeck.c (build_function_call): Add location argument.
17990         Make all diagnostic calls use location.
17991         (do_case): Same.
17992         (c_finish_bc_stmt): Same.
17993         * tree-nested.c (get_trampoline_type): Add argument.
17994         Pass location to build_decl.
17995         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
17996         * rtl.h (RTL_LOCATION): New.
17997         * c-common.c (c_add_case_label): Add location argument.
17998         Make all diagnostic calls use location.
17999         * c-common.h: Add location argument to make_fname_decl, do_case,
18000         c_add_case_label, build_function_call, resolve_overloaded_builtin.
18001         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
18002         Set it appropriately for every case.  Pass enum_loc to start_enum
18003         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
18004         parser_xref_tag.
18005         (c_parser_struct_or_union_specifier): Save location.  Use it for
18006         start_struct, finish_struct, and parser_xref_tag.
18007
18008 2009-06-12  Ian Lance Taylor  <iant@google.com>
18009
18010         * fold-const.c (fold_unary): Rename local variable and to and_expr.
18011
18012         * c-opts.c (c_common_handle_option): For -Wc++-compat set
18013         cpp_opts->warn_cxx_operator_names.
18014
18015 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18016
18017         PR tree-opt/38865
18018         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
18019         is returns NULL and OP is a VCE, look through the VCE.
18020
18021 2009-06-12  Ian Lance Taylor  <iant@google.com>
18022
18023         PR bootstrap/40430
18024         * collect2.c (main): Use CONST_CAST2 in code inside #if
18025         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
18026
18027 2009-06-12  Joey Ye  <joey.ye@intel.com>
18028
18029         PR middle-end/39146
18030         * cfgexpand.c (get_decl_align_unit): Update
18031         max_used_stack_slot_alignment with align instead of
18032         stack_alignment_needed.
18033
18034         * function.c (assign_stack_local_1): Update
18035         max_used_stack_slot_alignment with alignment_in_bits instead
18036         of stack_alignment_needed.
18037         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
18038         here.
18039
18040 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
18041
18042         * dwarf2out.c (last_var_location_insn): New variable.
18043         (dwarf2out_end_epilogue): Clear last_var_location_insn.
18044         (dwarf2out_var_location): Don't record anything after last real
18045         insn.  Only change labels if there were any real instructions
18046         in between last note and this one, or if changed sections.
18047
18048 2009-06-11  Richard Henderson  <rth@redhat.com>
18049
18050         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
18051         note when storing the frame pointer in a register.
18052         (FRP): Don't redefine to nothing for epilogue.
18053         (alpha_expand_epilogue): Mark register and sp restores.
18054         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
18055
18056         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
18057         when gen_lowpart is needed.
18058
18059 2009-06-11  Richard Henderson  <rth@redhat.com>
18060
18061         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
18062
18063         * dwarf2out.c (need_data_align_sf_opcode): New.
18064         (div_data_align): Move earlier.
18065         (def_cfa_1, reg_save): Use it.
18066
18067 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
18068
18069         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
18070         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
18071         (ix86_handle_option): Handle OPT_mcrc32.
18072         (ix86_target_string): Add -mcrc32.
18073         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
18074
18075         * config/i386/i386.h (TARGET_CRC32): New.
18076
18077         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
18078         (sse4_2_crc32di): Likewise.
18079
18080         * config/i386/i386.opt (mcrc32): New.
18081
18082         * doc/invoke.texi: Document -mcrc32.
18083
18084 2009-06-11  Richard Henderson  <rth@redhat.com>
18085
18086         * common.opt (gdwarf-): Accept a version number.
18087         * doc/invoke.texi (gdwarf-): Update docs.
18088         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
18089         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
18090         version level, and record it.
18091
18092         * dwarf2.h (DW_CIE_VERSION): Remove.
18093         * dwarf2out.c (DWARF_VERSION): Remove.
18094         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
18095         (output_call_frame_info): Use CIE version 3 for dwarf3,
18096         or if the return register column is out of range for version 1.
18097         (dwarf_stack_op_name): Add all dwarf3 values.
18098         (DEBUG_PUBTYPES_SECTION): New.
18099         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
18100         encoding change for dwarf3.
18101         (output_die) [dw_val_class_die_ref]: Likewise.
18102         (output_compilation_unit_header): Emit correct version for dwarf3.
18103         (output_line_info): Likewise.
18104         (output_pubnames): Update for DWARF_VERSION removal.
18105         (output_aranges): Likewise.
18106         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
18107         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
18108         (dwarf2out_finish): Likewise.
18109
18110 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
18111
18112         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
18113         in r148403.
18114
18115 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
18116
18117         PR c/39252
18118         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
18119         * builtins.c (expand_builtin_unreachable): New function.
18120         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
18121         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
18122         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
18123         successors.
18124         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
18125         searching for missing barriers.
18126
18127 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
18128
18129         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
18130         when -fprofile-generate* was passed.
18131         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
18132
18133 2009-06-11  Anthony Green  <green@moxielogic.com>
18134
18135         * config/moxie/moxie.md: Define length attribute for all instructions.
18136         (rCC): Define.
18137         (*b<cond:code>): Support limited branch ranges for new PC-relative
18138         branch instructions.
18139         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
18140
18141 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
18142
18143         * config/i386/i386.c (min_insn_size): Use get_attr_length
18144         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
18145         For __asm return 0.
18146
18147         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
18148         instead of emit_insn_before.
18149
18150 2009-06-10  Ian Lance Taylor  <iant@google.com>
18151
18152         PR bootstrap/40408
18153         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
18154         GIMPLE_SWITCH.
18155
18156 2009-06-10  Revital Eres  <eres@il.ibm.com>
18157
18158         * passes.c (init_optimization_passes): Reschedule
18159         predictive-commoning pass before complete unroll pass.
18160
18161 2009-06-10  Martin Jambor  <mjambor@suse.cz>
18162
18163         * cgraph.c (cgraph_node_can_be_local_p): New function.
18164         (cgraph_make_node_local): New function.
18165         * cgraph.h (cgraph_node_can_be_local_p): Declare.
18166         (cgraph_make_node_local): Declare.
18167
18168 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
18169
18170         * tree.h (tree_base): Add packed_flag and user_align fields.
18171         Decrease size of spare field.
18172         (TYPE_USER_ALIGN): Use user_align from tree_base.
18173         (DECL_USER_ALIGN): Likewise.
18174         (TYPE_PACKED): Use packed_flag from tree_base.
18175         (DECL_PACKED): Likewise.
18176         (tree_type): Delete packed_flag and user_align fields.  Widen
18177         precision field.  Widen mode field and shuffle fields to align
18178         mode on an 8-bit boundary.
18179         (tree_decl_common): Delete decl_flag_1 and user_align fields.
18180         Renumber decl_flag_* fields.  Fix comments.  Widen
18181         decl_common_unused field.
18182         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
18183         (DECL_EXTERNAL): Likewise.
18184         (DECL_BIT_FIELD): Likewise.
18185         (DECL_NONADDRESSABLE_P): Likewise.
18186         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
18187         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
18188
18189 2009-06-10  Ian Lance Taylor  <iant@google.com>
18190
18191         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
18192         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
18193         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
18194         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
18195         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
18196         DEF_VEC_ALLOC_FUNC_P.
18197         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
18198         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
18199         DEF_VEC_ALLOC_FUNC_O.
18200         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
18201         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
18202         DEF_VEC_ALLOC_FUNC_I.
18203         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
18204         (vec_stack_p_reserve_exact_1): Declare.
18205         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
18206         (vec_stack_free): Declare.
18207         (VEC_stack_alloc): Define.
18208         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
18209         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
18210         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
18211         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
18212         for void_p.
18213         (stack_vecs): New static variable.
18214         (vec_stack_p_reserve_exact_1): New function.
18215         (vec_stack_o_reserve_1): New static function.
18216         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
18217         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
18218         (vec_stack_free): New function.
18219         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
18220         (VEC_df_ref_stack_alloc): Define.
18221         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
18222         DEF_VEC_ALLOC_P_STACK.
18223         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
18224         (struct df_collection_rec): Change _vec fields to VEC.  Remove
18225         _use fields.
18226         (df_free_collection_rec): Adjust for new fields.
18227         (df_insn_rescan): Use new df_collection_rec fields.
18228         (df_notes_rescan, df_canonize_collection_rec): Likewise.
18229         (df_ref_create_structure, df_ref_record): Likewise.
18230         (df_get_conditional_uses, df_get_call_refs): Likewise.
18231         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
18232         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
18233         (df_record_exit_block_uses, df_bb_verify): Likewise.
18234         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
18235         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
18236         Remove count parameter.  Change return type to void.  Change all
18237         callers.
18238         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
18239         Remove count parameter.  Change return type to void.  Change all
18240         callers.
18241         (df_install_refs): Change old_vec parameter to VEC.  Remove count
18242         parameter.  Change all callers.
18243         (df_install_mws): Change old_vec parameter to VEC.  Remove count
18244         parameter.  Change all callers.
18245         (df_refs_verify): Change new_rec parameter to VEC.  Change call
18246         callers.
18247         (df_mws_verify): Likewise.
18248
18249 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
18250
18251         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
18252
18253 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
18254
18255         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
18256
18257 2009-06-10  Anthony Green  <green@moxielogic.com>
18258
18259         * config/moxie/crti.asm: New file.
18260         * config/moxie/crtn.asm: New file.
18261         * config/moxie/moxie.c: New file.
18262         * config/moxie/moxie.h: New file.
18263         * config/moxie/sfp-machine.h: New file.
18264         * config/moxie/moxie-protos.h: New file.
18265         * config/moxie/t-moxie: Created.
18266         * config/moxie/t-moxie-softfp: Created.
18267         * config/moxie/moxie.md: Created.
18268         * config/moxie/constraints.md: Created.
18269         * config.gcc: Add moxie support.
18270         * doc/md.texi (Machine Constraints): Add moxie constraints.
18271         * doc/contrib.texi (Contributors): Mention moxie port.
18272         * doc/install.texi (Specific): Mention the moxie port.
18273
18274 2009-06-09  Ian Lance Taylor  <iant@google.com>
18275
18276         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
18277         compiling with C++.
18278         * optabs.c (optab_table): Only use designated initializers if
18279         HAVE_DESIGNATED_INITIALIZERS is defined.
18280         (convert_optab_table): Likewise.
18281         (init_optabs): Always call init_insn_codes if
18282         HAVE_DESIGNATED_INITIALIZERS is not defined.
18283
18284 2009-06-09  Ian Lance Taylor  <iant@google.com>
18285
18286         * targhooks.c (default_builtin_vectorized_function): Change fn
18287         parameter to unsigned int.
18288         (default_builtin_vectorized_conversion): Change code parameter to
18289         unsigned int.
18290         (default_builtin_reciprocal): Change fn parameter to unsigned int.
18291         * targhooks.h: Update declarations.
18292         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
18293         parameter to unsigned int.
18294
18295         * c-typeck.c (comptypes_check_enum_int): New static function.
18296         (comptypes_internal): Add enum_and_int_p parameter.  Change all
18297         callers.
18298         (comp_target_types): Add location parameter.  Change all callers.
18299         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
18300         Change all callers.
18301         (function_types_compatible_p, type_lists_compatible_p): Likewise.
18302         (build_conditional_expr): Add colon_loc parameter.  Change all
18303         callers.
18304         (convert_for_assignment): Add location parameter.  Change all callers.
18305         * c-parser.c (c_parser_conditional_expression): Pass location of
18306         colon to build_conditional_expr.
18307         * c-tree.h (build_conditional_expr): Update declaration.
18308
18309 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
18310
18311         * graphite.c: Revert previous patch.
18312
18313 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
18314
18315         PR bootstrap/40103
18316         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
18317
18318 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
18319
18320         * tree-ssa-loop-prefetch.c
18321         (loop_prefetch_arrays): Fixed a portability problem in printf format
18322         string.
18323
18324 2009-06-09  Martin Jambor  <mjambor@suse.cz>
18325
18326         PR tree-optimization/40351
18327         * tree-sra.c (propagate_subacesses_accross_link): Check that a
18328         refrence to a potential artifical subaccess can be constructed.
18329
18330 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
18331
18332         * config/sh/sh-protos.h (sh_optimization_options): Declare.
18333         (sh_override_options): Likewise.
18334         * config/sh/sh.c: Include params.h.
18335         (sh_optimization_options): New.
18336         (sh_override_options): Likewise.
18337         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
18338         (OVERRIDE_OPTIONS): Use sh_override_options.
18339
18340 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
18341
18342         * dwarf2out.c (emit_cfa_remember): New variable.
18343         (add_fde_cfi): If emit_cfa_remember, recurse to add
18344         DW_CFA_remember_state first.
18345         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
18346         instead just set emit_cfa_remember.
18347
18348 2009-06-08  Jan Hubicka  <jh@suse.cz>
18349
18350         PR debug/40126
18351         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
18352
18353 2009-06-08  Jan Hubicka  <jh@suse.cz>
18354
18355         PR middle-end/39834
18356         * cgraphunit.c (save_inline_function_body): Do not copy transform
18357         hooks for saved inline bodies.
18358         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
18359         for given function.
18360
18361 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
18362
18363         * jump.c (returnjump_p): Handle delayed branches.  Add missing
18364         function comment.
18365
18366 2009-06-08  Jan Hubicka  <jh@suse.cz>
18367
18368         PR middle-end/40102
18369         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
18370         original node might've been modified.
18371         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
18372
18373 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
18374
18375         * tree-object-size.c (addr_object_size): Add OSI argument.
18376         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
18377         (compute_builtin_object_size, expr_object_size): Adjust callers.
18378         (plus_stmt_object_size): Call addr_object_size instead of
18379         compute_builtin_object_size.
18380
18381 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
18382             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
18383
18384         * tree-ssa-loop-prefetch.c
18385         (gather_memory_references): Introduced a counter for the number of
18386         memory references.
18387         (anything_to_prefetch_p): Introduced a counter for the number of
18388         prefetches.
18389         (is_loop_prefetching_profitable): New function with a cost model
18390         for prefetching.
18391         (loop_prefetch_arrays): Use the new cost model to determine if
18392         prefetching is profitable.
18393         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
18394         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18395         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
18396         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18397         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
18398         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18399
18400 2009-06-08  Michael Matz  <matz@suse.de>
18401
18402         PR debug/40012
18403         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
18404         partitions use the same.
18405         (expand_one_var): Deal with DECL_RTL sometimes begin set also
18406         for basevars of SSA_NAMEs.
18407         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
18408         to not expand them twice.
18409         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
18410         multiple places.
18411
18412 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
18413
18414         * common.opt (fcompare-debug=, fcompare-debug-second): New.
18415         (fdump-final-insns=, gtoggle): New.
18416         * doc/invoke.texi: Document them.
18417         * final.c (rest_of_clean_state): Dump final insn stream.
18418         * gcc.c (invoke_as): Hook in -fcompare-debug.
18419         (static_spec_functions): Add compare-debug-dump-opt,
18420         compare-debug-self-opt and compare-debug-auxbase-opt.
18421         (compare_debug, compare_debug_second, compare_debug_opt): New.
18422         (switches_debug_check, n_switches_debug_check): New.
18423         (debug_auxbase_opt, debug_check_temp_file): New.
18424         (process_command): Handle -fno-compare-debug, -fcompare-debug and
18425         -fcompare-debug=*.
18426         (do_self_spec): Handle arguments after switches.
18427         (do_spec_1): Add .gk extension to temp file basenames for compare.
18428         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
18429         (cc1_options): Use it instead of normal auxbase computation for
18430         the second compare-debug compilation.
18431         (compare_files): New.
18432         (main): Set up and implement compare debug mode.
18433         (compare_debug_dump_opt_spec_function): New.
18434         (compare_debug_self_opt_spec_function): New.
18435         (compare_debug_auxbase_opt_spec_function): New.
18436         * toplev.c (process_options): Handle flag_gtoggle,
18437         flag_dump_final_insns.
18438         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
18439         during -fcompare-debug-second compilation.
18440
18441 2009-06-07  Ian Lance Taylor  <iant@google.com>
18442
18443         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
18444         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
18445
18446         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
18447         with no default node.  Change warning with %H to warning_at.
18448         Don't clear warn_switch around case checking.
18449         * doc/invoke.texi (Warning Options): Clarify distinction between
18450         -Wswitch and -Wswitch-enum.
18451
18452 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18453
18454         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
18455
18456 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18457
18458         * gbl-ctors.h: Add header guard.
18459
18460 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18461
18462         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
18463         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
18464         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
18465         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
18466         prototypes for removed functions.
18467         (expressions_equal_p): Move to ...
18468         * tree-ssa-sccvn.h: ... here and ...
18469         * matrix-reorg.c: ... adjust includes.
18470
18471 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18472
18473         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
18474
18475 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18476
18477         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
18478         (finish_function): Remove erroneous whitespace.
18479
18480 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18481
18482         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
18483         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
18484
18485 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18486
18487         * errors.c (internal_error): Commentary typo fix.
18488         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
18489         * tree-ssa-pre.c: Ditto.
18490
18491 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18492
18493         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
18494         them is supposed to hold actual statements.
18495
18496 2009-06-06  Ian Lance Taylor  <iant@google.com>
18497
18498         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
18499         empty statements can now have attributes.
18500
18501 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
18502
18503         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
18504         * config/mips/mips.md: Ditto.
18505
18506 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
18507
18508         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
18509         _RELOCATABLE.
18510         (__eabi_uconvert): Likewise.
18511
18512 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
18513
18514         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
18515         CFI_* definitions with IN_GCC.
18516
18517 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
18518
18519         * xcoffout.h (xcoffout_source_line): Update prototype.
18520
18521 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18522
18523         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
18524         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
18525
18526 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
18527
18528         PR middle-end/40340
18529         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
18530         inlined_function_outer_scope_p blocks for artificial inlines
18531         even at -g0/-g1.
18532         * tree.c (tree_nonartificial_location): Rewrite using
18533         block_nonartificial_location.
18534
18535 2009-06-05  Revital Eres  <eres@il.ibm.com>
18536             Leehod Baruch  <leehod@il.ibm.com>
18537
18538         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
18539         (expand_expr_real_1): Remove comment.
18540         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
18541         Vectorize misaligned access when the target supports it.
18542         (vect_supportable_dr_alignment): Check for unaligned access support.
18543         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
18544         and remove asset.
18545
18546 2009-06-05  Julian Brown  <julian@codesourcery.com>
18547
18548         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
18549         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
18550
18551 2009-06-05  Richard Guenther  <rguenther@suse.de>
18552
18553         PR bootstrap/40350
18554         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
18555         as possibly unused.
18556
18557 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
18558
18559         * config/s390/s390.c (global_not_special_regno_p): New static inline.
18560         (save_gprs): Don't tell unwinder when a global register is saved.
18561         (s390_emit_epilogue): Emit needed epilogue unwind info.
18562
18563 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
18564
18565         * dwarf2out.c (deferred_asm_name): New.
18566         (add_name_and_src_coords_attributes): Defer creation of
18567         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
18568         computed yet.
18569         (move_linkage_attr): New.
18570         (dwarf2out_finish): Revisit deferrals and emit attributes at the
18571         right place.
18572
18573 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
18574
18575         * tree-nested.c (finalize_nesting_tree_1): Declare the
18576         frame_decl in the binding tree.
18577
18578 2009-06-04  Cary Coutant  <ccoutant@google.com>
18579
18580         * basic-block.h (struct basic_block_def): Add discriminator field.
18581         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
18582         callers.
18583         * debug.c (do_nothing_debug_hooks): Add additional entry.
18584         (debug_nothing_int_charstar_int): New function.
18585         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
18586         (debug_nothing_int_charstar_int): New declaration.
18587         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
18588         discriminator value in .loc directive.
18589         * final.c (last_discriminator): New variable.
18590         (discriminator): New variable.
18591         (final_start_function): Initialize above variables, pass current
18592         discriminator to debug hook.
18593         (notice_source_line): Check for discriminator change.
18594         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
18595         * sdbout.c (sdbout_source_line): New parameter.
18596         * tree-cfg.c (struct locus_discrim_map): New structure type.
18597         (discriminator_per_locus): New hash table.
18598         (build_gimple_cfg): Allocate and free discriminator hash table.
18599         (make_edges): Call assign_discriminator.
18600         (locus_map_hash): New function.
18601         (locus_map_eq): New function.
18602         (next_discriminator_for_locus): New function.
18603         (same_line_p): New function.
18604         (assign_discriminator): New function.
18605         (make_cond_expr_edges): Call assign_discriminator.
18606         (make_gimple_switch_edges): Likewise.
18607         (first_non_label_stmt): New function.
18608         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
18609         all callers.
18610         * xcoffout.c (xcoffout_source_line): Add new parameter.
18611
18612         * configure.ac (gcc_cv_as_discriminator): New configury check for
18613         gas support for discriminator.
18614         * configure: Regenerate.
18615         * config.in: Regenerate.
18616
18617 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
18618
18619         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
18620         val after checking for integers.
18621
18622 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
18623
18624         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
18625         X64_REGPARM_MAX.
18626         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
18627         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
18628         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
18629         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
18630         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
18631         X64_SSE_REGPARM_MAX.
18632         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
18633         X64_SSE_REGPARM_MAX.
18634
18635 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
18636
18637         * gcc.c (report_times_to_file): New.
18638         (execute): Implement it.
18639         (process_command): Support -time=.
18640         * doc/invoke.texi: Document it.
18641
18642 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
18643
18644         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
18645         that have value exprs.
18646
18647 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
18648
18649         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
18650         declarations for constants until...
18651         (dw2_output_indirect_constant_1): ... this point.
18652
18653 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
18654
18655         PR target/10242
18656         * arm.md (arm_addsi3): Don't try to split an add with an
18657         eliminable register until after reload has completed.
18658
18659 2009-06-03  Ian Lance Taylor  <iant@google.com>
18660
18661         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
18662         * genattrtab.c (write_length_unit_log): Likewise.
18663         * genchecksum.c (dosum): Likewise.
18664         * gengtype.c (write_rtx_next): Likewise.
18665         (finish_root_table, write_roots): Likewise.
18666         * gimple.c (gimple_ops_offset_): Likewise.
18667         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
18668         * config/arc/arc.c (arc_attribute_table): Likewise.
18669         * config/arm/arm.c (arm_attribute_table): Likewise.
18670         * config/avr/avr.c (avr_attribute_table): Likewise.
18671         * config/crx/crx.c (crx_attribute_table): Likewise.
18672         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
18673         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
18674         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
18675         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
18676         * config/sh/sh.c (sh_attribute_table): Likewise.
18677         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
18678         * config/spu/spu.c (spu_attribute_table): Likewise.
18679         * config/v850/v850.c (v850_attribute_table): Likewise.
18680
18681         * config/alpha/alpha.c (vms_attribute_table): Make static.
18682         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
18683         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
18684         * config/mips/mips.c (mips_attribute_table): Likewise.
18685
18686         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
18687         $(SYSTEM_H).
18688         (cc1-checksum.o): Likewise.
18689
18690 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
18691
18692         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
18693
18694 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
18695
18696         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
18697         insn if it is changing sp.  Use gen_add3_insn instead of
18698         conditionally gen_addsi3 and gen_adddi3.
18699         (offset_below_red_zone_p): New static inline function.
18700         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
18701         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
18702         * config/rs6000/ppc-asm.h: Include auto-host.h.
18703         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
18704         CFI_RESTORE): Define.
18705         * config/rs6000/crtresxgpr.asm: Add unwind info.
18706         * config/rs6000/crtresxfpr.asm: Likewise.
18707         * config/rs6000/crtresgpr.asm: Likewise.
18708         * config/rs6000/crtresfpr.asm: Likewise.
18709         * config/rs6000/crtsavgpr.asm: Likewise.
18710         * config/rs6000/crtsavfpr.asm: Likewise.
18711
18712         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
18713         argument of DWARF2_FRAME_REG_OUT macros.
18714
18715 2009-06-03  Julian Brown  <julian@codesourcery.com>
18716
18717         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
18718         words or less (including TImode) in core registers.
18719
18720 2009-06-03  Richard Guenther  <rguenther@suse.de>
18721
18722         PR middle-end/40328
18723         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
18724
18725 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
18726
18727         * statistics.c (statistics_counter_event): Do not record event
18728         in pass dump if its number == -1.
18729         (curr_statistics_hash): Add assert that we never get passes
18730         with static number == -1.
18731
18732 2009-06-03  Richard Guenther  <rguenther@suse.de>
18733             Andrey Belevantsev  <abel@ispras.ru>
18734
18735         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
18736         non-BLKmode arrays addressable.
18737
18738 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
18739
18740         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
18741         * config/m68k/m68k.h: ... here.
18742
18743 2009-06-03  Martin Jambor  <mjambor@suse.cz>
18744
18745         PR tree-optimization/40323
18746         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
18747         assignment.
18748
18749 2009-06-03  Richard Guenther  <rguenther@suse.de>
18750
18751         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
18752         consistently.
18753
18754 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
18755
18756         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
18757         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
18758         JUMP_TABLE_DATA_P where applicable.
18759         * config/sh/sh.c: Ditto.
18760         * config/sh/sh.h: Ditto.
18761         * config/sh/sh.md: Ditto.
18762         * config/sh/symbian.c: Ditto.
18763
18764 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
18765
18766         * config/i386/driver-i386.c (describe_cache): Optimize
18767         concatenation of strings.  Use snprintf instead of sprintf.
18768         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
18769         target when not compiling with GCC.
18770
18771 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
18772
18773         * config/sh/sh.c: Revert last change.
18774         (sh_expand_epilogue): Emit a blockage insn before the frame
18775         pointer adjustment unconditionally.
18776
18777 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18778
18779         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
18780         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
18781         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
18782         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
18783         to COLLECT_GCC_OPTIONS.
18784
18785 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18786
18787         * collect2.c (target_system_root): New variable.
18788         (main): Handle --sysroot=.
18789         (ignore_library): Strip the sysroot from the library path.
18790
18791 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18792
18793         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
18794         (collect2.o): Depend on collect2-aix.h.
18795         (collect2-aix.o): New rule.
18796         * collect2-aix.h: New file.
18797         * collect2-aix.c: Likewise.
18798         * collect2.c: Include collect2-aix.h.  Don't undefine
18799         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
18800         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
18801         Use TARGET_AIX_VERSION instead of _AIX51.
18802         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
18803         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
18804         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
18805         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
18806         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
18807
18808 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18809
18810         * collect2.c (ignore_library): Avoid premature post-increment
18811         and null deference.
18812
18813 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18814
18815         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
18816         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
18817         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
18818         CROSS_DIRECTORY_STRUCTURE too.
18819         (LINK_LIBG_SPEC): Likewise.
18820         (LIB_SPEC): Add %R to sysroot paths.
18821         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
18822         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
18823         * config/rs6000/aix51.h: As for aix43.h.
18824         * config/rs6000/aix52.h: Likewise.
18825         * config/rs6000/aix53.h: Likewise.
18826         * config/rs6000/aix61.h: Likewise.
18827         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
18828         to the beginning of sysroot paths.
18829
18830 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18831
18832         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
18833         INSN_LISTs that are out of the REG_NOTE range.
18834
18835 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18836
18837         * loop-unroll.c (struct iv_to_split): Add pointer to next.
18838         (struct var_to_expand): Likewise.
18839         (struct opt_info): Add head and tail for linked lists of the above.
18840         (analyze_insn_to_expand_var): Initialize next.
18841         (analyze_iv_to_split_insn): Likewise.
18842         (analyze_insns_in_loop): Create linked lists.
18843         (allocate_basic_variable): Simplify for use without hash table.
18844         (insert_var_expansion_initialization): Likewise, make it type-safer.
18845         (combine_var_copies_in_loop_exit): Likewise.
18846         (apply_opt_in_copies): Walk lists rather than hash tables.
18847         (release_var_copies): Simplified and inlined by hand into...
18848         (free_opt_info): ... this function.
18849
18850 2009-06-02  Richard Guenther  <rguenther@suse.de>
18851
18852         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
18853         for field decls.
18854
18855 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18856
18857         * cfgexpand.c (gimple_expand_cfg): Discard the source location
18858         only for builtins that are not overridden.
18859
18860 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18861
18862         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
18863         label string.
18864
18865 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18866
18867         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
18868
18869 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18870
18871         * combine.c (move_deaths): Compare LUIDs within the same BB only.
18872
18873 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18874
18875         * common.opt (fdump-unnumbered-links): New.
18876         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
18877         * print-rtl.c (flag_dump_unnumbered_links): New.
18878         (print_rtx): Test it.
18879
18880 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
18881
18882         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
18883         push/pop multiple to 8-byte alignment.
18884
18885 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
18886
18887         * config/i386/i386.c (queued_cfa_restores): New static variable.
18888         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
18889         functions.
18890         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
18891         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
18892         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
18893         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
18894         note unconditionally.
18895         (ix86_emit_restore_regs_using_mov): Likewise.
18896         (ix86_emit_restore_sse_regs_using_mov): Likewise.
18897         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
18898         it through to ix86_emit_restore_reg_using_pop.
18899         (ix86_emit_leave): Add RED_OFFSET argument.  Call
18900         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
18901         instead of adding REG_CFA_OFFSET note unconditionally.
18902         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
18903         the above functions.  Call ix86_add_queued_cfa_restore_notes when
18904         needed.
18905
18906         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
18907         force output of the label even for dwarf2out_do_cfi_asm.
18908         (add_fde_cfi): If -g2 and above and cfi might change CFA,
18909         force creation of CFI label and chain DW_CFA_set_loc jumping to it
18910         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
18911         caller.
18912         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
18913         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
18914         dwarf2out_cfi_label callers.
18915         * tree.h (dwarf2out_cfi_label): Adjust prototype.
18916         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
18917         Adjust dwarf2out_cfi_label callers.
18918         * config/vax/vax.c (vax_output_function_prologue): Likewise.
18919
18920         * config/i386/i386.h (struct machine_cfa_state,
18921         struct machine_function): Guard with ifndef USED_FOR_TARGET
18922         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
18923
18924         PR other/40024
18925         * emutls.c (__emutls_get_address): Change arr->size to mean number
18926         of allocated arr->data entries instead of # of slots + 1.
18927
18928         PR middle-end/40316
18929         * recog.c (peep2_reinit_state): New function.
18930         (peephole2_init_state): Use it at the end of a basic block and also
18931         when seeing a RTX_FRAME_RELATED_P insn.
18932
18933 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
18934
18935         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
18936         fixuns_truncrfdi2): New.
18937         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
18938         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
18939         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
18940         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
18941         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
18942         *recip_approx): Remove.
18943         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
18944         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
18945         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
18946         move to div.md.
18947         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
18948         setf_exp_rf): New.
18949
18950 2009-06-01  Ian Lance Taylor  <iant@google.com>
18951
18952         * attribs.c (register_attribute): Use CONST_CAST.
18953         * collect2.c (main): Use CONST_CAST2.
18954         (scan_prog_file): Likewise.
18955         * gcc.c (process_command, main): Likewise.
18956         * toplev.c (toplev_main): Likewise.
18957
18958         * c-typeck.c (handle_warn_cast_qual): New static function,
18959         partially broken out of build_c_cast.
18960         (build_c_cast): Call handle_warn_cast_qual.
18961         * doc/invoke.texi (Warning Options): Document new effect of
18962         -Wcast-qual.
18963
18964 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
18965
18966         * diagnostic.c (diagnostic_build_prefix): Always print columns.
18967         (diagnostic_report_current_module): Print columns.
18968         * common.opt (flag_show_column): Enable by default.
18969
18970 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
18971
18972         * alias.c (find_base_term): Check for NULL term before returning.
18973
18974 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18975
18976         Revert due to PR40320:
18977         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18978         * calls.c (emit_library_call_value_1): Don't force_operand for move
18979         and push insns.
18980
18981 2009-06-01  Olivier Hainque  <hainque@adacore.com>
18982             Eric Botcazou  <ebotcazou@adacore.com>
18983
18984         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
18985         to be processed as a bitfield for constructor output purposes.
18986         * output.h (initializer_constant_valid_for_bitfield_p): Declare
18987         new function.
18988         * varasm.c (oc_local_state): New type, output_constructor
18989         local state to support communication with helpers.
18990         (oc_outer_state): New type, output_constructor outer state of
18991         relevance in recursive calls.
18992         (output_constructor_array_range): New output_constructor helper,
18993         extracted code for an array range element.
18994         (output_constructor_regular_field): New output_constructor helper,
18995         extracted code for an element that is not a bitfield.
18996         (output_constructor_bitfield): New output_constructor helper,
18997         extracted code for a bitfield element.  Accept an OUTER state
18998         argument for recursive processing.  Recurse on record or array
18999         CONSTRUCTOR values, possibly past noop conversions.
19000         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
19001         VALUE is a valid constant-valued expression for use in a static
19002         bit-field initializer.
19003         (output_constructor): Rework to use helpers.  Accept and honor an
19004         OUTER state argument for recursive calls.  Return total size.  Be
19005         prepared for nested constructors initializing bitfields.
19006         (output_constant): Feed OUTER in calls to output_constructor.
19007
19008 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19009
19010         * calls.c (emit_library_call_value_1): Don't force_operand for move
19011         and push insns.
19012
19013 2009-06-01  Nick Clifton  <nickc@redhat.com>
19014
19015         * doc/invoke.texi (IA-64 Options): Fix typo.
19016
19017 2009-06-01  Ira Rosen  <irar@il.ibm.com>
19018
19019         PR tree-optimization/39129
19020         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
19021         printed message.
19022         (vect_do_peeling_for_loop_bound): Use
19023         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
19024         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
19025         (vect_loop_versioning): Likewise.
19026         (vect_create_cond_for_alias_checks): Fix indentation.
19027         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
19028         macros.
19029         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
19030         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
19031         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
19032         "control flow in loop".
19033         (vect_estimate_min_profitable_iters): Use
19034         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
19035         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
19036         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
19037         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
19038         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
19039         statement belongs to a group of strided accesses with the exact code
19040         check.
19041         (vectorizable_load): Likewise.
19042         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
19043         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
19044
19045 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
19046
19047         * config/freebsd-stdint.h: New file.
19048         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
19049         Add freebsd-stdint.h to tm_file.
19050
19051 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
19052
19053         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
19054         (thumb2_extendhidi2): Likewise.
19055
19056 2009-05-31  Ian Lance Taylor  <iant@google.com>
19057
19058         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
19059
19060 2009-05-31  Ian Lance Taylor  <iant@google.com>
19061
19062         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
19063         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
19064         (ipa-reference.o): Depend upon gt-ipa-reference.h.
19065
19066 2009-05-31  Jason Merrill  <jason@redhat.com>
19067
19068         * tree-pretty-print.c (print_call_name): Take the callee, not the
19069         call itself.  Make non-static.  Use dump_function_name for functions.
19070         (dump_generic_node): Adjust.
19071         * diagnostic.h: Declare print_call_name.
19072         * gimple-pretty-print.c (dump_gimple_call): Use it.
19073
19074 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
19075
19076         * config/sh/sh.md (ashldi3_std): New define_expand.
19077         (ashldi3): Use it.
19078
19079 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
19080
19081         PR target/40313
19082         * config/sh/sh.c: Include debug.h.
19083         (sh_expand_epilogue): Emit a blockage insn before the frame
19084         pointer adjustment also when dwarf2out_do_frame returns true.
19085
19086 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
19087
19088         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
19089         (thumb2_extendqidi2): New pattern.
19090
19091 2009-05-31  Ira Rosen  <irar@il.ibm.com>
19092
19093         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
19094         mark phis for renaming.
19095         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
19096         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
19097         Call mark_sym_for_renaming.
19098         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
19099         * tree-vect-loop.c (vect_transform_loop): Remove
19100         vect_memsyms_to_rename initialization and a call to
19101         mark_set_for_renaming.
19102
19103 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
19104
19105         PR middle-end/40304
19106         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
19107         frame related even if !set_cfa && style < 0.
19108
19109 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
19110
19111         * config/i386/mingw-tls.c: New file.
19112         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
19113         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
19114         defining _WIN32 but not __CYGWIN__.
19115
19116 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19117
19118         * configure.ac: Add MPC support.
19119
19120         * config.in, configure: Regenerate.
19121
19122 2009-05-29  Richard Henderson  <rth@redhat.com>
19123
19124         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
19125         NOTE_INSN_BASIC_BLOCK.
19126         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
19127         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
19128         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
19129         to be deleted.
19130         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
19131         add in_use field.
19132         (add_cfi): Disable check redefining cfa away from drap.
19133         (lookup_cfa_1): Add remember argument; handle remember/restore.
19134         (lookup_cfa): Pass remember argument.
19135         (cfa_remember): New.
19136         (compute_barrier_args_size_1): Remove sibcall check.
19137         (dwarf2out_frame_debug_def_cfa): New.
19138         (dwarf2out_frame_debug_adjust_cfa): New.
19139         (dwarf2out_frame_debug_cfa_offset): New.
19140         (dwarf2out_frame_debug_cfa_register): New.
19141         (dwarf2out_frame_debug_cfa_restore): New.
19142         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
19143         (dwarf2out_begin_epilogue): New.
19144         (dwarf2out_frame_debug_restore_state): New.
19145         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
19146         DW_CFA_restore_state.
19147         (output_cfi_directive): Likewise.
19148         (convert_cfa_to_fb_loc_list): Likewise.
19149         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
19150         * dwarf2out.h: Update.
19151         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
19152         (copy_insn_1): Early out for null.
19153         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
19154         and dwarf2out_frame_debug_restore_state.
19155         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
19156         (prologue_insn_hash, epilogue_insn_hash): New.
19157         (free_after_compilation): Adjust freeing accordingly.
19158         (record_insns): Create hash table if needed; push insns into
19159         hash instead of array.
19160         (maybe_copy_epilogue_insn): New.
19161         (contains): Search hash table instead of array.
19162         (sibcall_epilogue_contains): Remove.
19163         (thread_prologue_and_epilogue_insns): Split eh_return insns
19164         and mark them as epilogues.
19165         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
19166         scanning in terms of basic blocks.
19167         * insn-notes.def (CFA_RESTORE_STATE): New.
19168         * jump.c (returnjump_p_1): Accept EH_RETURN.
19169         (eh_returnjump_p_1, eh_returnjump_p): New.
19170         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
19171         CFA_REGISTER, CFA_RESTORE): New.
19172         * rtl.def (EH_RETURN): New.
19173         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
19174
19175         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
19176         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
19177
19178         * config/i386/i386.c (gen_push): Update cfa state.
19179         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
19180         add a CFA_ADJUST_CFA note.
19181         (ix86_dwarf_handle_frame_unspec): Remove.
19182         (ix86_expand_prologue): Update cfa state.
19183         (ix86_emit_restore_reg_using_pop): New.
19184         (ix86_emit_restore_regs_using_pop): New.
19185         (ix86_emit_leave): New.
19186         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
19187         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
19188         * config/i386/i386.h (struct machine_cfa_state): New.
19189         (ix86_cfa_state): New.
19190         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
19191         (eh_return_internal): Merge from eh_return_<mode>,
19192         use eh_return rtx, split w/ epilogue.
19193
19194 2009-05-29  Ian Lance Taylor  <iant@google.com>
19195
19196         * builtins.c (validate_gimple_arglist): Don't use va_arg with
19197         enum type.
19198         * calls.c (emit_library_call_value_1): Likewise.
19199
19200         * c-typeck.c (c_build_va_arg): New function.
19201         * c-tree.h (c_build_va_arg): Declare.
19202         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
19203         instead of build_va_arg.
19204
19205 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
19206
19207         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
19208         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
19209         (ptr_difference_cost): Use affine combinations to compute it.
19210         (difference_cost): Likewise.
19211         (get_computation_cost_at): Compute more accurate cost for addresses
19212         if the ratio is a multiplier allowed in addresses.
19213         For non-addresses, consider that an additional offset or symbol is
19214         added only once.
19215
19216 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19217
19218         * config/i386/i386.c (ix86_decompose_address): Avoid useless
19219         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
19220
19221         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
19222         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
19223         (prefix_rex): For UNIT_MMX don't imply the prefix by default
19224         if MODE_DI.
19225         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
19226         to 1 for TYPE_SSE{IADD1,CVT1}.
19227         (prefix_vex_imm8): Removed.
19228         (length_vex): Only pass 1 as second argument to
19229         ix86_attr_length_vex_default if prefix_extra is 0.
19230         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
19231         (length): For prefix vex computation use length_immediate
19232         attribute instead of prefix_vex_imm8.
19233         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
19234         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
19235         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
19236         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
19237         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
19238         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
19239         a space in between the operands.
19240         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
19241         if one operand is 0xff and the other one si, di, bp or sp.
19242         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
19243         other one si, di, bp or sp.
19244         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
19245         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
19246         type and mode attributes.
19247         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
19248         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
19249         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
19250         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
19251         prefix_data16 attribute iff MODE_DF.
19252         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
19253         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
19254         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
19255         constm128_operand in length_immediate computation.
19256         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
19257         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
19258         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
19259         length_immediate attribute to 1.
19260         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
19261         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
19262         for certain alternatives.
19263         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
19264         prefix_data16 attribute if MODE_V1DF.
19265         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
19266         length_immediate to 1.
19267         (set_got_rex64, set_rip_rex64): Remove length attribute, set
19268         length_address to 4, set mode attribute to MODE_DI.
19269         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
19270         (fxam<mode>2_i387): Set length attribute to 4.
19271         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
19272         *prefetch_3dnow_rex): Override length_address attribute.
19273         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
19274         attributes.
19275         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
19276         (constm128_operand): Removed.
19277         * config/i386/i386.c (memory_address_length): For
19278         disp && !index && !base in 64-bit mode account for SIB byte if
19279         print_operand_address can't optimize disp32 into disp32(%rip)
19280         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
19281         for fs: or gs: segment.
19282         (ix86_attr_length_immediate_default): When checking if shortform
19283         is possible, truncate immediate to the length of the non-shortened
19284         immediate.
19285         (ix86_attr_length_address_default): Ignore MEM_P operands
19286         with X constraint.
19287         (ix86_attr_length_vex_default): Only check for DImode on
19288         GENERAL_REG_P operands.
19289         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
19290         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
19291         (sse_cvttps2pi): Clear prefix_rep attribute.
19292         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
19293         attribute.
19294         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
19295         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
19296         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
19297         iff operand 2 is const_int_operand.
19298         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
19299         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
19300         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
19301         instead of vex.
19302         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
19303         prefix_data16.
19304         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
19305         prefix_data16 attribute for movlpd and movhpd instructions.
19306         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
19307         length_immediate for shufpd instruction.
19308         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
19309         (avx_cmpp<avxmodesuffixf2c><mode>3,
19310         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
19311         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
19312         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
19313         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
19314         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
19315         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
19316         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
19317         prefix_data16 attribute for the first alternative to 1.
19318         (*avx_loadlps): Override length_immediate for the first alternative.
19319         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
19320         attributes for second alternative.
19321         (*vec_concatv2sf_sse4_1): Override length_immediate and
19322         prefix_data16 attributes for second alternative.
19323         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
19324         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
19325         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
19326         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
19327         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
19328         prefix_data16 and length_immediate to 1.
19329         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
19330         to 1.
19331         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
19332         prefix_extra attribute for variants that don't have 0f prefix alone.
19333         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
19334         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
19335         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
19336         *sse4_1_pextrd): Set length_immediate to 1.
19337         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
19338         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
19339         to 1.
19340         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
19341         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
19342         length_immediate to 1 for second alternative.
19343         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
19344         prefix_extra and length_immediate attributes for the first
19345         alternative.
19346         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
19347         first alternative.
19348         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
19349         to 1 for the first and third alternative.
19350         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
19351         alternative.
19352         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
19353         attribute.
19354         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
19355         attribute to 0.
19356         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
19357         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
19358         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
19359         *avx_psign<mode>3): Set prefix_extra attribute to 1.
19360         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
19361         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
19362         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
19363         ssse3_psign<mode>3): Override prefix_rex attribute.
19364         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
19365         (ssse3_palignrti): Override length_immediate to 1.
19366         (ssse3_palignrdi): Override length_immediate to 1, override
19367         prefix_rex attribute.
19368         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
19369         (sse4a_extrqi): Override length_immediate to 2.
19370         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
19371         (sse4a_insertq): Override prefix_data16 to 0.
19372         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
19373         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
19374         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
19375         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
19376         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
19377         and length_immediate to 1.
19378         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
19379         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
19380         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
19381         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
19382         and length_immediate to 1.
19383         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
19384         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
19385         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
19386         avx_ptest256): Override prefix_extra to 1.
19387         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
19388         Override prefix_data16 and length_immediate to 1.
19389         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
19390         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
19391         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
19392         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
19393         prefix_data16 to 0 and prefix_extra to 2.
19394         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
19395         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
19396         attribute.
19397         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
19398         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
19399         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
19400         and prefix_extra to 2.
19401         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
19402         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
19403         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
19404         avx_vpermilvar<mode>3,
19405         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
19406         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
19407         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
19408         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
19409         Override prefix_extra to 1.
19410         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
19411         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
19412         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
19413         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
19414         prefix_extra and length_immediate to 1.
19415         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
19416         modrm to 0.
19417         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
19418         to 1 for the first alternative.
19419         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
19420         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
19421         cases.
19422         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
19423         *movv2sf_internal_avx, *movv2sf_internal): Override
19424         prefix_rep attribute for certain alternatives.
19425         (*mov<mode>_internal): Override prefix_rep or prefix_data16
19426         attributes for certain alternatives.
19427         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
19428         attributes for certain alternatives.
19429         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
19430         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
19431         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
19432         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
19433         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
19434         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
19435         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
19436         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
19437         length_immediate to 1 if operand 2 is const_int_operand.
19438         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
19439         *vec_extractv2si_1): Set length_immediate attribute to 1.
19440         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
19441         using old 3DNOW insn rather than SSE/3DNOW_A.
19442         (mmx_emms, mmx_femms): Clear modrm attribute.
19443
19444 2009-05-29  Martin Jambor  <mjambor@suse.cz>
19445
19446         * tree-sra.c:  New implementation of SRA.
19447
19448         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
19449         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
19450         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
19451         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
19452         (SRA_MAX_STRUCTURE_COUNT): Removed.
19453         (SRA_FIELD_STRUCTURE_RATIO): Removed.
19454         * doc/invoke.texi (sra-max-structure-size): Removed.
19455         (sra-field-structure-ratio): Removed.
19456
19457 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19458
19459         PR middle-end/40291
19460         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
19461         before expansion.
19462
19463 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
19464
19465         PR rtl-optimization/40101
19466         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
19467         seqno.  Adjust comment.
19468         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
19469         inserting bookkeeping before a jump, the jump is not scheduled.
19470         When no positive seqno found, provide a value.  Add comment.
19471
19472 2009-05-29  Richard Guenther  <rguenther@suse.de>
19473
19474         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
19475         short-cutting on the first component.
19476
19477 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19478
19479         PR middle-end/39958
19480         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
19481         for trees other than decls/types.
19482
19483 2009-05-29  Richard Guenther  <rguenther@suse.de>
19484
19485         * tree-ssa-operands.c (get_expr_operands): Do not handle
19486         INDIRECT_REFs in the handled-component case.  Remove
19487         unused get_ref_base_and_extent case.
19488         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
19489         tree_low_cst and host_integerp where possible.
19490         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
19491         codes for equivalence.
19492         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
19493
19494 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
19495
19496         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
19497         to tmake_file for i[34567]86-*-cygwin*.
19498
19499 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19500
19501         PR target/40017
19502         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
19503         (altivec_categorize_keyword, init_vector_keywords,
19504         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
19505         similar to bool.
19506
19507 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
19508
19509         * tree.c (handle_dll_attribute): Check if node is
19510         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
19511
19512 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
19513
19514         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
19515         component.
19516         (thumb2_zero_extendqidi2): Likewise.
19517
19518 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
19519
19520         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
19521         instead of gen_movrt.
19522         * config/sh/sh.md (movrt): Remove.
19523
19524 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
19525
19526         * doc/invoke.texi (IA-64 Options):
19527         Add -msdata, -mfused-madd, -mno-inline-float-divide,
19528         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
19529         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
19530         -msched-prefer-non-control-spec-insns,
19531         -msched-stop-bits-after-every-cycle,
19532         -msched-count-spec-in-critical-path,
19533         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
19534         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
19535         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
19536         and -msched-spec-verbose.
19537
19538 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
19539
19540         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
19541         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
19542         error if used.
19543         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
19544
19545 2009-05-28  Richard Guenther  <rguenther@suse.de>
19546
19547         * tree-ssa-alias.c (ao_ref_init): New function.
19548         (ao_ref_base): Likewise.
19549         (ao_ref_base_alias_set): Likewise.
19550         (ao_ref_alias_set): Likewise.
19551         (refs_may_alias_p_1): Change signature.
19552         (refs_may_alias_p): Adjust.
19553         (refs_anti_dependent_p): Likewise.
19554         (refs_output_dependent_p): Likewise.
19555         (call_may_clobber_ref_p_1): Change signature.
19556         (call_may_clobber_ref_p): Adjust.
19557         (stmt_may_clobber_ref_p_1): New function split out from ...
19558         (stmt_may_clobber_ref_p): ... here.
19559         (maybe_skip_until): Adjust signature.
19560         (get_continuation_for_phi): Likewise.
19561         (walk_non_aliased_vuses): Likewise.
19562         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
19563         (ao_ref_init): Declare.
19564         (ao_ref_base): Likewise.
19565         (ao_ref_alias_set): Likewise.
19566         (stmt_may_clobber_ref_p_1): Likewise.
19567         (walk_non_aliased_vuses): Adjust.
19568         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
19569         (get_ref_from_reference_ops): remove.
19570         (vn_reference_lookup_2): Adjust signature.
19571         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
19572         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
19573         (vn_reference_lookup): Adjust.
19574         (vn_reference_insert): Likewise.
19575         (vn_reference_insert_pieces): Adjust signature.
19576         (visit_reference_op_call): Adjust.
19577         * tree-ssa-pre.c (get_expr_type): Simplify.
19578         (phi_translate_1): Adjust.
19579         (compute_avail): Likewise.
19580         (translate_vuse_through_block): Do not re-build trees.
19581         (value_dies_in_block_x): Likewise.
19582         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
19583         fields.
19584         (vn_reference_lookup_pieces): Adjust declaration.
19585         (vn_reference_insert_pieces): Likewise.
19586
19587 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
19588
19589         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
19590         with checking disabled.
19591
19592 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
19593
19594         PR target/37216
19595
19596         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
19597         macro definition for support of three-operand format aligned
19598         .comm directive in assembler on cygwin/pe/mingw target OS.
19599         * configure:  Regenerate.
19600         * config.h:  Regenerate.
19601
19602         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
19603         aligned form of .comm directive if -mpe-aligned-commons is in effect.
19604         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
19605
19606         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
19607         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
19608
19609 2009-05-28  Ira Rosen  <irar@il.ibm.com>
19610
19611         PR tree-optimization/40254
19612         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
19613         in analysis of basic blocks.
19614
19615 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
19616
19617         PR middle-end/33699
19618         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
19619         * target-def.h (TARGET_CONST_ANCHOR): New macro.
19620         (TARGET_INITIALIZER): Use it.
19621         * cse.c (CHEAPER): Move it up to the other macros.
19622         (insert): Rename this ...
19623         (insert_with_costs): ... to this.  Add cost parameters.  Update
19624         function comment.
19625         (insert): New function.  Call insert_with_costs.
19626         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
19627         find_reg_offset_for_const, try_const_anchors): New functions.
19628         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
19629         when using a const-anchor.  Call insert_const_anchors.
19630         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
19631         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
19632
19633 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
19634
19635         * tree-inline.c (remap_decls): Enable nonlocalized variables
19636         when not optimizing.
19637
19638 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
19639
19640         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
19641         Simplify other tests involving optimize.
19642
19643 2009-05-27  Tom Tromey  <tromey@redhat.com>
19644
19645         * unwind-dw2.c (_Unwind_DebugHook): New function.
19646         (uw_install_context): Call _Unwind_DebugHook.
19647
19648 2009-05-27  Tom Tromey  <tromey@redhat.com>
19649
19650         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
19651
19652 2009-05-27  Ian Lance Taylor  <iant@google.com>
19653
19654         * Makefile.in (LINKER, LINKER_FLAGS): Define.
19655         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
19656         (ALL_LINKERFLAGS): Define.
19657         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
19658         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
19659         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
19660         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
19661         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
19662         $(LINKER_FOR_BUILD).
19663         (build/gcov-iov$(build_exeext)): Likewise.
19664
19665 2009-05-27  Julian Brown  <julian@codesourcery.com>
19666
19667         * gcse.c (target.h): Include.
19668         (can_assign_to_reg_without_clobbers_p): Check that the target allows
19669         copy of argument to a pseudo register.
19670
19671 2009-05-27  Diego Novillo  <dnovillo@google.com>
19672
19673         * tree-ssa-live.c (dump_scope_block): Document arguments.
19674         (dump_scope_blocks): Document.
19675         (debug_scope_blocks): New.
19676         * tree-flow.h (debug_scope_blocks): Declare.
19677
19678 2009-05-21  Denis Chertykov  <denisc@overta.ru>
19679
19680         * doc/contrib.texi (Contributors): Add myself to the list.
19681
19682 2009-05-27  Olivier Hainque  <hainque@adacore.com>
19683
19684         * expr.c (target_align): New function.  Alignment the TARGET of an
19685         assignment may be assume to have.
19686         (highest_pow2_factor_for_target): Use it instead of relying on
19687         immediate tree attributes of TARGET, not necessarily honored when
19688         intermediate bitfields are involved.
19689
19690 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
19691
19692         PR target/40266
19693         * config/i386/driver-i386.c (host_detect_local_cpu): Support
19694         AVX, SSE4, AES, PCLMUL and POPCNT.
19695
19696 2009-05-27  Diego Novillo  <dnovillo@google.com>
19697
19698         * tree-pretty-print.c (dump_location): New.
19699         (dump_generic_node): Call it.
19700         Factor code to handle BLOCK nodes ...
19701         (dump_block_node): ... here.
19702
19703 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
19704
19705         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
19706         with it.
19707         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
19708         included.
19709         * gcc-plugin.h: Include config.h and system.h.
19710         (IN_GCC): Define if not defined.
19711
19712 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
19713
19714         PR middle-end/40249
19715         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
19716         with -fno-inline.
19717
19718 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
19719
19720         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
19721         applicable.
19722         * config/m32r/m32r.h: Ditto.
19723         * config/m32r/m32r.md: Ditto.
19724         * config/m32r/predicates.md: Ditto.
19725
19726 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
19727
19728         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
19729
19730 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
19731
19732         * doc/plugins.texi
19733         (Loading plugins): typo.
19734         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
19735         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
19736         (Interacting with the GCC Garbage Collector): Added new section.
19737         (Giving information about a plugin): Added new section for
19738         PLUGIN_INFO.
19739         * ggc.h (ggc_register_root_tab): Added declaration.
19740         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
19741         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
19742         (register_callback): Improved comment in declaration.
19743         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
19744         (extra_root_vec) Added static variable for dynamic roots registration.
19745         (ggc_register_root_tab) Added new routine.
19746         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
19747         PLUGIN_GGC_MARKING event.
19748         * ggc-zone.c: Include plugin.h.
19749         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
19750         * ggc-page.c: Include plugin.h.
19751         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
19752         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
19753         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
19754         (register_callback): check lack of callbacks for
19755         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
19756         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
19757         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
19758         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
19759         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
19760         dependency on plugin.h.
19761         (plugin.o): Added dependency on ggc.h...
19762
19763 2009-05-26  Richard Guenther  <rguenther@suse.de>
19764
19765         PR middle-end/40248
19766         Revert
19767         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
19768         with mismatched comparison modes.
19769
19770         * expr.c (expand_expr_real_1): Expand the operand of a
19771         VIEW_CONVERT_EXPR in its natural mode.
19772
19773 2009-05-26  Ian Lance Taylor  <iant@google.com>
19774
19775         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
19776         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
19777         (ALL_COMPILERFLAGS): Define.
19778         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
19779         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
19780         (collect2$(exeext), collect2.o): Likewise.
19781         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
19782         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
19783         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
19784         (libbackend.o, intl.o, cppdefault.o): Likewise.
19785         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
19786         (build/%.o): Use $(COMPILER_FOR_BUILD).
19787         (build/gen%$(build_exeext)): Likewise.
19788         (build/gcov-iov$(build_exeext)): LIkewise.
19789         * config/t-darwin (darwin.o): Use $(COMPILER).
19790         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
19791         * config/t-sol2 (sol2-c.o): Likewise.
19792         (sol2.o): Likewise.
19793         * config/t-vxworks (vxworks.o): Likewise.
19794         * config/x-darwin (host-darwin.o): Likewise.
19795         * config/x-hpux (host-hpux.o): Likewise.
19796         * config/x-linux (host-linux.o): Likewise.
19797         * config/x-solaris (host-solaris.o): Likewise.
19798         * config/alpha/x-alpha (driver-alpha.o): Likewise.
19799         * config/arm/t-arm (arm-c.o): Likewise.
19800         * config/arm/t-pe (pe.o): Likewise.
19801         * config/arm/t-wince-pe (pe.o): Likewise.
19802         * config/i386/t-cygming (winnt.o): Likewise.
19803         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
19804         * config/i386/t-cygwin (cygwin1.o): Likewise.
19805         (cygwin2.o): Likewise.
19806         * config/i386/t-i386 (i386-c.o): Likewise.
19807         * config/i386/t-interix (winnt.o): Likewise.
19808         * config/i386/t-netware (netware.o): Likewise.
19809         * config/i386/t-nwld (nwld.o): Likewise.
19810         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
19811         * config/i386/x-i386 (driver-i386.o): Likewise.
19812         * config/i386/x-cygwin (host-cygwin.o): Likewise.
19813         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
19814         * config/ia64/t-ia64 (ia64-c.o): Likewise.
19815         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
19816         * config/mips/x-native (driver-native.o): Likewise.
19817         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
19818         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
19819         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
19820         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
19821         * config/score/t-score-elf (score7.o): Likewise.
19822         (score3.o): Likewise.
19823         * config/sh/t-sh (sh-c.o): Likewise.
19824         * config/sh/t-symbian (sh-c.o): Likewise.
19825         (symbian.o): Likewise.
19826         * config/spu/t-spu-elf (spu-c.o): Likewise.
19827         * config/v850/t-v850 (v850-c.o): Likewise.
19828         * config/v850/t-v850e (v850-c.o): Likewise.
19829
19830 2009-05-26  Richard Guenther  <rguenther@suse.de>
19831
19832         PR tree-optimization/40122
19833         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
19834         VECTOR_CSTs if possible.
19835         (fold_gimple_assign): Likewise.
19836
19837 2009-05-26  Richard Guenther  <rguenther@suse.de>
19838
19839         PR middle-end/40252
19840         * fold-const.c (fold_binary): Use the correct types for building
19841         rotates.
19842
19843 2009-05-26  Richard Guenther  <rguenther@suse.de>
19844
19845         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
19846         redundant calls to merge_alias_info.
19847         (bump_vector_ptr): Likewise.
19848         * tree-ssa-copy.c (merge_alias_info): Remove.
19849         (replace_exp_1): Remove call to merge_alias_info.
19850         (propagate_tree_value): Likewise.
19851         (fini_copy_prop): Propagate points-to info.
19852         * tree-flow.h (merge_alias_info): Remove.
19853
19854 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
19855
19856         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
19857
19858 2009-05-25  Jan Hubicka  <jh@suse.cz>
19859
19860         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
19861         * cgraph.h (struct inline_summary): New filed self_wize,
19862         size_inlining_benefit, self_time and time_inlining_benefit.
19863         (struct cgraph_global_info): Replace insns by time ans size fields.
19864         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
19865         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
19866         (ipcp_update_callgraph): Do not touch function bodies.
19867         * ipa-inline.c: Include except.h
19868         (MAX_TIME): New constant.
19869         (overall_insns): Remove.
19870         (leaf_node_p): New.
19871         (overall_size, max_benefit): New static variables.
19872         (cgraph_estimate_time_after_inlining): New function.
19873         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
19874         (cgraph_clone_inlined_nodes): Update size.
19875         (cgraph_mark_inline_edge): Update size.
19876         (cgraph_estimate_growth): Use size info.
19877         (cgraph_check_inline_limits): Check size.
19878         (cgraph_default_inline_p): Likewise.
19879         (cgraph_edge_badness): Compute badness based on benefit and size cost.
19880         (cgraph_decide_recursive_inlining): Check size.
19881         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
19882         and times.
19883         (cgraph_decide_inlining): Likewise.
19884         (cgraph_decide_inlining_incrementally): Likewise; honor
19885         PARAM_EARLY_INLINING_INSNS.
19886         (likely_eliminated_by_inlining_p): New predicate.
19887         (estimate_function_body_sizes): New function.
19888         (compute_inline_parameters): Use it.
19889         * except.c (must_not_throw_labels): New function.
19890         * except.h (must_not_throw_labels): Declare.
19891         * tree-inline.c (init_inline_once): Kill inlining_weigths
19892         * tree-ssa-structalias.c: Avoid uninitialized warning.
19893         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
19894         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
19895         (PARAM_INLINE_CALL_COST): Remove.
19896         (PARAM_EARLY_INLINING_INSNS): New.
19897
19898 2009-05-25  Richard Guenther  <rguenther@suse.de>
19899
19900         PR tree-optimization/36327
19901         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
19902         callback for reference translation or lookup at the point of may-defs.
19903         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
19904         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
19905         for union COMPONENT_REFs.
19906         (vn_reference_lookup_3): New callback.  Lookup from memset
19907         and CONSTRUCTOR assignment, translate through struct copies.
19908         (vn_reference_lookup_pieces): Make sure to not free the
19909         passed operands array.  Adjust walk_non_aliased_vuses call.
19910         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
19911         make sure we do not leak memory.
19912
19913 2009-05-25  Richard Guenther  <rguenther@suse.de>
19914
19915         * tree-ssa-alias.h (dump_points_to_solution): Declare.
19916         * tree-inline.c (expand_call_inline): Reset the escaped and
19917         callused solutions.
19918         * tree-ssa-structalias.c (pass_build_ealias): New.
19919         * tree-pass.h (pass_build_ealias): Declare.
19920         * passes.c (init_optimization_passes): Add PTA during
19921         early optimizations.
19922         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
19923         and CALLUSED solutions.
19924         (dump_points_to_solution): New function, split out from ...
19925         (dump_points_to_info_for): ... here.
19926         * tree-parloops.c (parallelize_loops): Reset the escaped and
19927         callused solutions.
19928
19929 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
19930
19931         PR bootstrap/40027
19932         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
19933         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
19934
19935 2009-05-25  Ira Rosen  <irar@il.ibm.com>
19936
19937         PR tree-optimization/40238
19938         * tree-vect-stmts.c (vect_init_vector): Insert initialization
19939         statements after basic block's labels.
19940         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
19941         to free the allocated memory.
19942
19943 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
19944
19945         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
19946         return address with a USE.
19947
19948 2009-05-24  Richard Guenther  <rguenther@suse.de>
19949
19950         PR middle-end/40233
19951         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
19952         array type from the main variant of the inner type.
19953
19954 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
19955
19956         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
19957         definition to bool (from int) to un-break build.
19958         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
19959
19960 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
19961
19962         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
19963         discard_stmt_changes): Delete.
19964         * tree-ssa-operands.c (scb_stack): Delete.
19965         (init_ssa_operands): Do not initialize it.
19966         (fini_ssa_operands): Do not free it.
19967         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
19968
19969         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
19970         update_stmt, remove the others.  Fix comments.
19971         * tree-dfa.c (optimize_stack_restore): Likewise.
19972         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
19973         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
19974         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
19975         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
19976         Likewise.
19977         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
19978         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
19979         (dom_opt_finalize_block): Likewise, adjusting access to
19980         stmts_to_rescan.
19981         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
19982         (stmts_to_rescan): Change item type to gimple.
19983         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
19984
19985 2009-05-24  Ira Rosen  <irar@il.ibm.com>
19986
19987         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
19988         * tree-pass.h (pass_slp_vectorize): New pass.
19989         * params.h (SLP_MAX_INSNS_IN_BB): Define.
19990         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
19991         * tree-vectorizer.c (timevar.h): Include.
19992         (user_vect_verbosity_level): Declare.
19993         (vect_location): Fix comment.
19994         (vect_set_verbosity_level): Update user_vect_verbosity_level
19995         instead of vect_verbosity_level.
19996         (vect_set_dump_settings): Add an argument. Ignore user defined
19997         verbosity if dump flags require higher level of verbosity. Print to
19998         stderr only for loop vectorization.
19999         (vectorize_loops): Update call to vect_set_dump_settings.
20000         (execute_vect_slp): New function.
20001         (gate_vect_slp): Likewise.
20002         (struct gimple_opt_pass pass_slp_vectorize): New.
20003         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
20004         access its members.
20005         (vec_info_for_bb): New function.
20006         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
20007         (VECTORIZATION_ENABLED): New macro.
20008         (SLP_ENABLED, SLP_DISABLED): Likewise.
20009         (vect_is_simple_use): Add bb_vec_info argument.
20010         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
20011         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
20012         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
20013         vect_schedule_slp, vect_analyze_slp): Likewise.
20014         (vect_analyze_stmt): Add slp_tree argument.
20015         (find_bb_location): Declare.
20016         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
20017         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
20018         (vect_analyze_loop_operations, vect_analyze_loop,
20019         get_initial_def_for_induction, vect_create_epilog_for_reduction,
20020         vect_finalize_reduction, vectorizable_reduction,
20021         vectorizable_live_operation, vect_transform_loop): Likewise.
20022         * tree-data-ref.c (dr_analyze_innermost): Update comment,
20023         skip evolution analysis if analyzing a basic block.
20024         (dr_analyze_indices): Likewise.
20025         (initialize_data_dependence_relation): Skip the test whether the
20026         object is invariant for basic blocks.
20027         (compute_all_dependences): Skip dependence analysis for data
20028         references in basic blocks.
20029         (find_data_references_in_stmt): Don't fail in case of invariant
20030         access in basic block.
20031         (find_data_references_in_bb): New function.
20032         (find_data_references_in_loop): Move code to
20033         find_data_references_in_bb and add a call to it.
20034         (compute_data_dependences_for_bb): New function.
20035         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
20036         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
20037         that STEP is 0.
20038         (vect_analyze_data_ref_dependence): Check for interleaving in case of
20039         unknown dependence in basic block and fail in case of dependence in
20040         basic block.
20041         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
20042         dependence instances from either loop or basic block vectorization
20043         info.
20044         (vect_compute_data_ref_alignment): Check if it is loop vectorization
20045         before calling nested_in_vect_loop_p.
20046         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
20047         dependence instances from either loop or basic block vectorization
20048         info.
20049         (vect_verify_datarefs_alignment): Likewise.
20050         (vect_enhance_data_refs_alignment): Adjust function calls.
20051         (vect_analyze_data_refs_alignment): Likewise.
20052         (vect_analyze_group_access): Fix printing. Skip different checks if
20053         DR_STEP is 0. Keep strided stores either in loop or basic block
20054         vectorization data structure. Fix indentation.
20055         (vect_analyze_data_ref_access): Fix comments, allow zero step in
20056         basic blocks.
20057         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
20058         dependence instances from either loop or basic block vectorization
20059         info.
20060         (vect_analyze_data_refs): Update comment. Call
20061         compute_data_dependences_for_bb to analyze basic blocks.
20062         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
20063         case of loop vectorization. In case of basic block vectorization use
20064         data-ref itself as a base.
20065         (vect_create_data_ref_ptr): In case of basic block vectorization:
20066         don't advance the pointer, add new statements before the current
20067         statement.  Adjust function calls.
20068         (vect_supportable_dr_alignment): Support only aligned accesses in
20069         basic block vectorization.
20070         * common.opt (ftree-slp-vectorize): New flag.
20071         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
20072         (vect_pattern_recog_1): Likewise.
20073         * tree-vect-stmts.c (process_use): Likewise.
20074         (vect_init_vector): Add new statements in the beginning of the basic
20075         block in case of basic block SLP.
20076         (vect_get_vec_def_for_operand): Adjust function calls.
20077         (vect_finish_stmt_generation): Likewise.
20078         (vectorizable_call): Add assert that it is loop vectorization, adjust
20079         function calls.
20080         (vectorizable_conversion, vectorizable_assignment): Likewise.
20081         (vectorizable_operation): In case of basic block SLP, take
20082         vectorization factor from statement's type and skip the relevance
20083         check. Adjust function calls.
20084         (vectorizable_type_demotion): Add assert that it is loop
20085         vectorization, adjust function calls.
20086         (vectorizable_type_promotion): Likewise.
20087         (vectorizable_store): Check for outer loop only in case of loop
20088         vectorization. Adjust function calls. For basic blocks, skip the
20089         relevance check and don't advance pointers.
20090         (vectorizable_load): Likewise.
20091         (vectorizable_condition): Add assert that it is loop vectorization,
20092         adjust function calls.
20093         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
20094         that it is not reduction, get vector type, call only supported
20095         functions, skip loop specific parts.
20096         (vect_transform_stmt): Check for outer loop only in case of loop
20097         vectorization.
20098         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
20099         (vect_is_simple_use): Fix comment, add new argument, fix conditions
20100         for external definition.
20101         * passes.c (pass_slp_vectorize): New pass.
20102         * tree-vect-slp.c (find_bb_location): New function.
20103         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
20104         check for patterns only in loops.
20105         (vect_build_slp_tree): Add argument, adjust function calls, fail in
20106         case of multiple types in basic block SLP.
20107         (vect_mark_slp_stmts_relevant): New function.
20108         (vect_supported_load_permutation_p): Fix comment.
20109         (vect_analyze_slp_instance): Add argument. In case of basic block
20110         SLP, take vectorization factor from statement's type, check that
20111         unrolling factor is 1. Adjust function call. Save SLP instance in
20112         either loop or basic block vectorization structure. Return FALSE,
20113         if SLP failed.
20114         (vect_analyze_slp): Add argument. Get strided stores groups from
20115         either loop or basic block vectorization structure. Return FALSE
20116         if basic block SLP failed.
20117         (new_bb_vec_info): New function.
20118         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
20119         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
20120         (vect_schedule_slp): Add argument. Get SLP instances from either
20121         loop or basic block vectorization structure. Set vectorization factor
20122         to be 1 for basic block SLP.
20123         (vect_slp_transform_bb): New function.
20124         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
20125
20126 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
20127
20128         * final.c (shorten_branches): Do not align labels for jump tables.
20129         (final_scan_insn): Use JUMP_TABLE_DATA_P.
20130
20131 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
20132
20133         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
20134         Remove outdated reference to flow.c and fix nits.
20135         * doc/gccint.texi: Tweak RTL description.
20136         * doc/rtl.texi: Likewise.
20137
20138 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
20139
20140         * config/avr/avr.c: Change my email address.
20141         * config/avr/avr.h: Likewise.
20142         * config/avr/avr.md: Likewise.
20143         * config/avr/avr-protos.h: Likewise.
20144         * config/avr/libgcc.S: Likewise.
20145
20146 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
20147
20148         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
20149         (spu_split_load, spu_split_store): Change return type to int.
20150         (spu_split_convert): Declare.
20151         * config/spu/predicates.md (spu_mem_operand): Remove.
20152         (spu_mov_operand): Update.
20153         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
20154         * config/spu/spu.c (regno_aligned_for_load): Remove.
20155         (reg_aligned_for_addr, spu_expand_load): Define.
20156         (spu_expand_extv): Reimplement and handle MEM.
20157         (spu_expand_insv): Handle MEM.
20158         (spu_sched_reorder): Handle insn's with length 0.
20159         (spu_legitimate_address_p): Reimplement.
20160         (store_with_one_insn_p): Return TRUE for any mode with size
20161         larger than 16 bytes.
20162         (address_needs_split): Define.
20163         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
20164         operands.
20165         (spu_convert_move): Define.
20166         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
20167         (spu_split_store): Change all MEM's to TImode.
20168         (spu_init_expanders): Preallocate registers that correspond to
20169         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
20170         mark_reg_pointer.
20171         (spu_split_convert): Define.
20172         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
20173         (_move<mode>, _movdi, _movti): Update predicate and condition.
20174         (load, store): Change to define_split.
20175         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
20176         extend<mode>ti2.
20177         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
20178         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
20179         define_insn_and_split of lshr<mode>3.
20180         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
20181         (<v>ashr<mode>3_imm): Define.
20182         (extv, extzv, insv): Allow MEM operands.
20183         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
20184         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
20185         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
20186         (_spu_convert2): Change to define_insn_and_split and remove the
20187         corresponding define_peephole2.
20188         (stack_protect_set, stack_protect_test, stack_protect_test_si):
20189         Change predicates to memory_operand.
20190
20191 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
20192
20193         * config/arm/thumb2.md: Add 16-bit multiply instructions.
20194
20195 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
20196
20197         PR tree-optimization/40219
20198         * tree.c (iterative_hash_expr): Make sure the builtin function is
20199         a normal builtin function and not a front end or back end builtin
20200         before indexing into the built_in_decls array.
20201
20202 2009-05-22  Richard Guenther  <rguenther@suse.de>
20203
20204         PR middle-end/38964
20205         * alias.c (write_dependence_p): Do not use TBAA for answering
20206         anti-dependence or output-dependence.
20207         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
20208         (emit_pointer_definition): Remove.
20209         (emit_alias_warning): Likewise.
20210         (find_what_var_points_to): Remove TBAA pruning code.
20211         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
20212         violations.
20213         (compute_points_to_sets): Remove code computing the set of
20214         dereferenced pointers.
20215         * tree-data-ref.c (dr_may_alias_p): Properly use the split
20216         oracle for querying anti and output dependencies.
20217         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
20218         if TBAA may be applied.
20219         (refs_anti_dependent_p): New function.
20220         (refs_output_dependent_p): Likewise.
20221         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
20222         (refs_output_dependent_p): Likewise.
20223         * doc/tree-ssa.texi (Memory model): New section.
20224         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
20225         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
20226         * cfgexpand.c (expand_gimple_basic_block): Do not handle
20227         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
20228         * expr.c (expand_expr_real_1): Likewise.
20229         * gimple-low.c (lower_stmt): Likewise.
20230         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
20231         (dump_gimple_cdt): Remove.
20232         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
20233         (gimple_size): Likewise.
20234         (walk_gimple_op): Likewise.
20235         (is_gimple_stmt): Likewise.
20236         (walk_stmt_load_store_addr_ops): Likewise.
20237         (gimple_build_cdt): Remove.
20238         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
20239         * gimple.h (gimple_cdt_new_type): Remove.
20240         (gimple_cdt_new_type_ptr): Likewise.
20241         (gimple_cdt_set_new_type): Likewise.
20242         (gimple_cdt_location): Likewise.
20243         (gimple_cdt_location_ptr): Likewise.
20244         (gimple_cdt_set_location): Likewise.
20245         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
20246         * tree-cfg.c (remove_useless_stmts_1): Do not handle
20247         GIMPLE_CHANGE_DYNAMIC_TYPE.
20248         (verify_types_in_gimple_stmt): Likewise.
20249         * tree-inline.c (estimate_num_insns): Likewise.
20250         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
20251         (copy_decl_to_var): Likewise.
20252         (copy_result_decl_to_var): Likewise.
20253         * tree-pretty-print.c (dump_generic_node): Do not handle
20254         CHANGE_DYNAMIC_TYPE_EXPR.
20255         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
20256         * tree-ssa-operands.c (get_expr_operands): Likewise.
20257         * tree-ssa-structalias.c (struct variable_info): Remove
20258         no_tbaa_pruning member.
20259         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
20260         (unify_nodes): Do not copy it.
20261         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
20262         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
20263         (set_uids_in_ptset): Do not check it.
20264         (find_what_var_points_to): Likewise.
20265         (compute_tbaa_pruning): Remove.
20266         (compute_points_to_sets): Do not call it.
20267         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
20268         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
20269         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
20270         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
20271         (DECL_NO_TBAA_P): Likewise.
20272         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
20273         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
20274         (expand_omp_atomic_pipeline): Do not set it.
20275         * print-tree.c (print_node): Do not dump it.
20276         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
20277         redundant check.
20278
20279 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
20280
20281         PR target/39856
20282         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
20283         for clobber.
20284
20285 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
20286
20287         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
20288         non-external.
20289
20290 2009-05-22  Ben Elliston  <bje@au.ibm.com>
20291
20292         * Makefile.in (bversion.h, s-bversion): New targets.
20293         (TOPLEV_H): Add bversion.h.
20294         * toplev.h: Include "bversion.h".
20295         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
20296         the __format__ attribute only if compiling with the same version
20297         of GCC as the sources (the "build version").
20298
20299 2009-05-22  Ben Elliston  <bje@au.ibm.com>
20300
20301         * c-format.c (handle_format_attribute): Fix comment typo.
20302
20303 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
20304
20305         PR target/37846
20306         * config/ia64/ia64.opt (mfused-madd): New.
20307         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
20308         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
20309         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
20310         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
20311         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
20312         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
20313         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
20314         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
20315         instruction if !TARGET_FUSED_MADD.
20316         (fpma, fpms): Remove colon from name.
20317
20318 2009-05-22  Richard Guenther  <rguenther@suse.de>
20319
20320         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
20321         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
20322         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
20323         TARGET_MEM_REF.
20324         (create_expression_by_pieces): Only convert if necessary.
20325         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
20326         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
20327
20328 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
20329
20330         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
20331         regular pattern from a template and rename it ...
20332         (*extzv_truncsi_exts): ... to this.
20333
20334 2009-05-21  Richard Guenther  <rguenther@suse.de>
20335
20336         * cgraph.h (struct cgraph_node): Remove inline_decl member.
20337         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
20338         (cgraph_default_inline_p): Likewise.
20339         (cgraph_decide_inlining_incrementally): Likewise.
20340
20341 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
20342             Uros Bizjak  <ubizjak@gmail.com>
20343
20344         * config/i386/cpuid.h (bit_MOVBE): New.
20345
20346         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
20347
20348         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
20349         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
20350         (ix86_handle_option): Handle OPT_mmovbe.
20351         (ix86_target_string): Add -mmovbe.
20352         (pta_flags): Add PTA_MOVBE.
20353         (processor_alias_table): Add PTA_MOVBE to "atom".
20354         (override_options): Handle PTA_MOVBE.
20355
20356         * config/i386/i386.h (TARGET_MOVBE): New.
20357
20358         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
20359         (*bswapsi_movbe): New.
20360         (*bswapdi_movbe): Likewise.
20361         (bswapdi2): Renamed to ...
20362         (*bswapdi_1): This.
20363         (bswapdi2): New expander.
20364
20365         * config/i386/i386.opt (mmovbe): New.
20366
20367         * doc/invoke.texi: Document -mmovbe.
20368
20369 2009-05-21  Taras Glek  <tglek@mozilla.com>
20370
20371         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
20372         * gcc-plugin.h (plugin_init): Updated signature.
20373         * gcc-plugin.h (plugin_name_args): Moved to this header.
20374         * doc/plugins.texi (plugin_init): Updated documention to reflect
20375         API change.
20376         * doc/plugins.texi (plugin_name_args): Added to documention.
20377
20378 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
20379
20380         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
20381         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
20382
20383 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
20384
20385         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
20386         JUMP_TABLE_DATA_P predicates where applicable.
20387         * config/i386/predicates.md: Ditto.
20388         * config/i386/sse.md: Ditto.
20389
20390 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
20391
20392         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
20393         operand2 -128 override length_immediate attribute to 1.
20394         * config/i386/predicates.md (constm128_operand): New predicate.
20395
20396         * config/i386/i386.c (memory_address_length): Handle %r12
20397         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
20398         also check REGNO.
20399         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
20400         mode look through optional ZERO_EXTEND and SUBREG.
20401         * config/i386/i386.md (R12_REG): New define_constant.
20402         (prefix_data16): For sse unit set also for MODE_TI insns.
20403         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
20404         insns set if operand 1 is ext_QIreg_operand.
20405         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
20406         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
20407         immediate.
20408         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
20409         mode from MODE_DI to MODE_SI.
20410         (movdi_1_rex64): Override modrm and length_immediate attributes
20411         only for movabs (TYPE_IMOV, alternative 2).
20412         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
20413         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
20414         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
20415         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
20416         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
20417         prefix_rex attribute if DImode.
20418         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
20419         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
20420         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
20421         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
20422         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
20423         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
20424         Likewise.  For TYPE_IMOV clear length_immediate attribute.
20425         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
20426         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
20427         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
20428         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
20429         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
20430         or one operand TYPE_ISHIFT.
20431         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
20432         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
20433         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
20434         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
20435         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
20436         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
20437         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
20438         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
20439         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
20440         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
20441         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
20442         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
20443         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
20444         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
20445         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
20446         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
20447         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
20448         set mode attribute, don't override length attribute.
20449         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
20450         to 1.
20451         (return_internal_long): Set length attribute to 2 instead of 1.
20452         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
20453         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
20454         prefix_rex attribute.
20455         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
20456         New predicates.
20457         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
20458
20459 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
20460
20461         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
20462
20463 2009-05-20  Ian Lance Taylor  <iant@google.com>
20464
20465         * tree.c (build_tree_list_vec_stat): New function.
20466         (ctor_to_vec): New function.
20467         (build_nt_call_vec): New function.
20468         (build_call_array): Change args to be a const pointer.
20469         (build_call_vec): New function.
20470         * tree.h (build_nt_call_vec): Declare.
20471         (build_tree_list_vec_stat): Declare.
20472         (build_tree_list_vec): Define.
20473         (build_call_array): Update declaration.
20474         (build_call_vec): Declare.
20475         (ctor_to_vec): Declare.
20476         * c-common.c (tree_vector_cache): New static variable.
20477         (make_tree_vector): New function.
20478         (release_tree_vector): New function.
20479         (make_tree_vector_single): New function.
20480         (make_tree_vector_copy): New function.
20481         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
20482         (make_tree_vector_single, make_tree_vector_copy): Declare.
20483         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
20484         (c_parser_expr_list): Don't manage cache here, instead call
20485         make_tree_vector.
20486         (c_parser_release_expr_list): Remove static function.
20487         (c_parser_vec_to_tree_list): Remove static function.
20488         (c_parser_attributes): Call build_tree_list_vec instead of
20489         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
20490         c_parser_release_expr_list.
20491         (c_parser_postfix_expression_after_primary): Likewise.
20492         (c_parser_objc_keywordexpr): Likewise.
20493
20494 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
20495
20496         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
20497         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
20498         TARGET_CONVERT_TO_TYPE.
20499         * hooks.c (hook_tree_const_tree_null): Define.
20500         * hooks.h (hook_tree_const_tree_null): Declare.
20501         * target.h (struct gcc_target):  Add invalid_parameter_type,
20502         invalid_return_type, promoted_type, and convert_to_type fields.
20503         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
20504         (TARGET_INVALID_RETURN_TYPE): Define.
20505         (TARGET_PROMOTED_TYPE): Define.
20506         (TARGET_CONVERT_TO_TYPE): Define.
20507         (TARGET_INITIALIZER): Update for new fields.
20508         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
20509         (grokparms): Check targetm.invalid_parameter_type.
20510         * c-typeck.c (default_conversion): Check targetm.promoted_type.
20511         * c-convert.c (convert): Check targetm.convert_to_type.
20512
20513 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
20514
20515         * config/mips/mips.md (*extenddi_truncate<mode>,
20516         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
20517         defintions.
20518         (*extendhi_truncateqi): New define_insn_and_sptit.
20519
20520 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
20521
20522         PR middle-end/40204
20523         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
20524         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
20525
20526 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
20527
20528         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
20529         the operand of VIEW_CONVERT_EXPR.
20530
20531 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
20532
20533         * config/i386/driver-i386.c (host_detect_local_cpu): Check
20534         extended family and model for Intel processors.  Support Intel Atom.
20535
20536 2009-05-20  Olivier Hainque  <hainque@adacore.com>
20537
20538         * gstab.h (stab_code_type): Define, to be used instead of the
20539         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
20540         notice.
20541         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
20542         occurrences by stab_code_type.
20543         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
20544
20545 2009-05-20  Martin Jambor  <mjambor@suse.cz>
20546
20547         * tree-flow.h (insert_edge_copies_seq): Undeclare.
20548         (sra_insert_before): Likewise.
20549         (sra_insert_after): Likewise.
20550         (sra_init_cache): Likewise.
20551         (sra_type_can_be_decomposed_p): Likewise.
20552         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
20553         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
20554         (sra_insert_before): Likewise.
20555         (sra_insert_after): Likewise.
20556         (sra_init_cache): Likewise.
20557         (insert_edge_copies_seq): Made static and moved upwards.
20558
20559         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
20560         case.
20561
20562         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
20563
20564         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
20565         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
20566         simple copies.
20567
20568 2009-05-20  Richard Guenther  <rguenther@suse.de>
20569
20570         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
20571         with mismatched comparison modes.
20572
20573 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
20574
20575         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
20576         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
20577         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
20578         with shifts for Thumb2.
20579         (orsi_notsi): New for orn.
20580         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
20581         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
20582         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
20583         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
20584         Don't invert remainder for IOR.
20585
20586 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
20587
20588         PR tree-optimization/40087
20589         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
20590         number_of_iterations_ne): Rename never_infinite argument.
20591         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
20592         number_of_iterations_le): Handle pointer-type ivs when
20593         exit_must_be_taken is false.
20594         (number_of_iterations_cond):  Do not always assume that
20595         exit_must_be_taken if the control variable is a pointer.
20596
20597 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20598
20599         * c-typeck.c (build_binary_op): Allow % on integal vectors.
20600         * doc/extend.texi (Vector Extension): Document that % is allowed too.
20601
20602 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
20603
20604         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
20605         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
20606
20607 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20608
20609         PR c/40172
20610         * c.opt (Wlogical-op): Disabled by default.
20611         * c-opt (c_common_post_options): Do not enable Wlogical-op with
20612         Wextra.
20613         * doc/invoke.texi (Wlogical-op): Likewise.
20614
20615 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
20616
20617         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
20618         into CASE_CONVERT.
20619         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
20620         Propagate the type of the first operand.
20621         <ASSERT_EXPR>: Simplify.
20622         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
20623         Rewrite using the RHS code as discriminant.
20624         <NOP_EXPR>: Turn into CASE_CONVERT.
20625         <PLUS_EXPR>: Propagate the type of the first operand.
20626
20627 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
20628
20629         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
20630         (ia64_dconst_0_375): New.
20631         * config/ia64/ia64.c (ia64_override_options): Remove
20632         -minline-sqrt-min-latency warning.
20633         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
20634         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
20635         * config/ia64/ia64.md (*sqrt_approx): Remove.
20636         (sqrtsf2): Remove #if 0.
20637         (sqrtsf2_internal_thr): Rewrite and move to div.md.
20638         (sqrtdf): Remove assert.
20639         (sqrtdf2_internal_thr): Rewrite and move to div.md.
20640         (sqrtxf2): Remove #if 0.
20641         (sqrtxf2_internal_thr): Rewrite and move to div.md.
20642         * div.md (sqrt_approx_rf): New.
20643         (sqrtsf2_internal_thr): New implementation.
20644         (sqrtsf2_internal_lat): New.
20645         (sqrtdf2_internal_thr: New implementation.
20646         (sqrtxf2_internal): New implementation.
20647
20648 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
20649             Hans-Peter Nilsson  <hp@axis.com>
20650
20651         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
20652         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
20653         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
20654         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
20655         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
20656         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
20657         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
20658         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
20659         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
20660         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
20661         * c-common.c: ...from here.
20662
20663 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20664
20665         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
20666
20667 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20668
20669         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
20670
20671 2009-05-19  Ben Elliston  <bje@au.ibm.com>
20672
20673         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
20674         assignments with memcpy calls.
20675         (add_fdes): Likewise.
20676         (binary_search_unencoded_fdes): Likewise.
20677         (linear_search_fdes): Eliminate type puns.
20678
20679 2009-05-19  Richard Guenther  <rguenther@suse.de>
20680
20681         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
20682         not falsely claim to have propagated into all uses.
20683
20684 2009-05-19  Ben Elliston  <bje@au.ibm.com>
20685
20686         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
20687         version to v3.0.
20688
20689 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
20690
20691         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
20692         * config/sh/sh.c (sh_legitimate_address_p): Make static.
20693         (TARGET_LEGITIMATE_ADDRESS_P): New.
20694         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20695         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
20696
20697 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
20698
20699         PR debug/40109
20700         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
20701         child of the containing namespace's DIE.
20702
20703 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
20704
20705         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
20706         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
20707         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
20708         extend patterns.
20709
20710 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
20711
20712         PR target/39942
20713         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
20714         gen_align with gen_pad.
20715         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
20716         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
20717
20718         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
20719         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
20720
20721         * config/i386/i386.md (align): Renamed to ...
20722         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
20723         ASM_OUTPUT_MAX_SKIP_PAD.
20724
20725 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
20726
20727         * config.gcc: Fix variable syntax.
20728
20729         PR target/39531
20730         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
20731         before calling exact_log2.
20732         (output_iorsi3): Likewise.
20733         (output_xorsi3): Likewise.
20734
20735 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
20736
20737         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
20738         for the none zero constant operand except for EQ and NE
20739         comprisons even when the first operand is R0.
20740
20741 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
20742
20743         * config/s390/2064.md: Remove trailing whitespaces.
20744         * config/s390/2084.md: Likewise.
20745         * config/s390/constraints.md: Likewise.
20746         * config/s390/fixdfdi.h: Likewise.
20747         * config/s390/libgcc-glibc.ver: Likewise.
20748         * config/s390/s390-modes.def: Likewise.
20749         * config/s390/s390-protos.h: Likewise.
20750         * config/s390/s390.c: Likewise.
20751         * config/s390/s390.h: Likewise.
20752         * config/s390/s390.md: Likewise.
20753         * config/s390/tpf-unwind.h: Likewise.
20754
20755 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
20756
20757         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
20758
20759 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
20760
20761         M68K TLS support.
20762         * configure.ac (m68k-*-*): Check if binutils support TLS.
20763         * configure: Regenerate.
20764         * config/m68k/predicates.md (symbolic_operand): Extend comment.
20765         * config/m68k/constraints.md (Cu): New constraint.
20766         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
20767         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
20768         (movsi): Handle TLS symbols.
20769         (addsi3_5200): Handle XTLS symbols, indent.
20770         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
20771         (m68k_tls_reference_p): Declare.
20772         (m68k_legitimize_address): Declare.
20773         (m68k_unwrap_symbol): Declare.
20774         * config/m68k/m68k.opt (mxtls): New option.
20775         * config/m68k/m68k.c (ggc.h): Include.
20776         (m68k_output_dwarf_dtprel): Implement hook.
20777         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
20778         (m68k_expand_prologue): Load GOT pointer when function needs it.
20779         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
20780         (m68k_legitimate_constant_address_p): Same.
20781         (m68k_decompose_address): Handle TLS references.
20782         (m68k_get_gp): New static function.
20783         (enum m68k_reloc): New contants.
20784         (TLS_RELOC_P): New macro.
20785         (m68k_wrap_symbol): New static function.
20786         (m68k_unwrap_symbol): New function.
20787         (m68k_final_prescan_insn_1): New static function.
20788         (m68k_final_prescan_insn): New function.
20789         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
20790         functions.
20791         (legitimize_pic_address): Handle TLS references..
20792         (m68k_tls_get_addr, m68k_get_tls_get_addr)
20793         (m68k_libcall_value_in_a0_p)
20794         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
20795         (m68k_call_m68k_read_tp): Helper variables and functions for ...
20796         (m68k_legitimize_tls_address): Handle TLS references.
20797         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
20798         New functions.
20799         (m68k_legitimize_address): Handle TLS symbols.
20800         (m68k_get_reloc_decoration): New static function.
20801         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
20802         UNSPEC_RELOC32.
20803         (m68k_output_dwarf_dtprel): Implement hook.
20804         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
20805         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
20806         m68k_call_* routines.
20807         (sched_attr_op_type): Handle TLS symbols.
20808         (gt-m68k.h): Include.
20809         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
20810         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
20811
20812 2009-05-18  Martin Jambor  <mjambor@suse.cz>
20813
20814         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
20815         (visit_store_addr_for_mod_analysis): New function.
20816         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
20817         (determine_cst_member_ptr): Use gimple_assign_single_p.
20818         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
20819         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
20820         operands.  Don't check number of operands of a NOP_EXPR.
20821
20822 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
20823
20824         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
20825
20826 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20827
20828         PR c/40172
20829         * c-common.c (warn_logical_operator): Don't warn if one of
20830         expression isn't always true or false.
20831
20832 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
20833
20834         * config/i386/biarch32.h: New file.
20835         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
20836
20837 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
20838
20839         * config/mips/mips.md (*zero_extend<mode>_trunchi,
20840         *zero_extend<mode>_truncqi): Merge these into ...
20841         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
20842         Name the pattern following this as *zero_extendhi_truncqi.
20843
20844 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
20845
20846         PR middle-end/39301
20847         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
20848         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
20849         (output_info): Make field HOST_WIDEST_INT.
20850         (print_statistics): Use HOST_WIDEST_INT_PRINT.
20851         (dump_bitmat_statistics): Same.
20852
20853 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
20854
20855         * config.gcc (use_gcc_stdint):  Set to wrap.
20856         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
20857         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
20858         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
20859         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
20860         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
20861         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
20862         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
20863         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
20864
20865 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
20866
20867         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
20868         tune_64.
20869         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
20870         Move definitions earlier.
20871         (OPT_ARCH64, OPT_ARCH32): Define.
20872         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
20873         and tune_64.
20874
20875 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
20876
20877         PR target/40153
20878         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
20879         implies.
20880
20881 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
20882
20883         * arm.md (movdi2): Copy non-reg values to DImode registers.
20884
20885 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
20886
20887         PR target/39942
20888         * final.c (label_to_max_skip): New function.
20889         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
20890         CODE_LABEL_NUMBER <= max_labelno.
20891         * output.h (label_to_max_skip): New prototype.
20892         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
20893         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
20894         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
20895         Handle CODE_LABELs with >= 16 byte alignment or with
20896         max_skip == (1 << align) - 1.
20897         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
20898         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
20899
20900         PR target/39942
20901         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
20902         .p2align 3 if MAX_SKIP is smaller than 7.
20903         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
20904
20905 2009-05-15  Ian Lance Taylor  <iant@google.com>
20906
20907         * alias.c (struct alias_set_entry_d): Rename from struct
20908         alias_set_entry.  Change all uses.
20909         * except.c (struct call_site_record_d): Rename from struct
20910         call_site_record.  Change all uses.
20911         * except.h (struct eh_region_d): Rename from struct eh_region.
20912         Change all uses.
20913         * gcse.c (struct hash_table_d): Rename from struct hash_table.
20914         Change all uses.
20915         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
20916         ivtype_map_elt.  Change all uses.
20917         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
20918         Change all uses.
20919         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
20920         * graphite.h (struct name_tree_d): Rename from struct name_tree.
20921         Change all uses.
20922         (struct sese_d): Rename from struct sese.  Change all uses.
20923         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
20924         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
20925         * optabs.h (struct optab_d): Rename from struct optab.  Change all
20926         uses.
20927         (struct convert_optab_d): Rename from struct convert_optab.
20928         Change all uses.
20929         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
20930         ipa_opt_pass.  Change all uses.
20931         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
20932         all uses.
20933
20934         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
20935         defined as a typedef.
20936         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
20937         defined as a tag.
20938
20939 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20940
20941         PR 16302
20942         * fold-const.c (make_range,build_range_check,merge_ranges): Move
20943         declaration to...
20944         (merge_ranges): Returns bool.
20945         * tree.h (make_range): .. to here.
20946         (build_range_check): Likewise.
20947         (merge_ranges): Likewise. Renamed from merge_ranges.
20948         * c-typeck.c (parser_build_binary_op): Update calls to
20949         warn_logical_operator.
20950         * c-common.c (warn_logical_operator): Add new warning.
20951         * c-common.h (warn_logical_operator): Update declaration.
20952
20953 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20954
20955         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
20956
20957 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20958
20959         * doc/install.texi: Document MPC requirements, flags etc.
20960
20961         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
20962         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
20963         Evaluate constant arguments.
20964         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
20965         (fold_builtin_1): Likewise, also evaluate constant arguments.
20966         Remove superfluous break.
20967         (do_mpc_ckconv): New.
20968         * real.h: Include mpc.h.
20969         * toplev.c (print_version): Output MPC version info if available.
20970
20971 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20972
20973         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
20974
20975 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
20976
20977         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
20978         only once.
20979
20980 2009-05-15  Jan Hubicka  <jh@suse.cz>
20981
20982         * doc/invoke.texi (max-early-inliner-iterations): New flag.
20983         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
20984         (try_inline): Fix return value.
20985         (cgraph_decide_inlining_incrementally): Honor new value.
20986         (cgraph_early_inlining): Handle indirect inlining.
20987         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
20988
20989 2009-05-15  Jan Hubicka  <jh@suse.cz>
20990
20991         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
20992         * cgraphunit.c (cgraph_finalize_function): Set it.
20993         (cgraph_expand_function): Use it.
20994
20995 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20996
20997         * real.c (encode_ieee_half): Define.
20998         (decode_ieee_half): Define.
20999         (ieee_half_format): Define.
21000         (arm_half_format): Define.
21001         * real.h (ieee_half_format): Declare.
21002         (arm_half_format): Declare.
21003
21004 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21005
21006         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
21007         swapped, and reversed optabs exist before trying to use them.
21008
21009 2009-05-15  Paul Brook  <paul@codesourcery.com>
21010             Sandra Loosemore  <sandra@codesourcery.com>
21011
21012         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
21013         loads.  Allow PRE_DEC.
21014         (output_move_neon): Handle PRE_DEC.
21015         (arm_print_operand): Add 'A' for neon structure loads.
21016         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
21017         * config/arm/neon.md (neon_mov): Update comment.
21018         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
21019         calls.
21020         (Um): New constraint.
21021
21022 2009-05-15  Jan Hubicka  <jh@suse.cz>
21023
21024         Revert the following patch until testsuite fallout is fixed:
21025         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21026         * cgraph.h (struct inline_summary): New filed self_wize,
21027         size_inlining_benefit, self_time and time_inlining_benefit.
21028         (struct cgraph_global_info): Replace insns by time ans size fields.
21029         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21030         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21031         (ipcp_update_callgraph): Do not touch function bodies.
21032         * ipa-inline.c: Include except.h
21033         (MAX_TIME): New constant.
21034         (overall_insns): Remove
21035         (overall_size, max_benefit): New static variables.
21036         (cgraph_estimate_time_after_inlining): New function.
21037         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21038         (cgraph_clone_inlined_nodes): Update size.
21039         (cgraph_mark_inline_edge): Update size.
21040         (cgraph_estimate_growth): Use size info.
21041         (cgraph_check_inline_limits): Check size.
21042         (cgraph_default_inline_p): Likewise.
21043         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21044         (cgraph_decide_recursive_inlining): Check size.
21045         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21046         and times.
21047         (cgraph_decide_inlining): Likewise.
21048         (cgraph_decide_inlining_incrementally): Likewise; honor
21049         PARAM_EARLY_INLINING_INSNS.
21050         (likely_eliminated_by_inlining_p): New predicate.
21051         (estimate_function_body_sizes): New function.
21052         (compute_inline_parameters): Use it.
21053         * except.c (must_not_throw_labels): New function.
21054         * except.h (must_not_throw_labels): Declare.
21055         * tree-inline.c (init_inline_once): Kill inlining_weigths
21056         * tree-ssa-structalias.c: Avoid uninitialized warning.
21057         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
21058         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
21059         (PARAM_INLINE_CALL_COST): Remove.
21060         (PARAM_EARLY_INLINING_INSNS): New.
21061
21062 2009-05-15  Richard Guenther  <rguenther@suse.de>
21063
21064         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
21065         not TODO_update_ssa.
21066
21067 2009-05-15  Richard Guenther  <rguenther@suse.de>
21068
21069         PR tree-optimization/39999
21070         * gimple.h (gimple_expr_type): Use the expression type looking
21071         through useless conversions.
21072         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
21073         (vn_nary_op_insert_stmt): Likewise.
21074         (simplify_binary_expression): Likewise.
21075
21076 2009-05-15  Richard Guenther  <rguenther@suse.de>
21077
21078         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
21079         New options, enabled by default.
21080         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
21081         Document.
21082         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
21083         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
21084         * tree-ssa-structalias.c (gate_tree_pta): New function.
21085         (pass_build_alias): Use it.
21086
21087 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
21088
21089         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
21090         recurse on an invariant address if a conversion from a pointer
21091         type to a wider integer type is involved.
21092
21093 2009-05-15  Jan Hubicka  <jh@suse.cz>
21094
21095         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21096         * cgraph.h (struct inline_summary): New filed self_wize,
21097         size_inlining_benefit, self_time and time_inlining_benefit.
21098         (struct cgraph_global_info): Replace insns by time ans size fields.
21099         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21100         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21101         (ipcp_update_callgraph): Do not touch function bodies.
21102         * ipa-inline.c: Include except.h
21103         (MAX_TIME): New constant.
21104         (overall_insns): Remove
21105         (overall_size, max_benefit): New static variables.
21106         (cgraph_estimate_time_after_inlining): New function.
21107         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21108         (cgraph_clone_inlined_nodes): Update size.
21109         (cgraph_mark_inline_edge): Update size.
21110         (cgraph_estimate_growth): Use size info.
21111         (cgraph_check_inline_limits): Check size.
21112         (cgraph_default_inline_p): Likewise.
21113         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21114         (cgraph_decide_recursive_inlining): Check size.
21115         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21116         and times.
21117         (cgraph_decide_inlining): Likewise.
21118         (cgraph_decide_inlining_incrementally): Likewise; honor
21119         PARAM_EARLY_INLINING_INSNS.
21120         (likely_eliminated_by_inlining_p): New predicate.
21121         (estimate_function_body_sizes): New function.
21122         (compute_inline_parameters): Use it.
21123         * except.c (must_not_throw_labels): New function.
21124         * except.h (must_not_throw_labels): Declare.
21125         * tree-inline.c (init_inline_once): Kill inlining_weigths
21126         * tree-ssa-structalias.c: Avoid uninitialized warning.
21127         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
21128         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
21129         (PARAM_INLINE_CALL_COST): Remove.
21130         (PARAM_EARLY_INLINING_INSNS): New.
21131         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
21132         (inline-call-cost): Remove.
21133         (early-inlining-insns): New.
21134
21135 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
21136
21137         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
21138         for bounds.
21139         (print_int_cst_bounds_in_octal_p): Likewise.
21140         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
21141         with subtypes.
21142         * dwarf2out.c (base_type_die): Likewise.
21143         (is_subrange_type): Delete.
21144         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
21145         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
21146         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
21147         if the destination type is boolean.
21148         (build_range_check): Do not special-case subtypes.
21149         (fold_sign_changed_comparison): Likewise.
21150         (fold_unary): Likewise.
21151         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
21152         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
21153         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
21154         * tree.c (subrange_type_for_debug_p): New predicate based on the
21155         former is_subrange_type.
21156         * tree.h (subrange_type_for_debug_p): Declare.
21157         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
21158         (convert_affine_scev): Remove call to above function.
21159         (chrec_convert_aggressive): Likewise.
21160         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
21161         false for conversions involving subtypes.
21162         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
21163         (vrp_val_min): Likewise.
21164         (needs_overflow_infinity): Likewise.
21165         (extract_range_from_unary_expr): Likewise.
21166
21167 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
21168
21169         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
21170         * config/frv/frv.c: Likewise.
21171         * config/s390/s390.c: Likewise.
21172         * config/sparc/sparc.h: Likewise.
21173         * config/i386/i386.h: Likewise.
21174         * config/i386/i386.c: Likewise.
21175         * config/crx/crx.c: Likewise.
21176         * config/m68hc11/m68hc11.h: Likewise.
21177         * config/iq2000/iq2000.c: Likewise.
21178         * config/mn10300/mn10300.h: Likewise.
21179         * config/mn10300/mn10300.c: Likewise.
21180         * config/m68k/m68k.c: Likewise.
21181         * config/rs6000/rs6000.c: Likewise.
21182         * config/rs6000/xcoff.h: Likewise.
21183         * config/rs6000/linux64.h: Likewise.
21184         * config/rs6000/sysv4.h: Likewise.
21185         * config/score/score3.c: Likewise.
21186         * config/score/score7.c: Likewise.
21187         * config/score/score.c: Likewise.
21188         * config/arm/arm.md: Likewise.
21189         * config/mips/mips.c: Likewise.
21190         * config/mips/mips.md: Likewise.
21191         * config/bfin/bfin.h: Likewise.
21192         * config/pa/pa.c: Likewise.
21193         * config/pa/constraints.md: Likewise.
21194
21195         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
21196         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
21197         * config/pdp11/pdp11.h: Use memory_address_p instead.
21198
21199 2009-05-14  Ian Lance Taylor  <iant@google.com>
21200
21201         * passes.c (finish_optimization_passes): Change i to int.
21202         * plugin.c (plugins_active_p): Change event to int.
21203         (dump_active_plugins): Likewise.
21204         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
21205         Add cast.
21206         * tree.c (tree_range_check_failed): Change c to unsigned int.
21207         (omp_clause_range_check_failed): Likewise.
21208         (build_common_builtin_nodes): Change mode to int.  Add cast.
21209         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
21210         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
21211
21212         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
21213         ++ or -- with a variable of enum type.
21214
21215 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21216
21217         PR driver/40144
21218         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
21219
21220 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21221
21222         * store-motion.c: Do not include params.h
21223         * Makefile.in: Fix dependencies for various files.
21224
21225 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21226
21227         * auto-inc-dec.c: Fix pass description, remove apparent
21228         accidental duplication.
21229
21230 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
21231
21232         PR middle-end/40147
21233         * ipa-utils.h (memory_identifier_string): Moved to ...
21234         * tree.h (memory_identifier_string): Here.  Add GTY(()).
21235
21236 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
21237
21238         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
21239         in the former documentation of...
21240         (GO_IF_LEGITIMATE_ADDRESS): ... this.
21241         * ira-conflicts.c (get_dup_num): Use address_operand.
21242         * targhooks.c (default_legitimate_address_p): New.
21243         * targhooks.h (default_legitimate_address_p): New.
21244         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
21245         Call hook.
21246         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
21247         * target.h (struct target): Add legitimate_address_p.
21248         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
21249         (TARGET_INITIALIZER): Include it.
21250
21251         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21252         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
21253         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
21254         (TARGET_LEGITIMATE_ADDRESS_P): New.
21255
21256         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21257         (REG_OK_STRICT_P): Delete.
21258         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
21259         (frv_legitimate_address_p_1): ... this.
21260         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
21261         (frv_legitimate_address_p_1): ... the renamed old
21262         frv_legitimate_address_p.
21263         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
21264         (TARGET_LEGITIMATE_ADDRESS_P): New.
21265
21266         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21267         * config/s390/s390-protos.h (legitimate_address_p): Remove.
21268         * config/s390/s390.c (legitimate_address_p): Rename to...
21269         (s390_legitimate_address_p): ... this, make static.
21270         (legitimize_address): Adjust call.
21271         (TARGET_LEGITIMATE_ADDRESS_P): New.
21272         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
21273
21274         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21275         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
21276         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
21277         (TARGET_LEGITIMATE_ADDRESS_P): New.
21278
21279         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21280         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
21281         * config/spu/spu.c (spu_legitimate_address): Rename to...
21282         (spu_legitimate_address_p): ... this, make static.
21283         (TARGET_LEGITIMATE_ADDRESS_P): New.
21284
21285         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21286         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
21287         * config/sparc/sparc.c (legitimate_address_p): Rename to...
21288         (sparc_legitimate_address_p): ... this, make static and return bool.
21289         (legitimize_address): Adjust call.
21290         (TARGET_LEGITIMATE_ADDRESS_P): New.
21291
21292         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21293         * config/i386/i386-protos.h (legitimate_address_p): Remove.
21294         * config/i386/i386.c (legitimate_address_p): Rename to...
21295         (ix86_legitimate_address_p): ... this, make static.
21296         (constant_address_p): Move after it, adjust call.
21297         (TARGET_LEGITIMATE_ADDRESS_P): New.
21298
21299         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21300         * config/avr/avr-protos.h (legitimate_address_p): Remove.
21301         * config/avr/avr.c (legitimate_address_p): Rename to...
21302         (avr_legitimate_address_p): ... this, make static.
21303         (legitimize_address): Adjust call.
21304         (TARGET_LEGITIMATE_ADDRESS_P): New.
21305
21306         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21307         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
21308         * config/crx/crx.c (crx_legitimate_address_p): Make static.
21309         (TARGET_LEGITIMATE_ADDRESS_P): New.
21310
21311         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21312         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
21313         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
21314         (TARGET_LEGITIMATE_ADDRESS_P): New.
21315
21316         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21317         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
21318         Remove.
21319         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
21320         Make static.
21321         (TARGET_LEGITIMATE_ADDRESS_P): New.
21322
21323         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21324         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
21325         Remove.
21326         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
21327         Rename to...
21328         (m68hc11_legitimate_address_p): ... this, make static.
21329         (go_if_legitimate_address_internal): Rename to...
21330         (m68hc11_legitimate_address_p_1): ... this.
21331         (legitimize_address): Adjust call.
21332         (TARGET_LEGITIMATE_ADDRESS_P): New.
21333
21334         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21335         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
21336         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
21337         (TARGET_LEGITIMATE_ADDRESS_P): New.
21338
21339         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21340         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
21341         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
21342         (mn10300_legitimate_address_p): ... this, make static.
21343         (TARGET_LEGITIMATE_ADDRESS_P): New.
21344
21345         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21346         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
21347         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
21348         (TARGET_LEGITIMATE_ADDRESS_P): New.
21349
21350         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21351         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
21352         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
21353         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21354         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
21355         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
21356         (rs6000_legitimate_address_p): ... this, make static.
21357         (TARGET_LEGITIMATE_ADDRESS_P): New.
21358         (REG_MODE_OK_FOR_BASE_P): Delete.
21359         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
21360
21361         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21362         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
21363         Delete.
21364         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
21365         static, adjust types.
21366         (TARGET_LEGITIMATE_ADDRESS_P): New.
21367
21368         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21369         * config/score/score.c (score_address_p): Rename to...
21370         (score_legitimate_address_p): ... this.
21371         (TARGET_LEGITIMATE_ADDRESS_P): New.
21372         * config/score/score3.c (score3_address_p): Rename to...
21373         (score3_legitimate_address_p): ... this.
21374         * config/score/score7.c (score7_address_p): Rename to...
21375         (score7_legitimate_address_p): ... this.
21376
21377         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
21378         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
21379         GO_IF_LEGITIMATE_ADDRESS): Delete.
21380         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
21381         thumb2_legitimate_address_p): Delete.
21382         (arm_legitimate_address_p): Rename to...
21383         (arm_legitimate_address_outer_p): ... this.
21384         * config/arm/constraints.md ("Uq"): Adjust call.
21385         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
21386         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
21387         to...
21388         (arm_legitimate_address_outer_p): ... this.
21389         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
21390         static.
21391         (TARGET_LEGITIMATE_ADDRESS_P): New.
21392
21393         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21394         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
21395         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
21396         (TARGET_LEGITIMATE_ADDRESS_P): New.
21397
21398         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21399         * config/vax/vax-protos.h (legitimate_address_p): Remove.
21400         * config/vax/vax.c (legitimate_address_p): Rename to...
21401         (vax_legitimate_address_p): ... this, make static.
21402         (TARGET_LEGITIMATE_ADDRESS_P): New.
21403
21404         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21405         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
21406         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
21407         (TARGET_LEGITIMATE_ADDRESS_P): New.
21408
21409         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21410         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
21411         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
21412         (mmix_legitimate_address_p): ... this, make static.
21413         (TARGET_LEGITIMATE_ADDRESS_P): New.
21414
21415         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21416         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
21417         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
21418         (TARGET_LEGITIMATE_ADDRESS_P): New.
21419
21420 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
21421
21422         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
21423         of MODE_COMPLEX_INT.
21424
21425 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
21426
21427         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
21428         LCT_NORMAL in function call.
21429         * mips-tdump.c (print_file_desc): Add cast to enum type.
21430         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
21431         (mark_stabs): Add casts to enum types.
21432         (parse_stabs_common): Add casts to enum types.
21433
21434 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
21435
21436         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
21437         Check for invalid values of LETTER.
21438
21439 2009-05-13  Taras Glek  <tglek@mozilla.com>
21440
21441         * attribs.c (register_attribute): moved out attribute registration
21442         into register_attribute.
21443         * doc/plugins.texi: Documented register_attribute and
21444         PLUGIN_ATTRIBUTES.
21445         * gcc-plugin.h: Added forward decl for register_attribute.
21446         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
21447         * plugin.c (register_callback, invoke_plugin_callbacks): Added
21448         PLUGIN_ATTRIBUTES boilerplate.
21449
21450 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
21451
21452         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
21453         values even in sentinel and empty entries.
21454         (ms_printf_flag_specs):  Likewise.
21455         (ms_scanf_flag_specs):  Likewise.
21456         (ms_strftime_flag_specs):  Likewise.
21457         (ms_print_char_table):  Likewise.
21458         (ms_scan_char_table):  Likewise.
21459         (ms_time_char_table):  Likewise.
21460
21461 2009-05-13  Doug Kwan  <dougkwan@google.com>
21462
21463         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
21464
21465 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
21466
21467         * config/mips/mips.md (store): Add attributes for QI and HI.
21468         Update comment.
21469         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
21470         (truncdi<mode>2): ... this new pattern.
21471
21472 2009-05-13  Brad Hards  <bradh@kde.org>
21473
21474         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
21475
21476 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
21477             Ben Elliston <bje@au.ibm.com>
21478
21479         PR middle-end/40035
21480         * dse.c (check_mem_read_rtx): Guard against width == -1.
21481
21482 2009-05-13  Michael Matz  <matz@suse.de>
21483
21484         PR middle-end/39976
21485         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
21486         (trivially_conflicts_p): New function.
21487         (insert_backedge_copies): Use it.
21488
21489 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
21490
21491         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
21492         (handle_stdc_pragma): Use new enum constant names.
21493         (handle_pragma_float_const_decimal64): Ditto.
21494
21495 2009-05-13  Ian Lance Taylor  <iant@google.com>
21496
21497         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
21498         tree.def.
21499
21500 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
21501
21502         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
21503         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
21504         multilibs.
21505         * config/m68k/m68k.h (FL_UCLINUX): Define.
21506
21507 2009-05-13  Jan Hubicka  <jh@suse.cz>
21508
21509         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
21510
21511 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
21512
21513         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
21514         unless -fschedule-insns is specified.
21515
21516 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
21517
21518         PR target/39561
21519         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
21520         TARGET_EXPAND_CBRANCHDI4.
21521         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
21522         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
21523         (cmpeqdi): Fix comment.
21524
21525 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
21526
21527         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
21528         (sh_legitimate_address_p): Likewise.
21529         * config/sh/sh.c (sh_legitimate_index_p): New.
21530         (sh_legitimate_address_p): Likewise.
21531         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
21532         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
21533         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
21534         (MAYBE_BASE_REGISTER_RTX_P): New macro.
21535         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
21536         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
21537         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
21538         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
21539         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
21540
21541 2009-05-12  Jan Hubicka  <jh@suse.cz>
21542
21543         * tree-inline.c (estimate_operator_cost): Add operands;
21544         when division happens by constant, it is cheap.
21545         (estimate_num_insns): Loads and stores are not having cost of 0;
21546         EH magic stuff is cheap; when computing runtime cost of switch,
21547         use log2 base of amount of its cases; builtin_expect has cost of 0;
21548         compute cost for moving return value of call.
21549         (init_inline_once): Initialize time_based flags.
21550         * tree-inline.h (eni_weights_d): Add time_based flag.
21551
21552 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21553
21554         * df-core.c: Update head documentation.
21555
21556 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
21557
21558         PR bootstrap/40118
21559         * rs6000.c (rs6000_generate_compare): Use op1b instead of
21560         shadowing exisiting variable op1.
21561
21562 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
21563
21564         PR target/37179
21565         * config/i386/driver-i386.c (processor_signatures): New enum.
21566         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
21567         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
21568         processor signature to detect geode processor.
21569
21570 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21571
21572         Revert:
21573
21574         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21575
21576         * optabs.c (prepare_cmp_insn): Temporarily disable test that
21577         causes spurious differences between trunk and cond-optab branch.
21578
21579 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21580
21581         * dojump.c (compare_from_rtx): Delete.
21582         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
21583         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
21584         if the comparison does not satisfy the predicate; test predicates for
21585         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
21586         further if one existing pattern fails.
21587         * expr.h (compare_from_rtx): Delete.
21588         (prepare_operand): Declare it.
21589         * optabs.c: Change "lib call" to "libcall" throughout.
21590         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
21591         HAVE_conditional_trap, emit_cmp_insn): Delete.
21592         (can_compare_p): Delete cmp_optab case.
21593         (prepare_float_lib_cmp): Return an rtx and a machine mode.
21594         Accept other parameters by value.
21595         (prepare_operand): Make non-static.
21596         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
21597         other parameters by value.  Try to widen operands here based on
21598         an optab_methods argument and looking at cbranch_optab.
21599         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
21600         loop.  Use cbranch_optab directly.
21601         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
21602         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
21603         assertion.
21604         (emit_conditional_move, emit_conditional_add): Inline what's needed
21605         of compare_from_rtx, using new prepare_cmp_insn for the rest.
21606         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
21607         with COMPARE.  Move cmov_optab and cstore_optab above
21608         with cbranch_optab, move cmp_optab down with ucmp_optab,
21609         remove tst_otpab.  Do not initialize trap_rtx.
21610         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
21611         for trap code.  Do not check HAVE_conditional_trap.  Use
21612         prepare_cmp_insn.  Accept no predicate for operand 3.
21613         * optabs.h (OTI_cmp): Mark as used only for libcalls.
21614         (OTI_ctrap, ctrap_optab): New.
21615         (tst_optab): Delete.
21616         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
21617         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
21618         with lookup of ctrap_optab.
21619         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
21620         Delete.
21621         (ctrap_optab): New.
21622
21623         * combine.c (combine_simplify_rtx, simplify_set): Do not
21624         special case comparing against zero for cc0 machines.
21625         * simplify-rtx.c (simplify_binary_operation_1): Never remove
21626         COMPARE on cc0 machines.
21627         (simplify_relational_operation): Return a new expression when
21628         a COMPARE could be removed.
21629         * final.c (final_scan_insn): Compare cc_status values
21630         against LHS of a (compare FOO (const_int 0)) cc0 source.
21631         Also check if cc_status.value is the full compare.
21632
21633         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
21634         (cstoreMM4): Document.
21635         (conditional_trap): Document ctrapMM4 instead.
21636         (sync_compare_and_swapMM): Refer to cbranchcc4.
21637         (Dependent Patterns): Eliminate obsolete information referring to
21638         the old jump optimization phase.
21639         (Canonicalization): Include cbranchcc4 case, omit canonicalization
21640         of compares with 0 on cc0 machines.
21641         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
21642         avoiding references to cc0.  Remove text about storing operands
21643         in cmpMM.
21644         * doc/tm.texi (Condition Codes): Include blurb on different
21645         condition code representations, separate into subsections for
21646         CC0, MODE_CC and conditional execution.
21647
21648         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
21649         alpha_emit_setcc): Accept operands and a machine mode.
21650         * config/alpha/alpha.c (alpha_emit_conditional_branch):
21651         Get code/op0/op1 from operands, use machine mode argument
21652         instead of alpha_compare.fp_p.  Emit the branch here.
21653         (alpha_emit_setcc): Likewise, and return boolean.
21654         (alpha_emit_conditional_move): Likewise.  Assert that
21655         cmp_op_mode == cmp_mode, and simplify accordingly.
21656         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
21657         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
21658         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
21659         Delete.
21660         (stack probe test): Use cbranchdi4.
21661         * config/alpha/predicates.md (alpha_cbranch_operator): New.
21662
21663         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
21664         * config/arc/arc.h (movsicc, movsfcc): Use it.
21665         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
21666         (cbranchsi4, cstoresi4): New.
21667         (cmpsi, bCC and sCC expanders): Remove.
21668
21669         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
21670         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
21671         * config/arm/predicates.md (arm_comparison_operator): Only include
21672         floating-point operators if there is a hardware floating-point unit.
21673         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
21674         deferring to cbranch_cc and cstore_cc respectively.
21675         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
21676         cbranch_cc, cstore_cc): New.
21677         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
21678         arm_compare_op1.
21679         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
21680
21681         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
21682         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
21683         as an argument.
21684         (adjust_insn_length): Adjust calls.
21685         (avr_reorg): Handle (compare (foo) (const_int 0)).
21686         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
21687         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
21688         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
21689         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
21690         (bCC): Remove.
21691         (cbranchqi4, cbranchhi4, cbranchsi4): New.
21692         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
21693
21694         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
21695         (cbranchsi4, cstorebi4, cstoresi4): New.
21696         (movbisi): This insn is duplicate, split it to zero_extend.
21697         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
21698         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
21699         (bfin_optimize_loop): Use cbranch expander.
21700         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
21701         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
21702         (bfin_bimode_comparison_operator): ... this.
21703         (bfin_direct_comparison_operator): New.
21704
21705         * config/cris/cris.c (cris_normal_notice_update_cc): Look
21706         inside (compare FOO (const_int 0)).
21707         (cris_rtx_costs): Handle ZERO_EXTRACT.
21708         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
21709         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
21710         (*tstdi_v32): Delete.
21711         (*cmpdi_non_v32): Add M alternative for operand 1.
21712         (cmpsi, cmp<mode>): Make private.
21713         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
21714         with COMPARE.
21715         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
21716
21717         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
21718         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
21719         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
21720         (cc_reg_operand): New.
21721         (any_cond): Delete.
21722         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
21723         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
21724         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
21725         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
21726         crx_expand_scond): Delete.
21727
21728         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
21729         (cbranchsi4): New.
21730         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
21731         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
21732
21733         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
21734         cstoresi4, cstoresf4, cstoredf4): New.
21735         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
21736         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
21737         Receive the entire operands array.
21738         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
21739         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
21740         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
21741         Get test/op0/op1 from the operands array.
21742         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
21743
21744         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
21745         (h8300_expand_store): New.
21746         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
21747         (const_int 0)).
21748         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
21749         (h8300_expand_store): New.
21750         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
21751         or do not try to produce (set (cc0) REG).
21752         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
21753         change a compare into a move to a scratch register.  Disable some
21754         peepholes when comparing with zero.
21755         (tstsi, tsthi, tstsi, cmpqi): Make private.
21756         (cmphi): Delete.
21757         (bCC, sCC): Delete.
21758         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
21759         cstoresi4): New.
21760
21761         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
21762         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
21763         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
21764         (ix86_emit_i387_log1p): Use cbranchxf2.
21765         (ix86_expand_setcc): Return void.
21766         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
21767         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
21768         cmp<MODEF>, cmpcc): Remove.
21769         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
21770         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
21771         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
21772         (sCC and bCC expanders): Remove.
21773         (stack_protect_test): Use cbranchcc4.
21774
21775         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
21776         Delete.
21777         (ia64_expand_compare): Accept three rtx by reference and return void.
21778         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
21779         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
21780         from *expr.  Update *expr with the BImode comparison to do.
21781         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
21782         cmptf, bCC, sCC, conditional_trap): Delete.
21783         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
21784         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
21785         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
21786         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
21787         * config/ia64/predicates.md (ia64_cbranch_operator): New.
21788
21789         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
21790         type of last argument.
21791         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
21792         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
21793         use machine mode argument instead of branch_type.  Remove dead
21794         code for floating-point comparisons.
21795         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
21796         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
21797         Remove.
21798         (cbranchsi4, cstoresi4): New.
21799         * config/iq2000/predicates.md (reg_or_const_operand): New.
21800
21801         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
21802         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
21803         (b<code>_op): Rewrite to...
21804         (bcc_op): ... this, using match_operator.
21805         (s<code>_op): Rewrite to...
21806         (scc_op): ... this, using match_operator.
21807         (s<code>_24_op): Rewrite to...
21808         (scc_op_24): ... this, using match_operator.
21809         (s<code>_<mode>): Rewrite to...
21810         (cstore<mode>4): ... this, using match_operator.
21811         (s<code>_<mode>_24): Rewrite to...
21812         (cstore<mode>4_24): ... this, using match_operator.
21813         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
21814         m32c_unpend_compare, m32c_expand_scc): Delete.
21815         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
21816         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
21817         (m32c_expand_movcc): Change NE to EQ if necessary.
21818         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
21819
21820         * config/m32r/m32r-protos.h (gen_cond_store): New.
21821         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
21822         (gen_cond_store): New, from sCC patterns.
21823         (m32r_expand_block_move): Use cbranchsi4.
21824         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
21825         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
21826         (cbranchsi4, cstoresi4): New.
21827
21828         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
21829         Delete.
21830         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
21831         (m68hc11_notice_update_cc): Look into a compare with 0.
21832         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
21833         Delete.
21834         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
21835         cmphi, cmpqi, bCC): Delete.
21836         (cbranchsi4, cbranchhi4, cbranchqi4): New.
21837         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
21838         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
21839         sets with COMPARE.
21840
21841         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
21842         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
21843         * config/m68k/constraints.md (H): New.
21844         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
21845         the define_insn below.
21846         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
21847         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
21848         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
21849         patterns): Wrap RHS with COMPARE.
21850         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
21851         (*cmpdi_internal): Name this pattern.
21852         (cmpdi): Change to define_insn.
21853         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
21854         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
21855         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
21856         predicate.
21857         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
21858         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
21859         (conditional_trap): Change to...
21860         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
21861         (*conditional_trap): Use the ordered_comparison_operator and
21862         const1_operand predicates.
21863         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
21864         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
21865         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
21866         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
21867
21868         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
21869         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
21870         (mcore_gen_compare): New.
21871         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
21872         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
21873         (mcore_gen_compare): ... this.
21874         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
21875         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
21876         (stack probe pattern): Use cbranchsi4.
21877
21878         * config/mips/predicates.md (mips_cstore_operator): New.
21879         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
21880         * config/mips/mips.md (any_cond): Delete.
21881         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
21882         always succeed.
21883         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
21884         fixuns_truncsfdi2): Use cbranch patterns.
21885         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
21886         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
21887         Adjust call to mips_expand_conditional_branch.
21888         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
21889         cstore<GPR:mode>4.
21890         * config/mips/mips-protos.h (mips_expand_conditional_branch,
21891         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
21892         * config/mips/mips.c (cmp_operands): Delete.
21893         (mips_emit_compare): Get comparison operands from *op0/*op1.
21894         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
21895         that it succeeds.  Use op0/op1 instead of cmp_operands.
21896         (mips_expand_conditional_branch, mips_expand_conditional_move,
21897         mips_expand_conditional_trap): Likewise.
21898         (mips_block_move_loop): Use cbranch patterns.
21899         * config/mips/mips.h (cmp_operands): Delete.
21900
21901         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
21902         (mmix_gen_compare_reg): Just return a register in the right CC mode.
21903         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
21904         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
21905         (*cmpcc_folded): Rename to...
21906         (*cmpdi_folded): this.
21907         (*cmpcc): Rename to...
21908         (*cmps): ... this.
21909         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
21910         (bCC): Remove.
21911         (cbranchdi4): New.
21912         (cbranchdf4): New.  Handle invalid comparisons here.
21913         * config/mmix/predicates.md (float_comparison_operator): New.
21914
21915         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
21916         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
21917         * config/mn10300/mn10300.md (tst): Delete.
21918         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
21919         Name these patterns and wrap RHS in a compare.
21920         (*cmpsi): Make this pattern private.  Include tst.
21921         (*cmpsf): Make this pattern private.
21922         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
21923         (compare with zero peepholes): Likewise.
21924         (bCC): Remove.
21925         (cbranchsi4, cbranchsf4): New.
21926         (casesi): Use cbranchsi4.
21927
21928         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
21929         hppa_branch_type): Delete.
21930         (return_addr_rtx): Use cbranchsi4.
21931         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
21932         Emit CCFPmode comparison here.
21933         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
21934         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
21935         hppa_branch_type): Delete.
21936         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
21937         (movsicc, movdicc): Remove references to hppa_compare_op0,
21938         hppa_compare_op1 and compare_from_rtx.
21939         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
21940         (casesi): Use cbranchsi4.
21941
21942         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
21943         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
21944         * config/pdp11/pdp11.md (register_or_const0_operand): New.
21945         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
21946         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
21947         (bCC): Delete.
21948         (cbranchdf4, cbranchhi4, cbranchqi4): New.
21949         (*branch, *branch_inverted): New.
21950
21951         * config/picochip/picochip.md (cbranchhi4): Use
21952         ordered_comparison_operator.
21953         (cmphi, bCC): Remove.
21954
21955         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
21956         (trap_comparison_operator): Delete.
21957         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
21958         rs6000_emit_cbranch): Accept mode and operands.
21959         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
21960         rs6000_compare_fp_p): Delete.
21961         (rs6000_generate_compare): Accept mode and comparison.  Extract code
21962         and op0/op1 from there.  Replace references to rs6000_compare_op0
21963         and rs6000_compare_op1.
21964         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
21965         extract result from passed operands.
21966         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
21967         extract loc from passed operands.
21968         (rs6000_emit_cmove): Likewise.
21969         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
21970         rs6000_compare_fp_p): Delete.
21971         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
21972         (cbranch<GPR>4, cbranch<FP>4): New.
21973         (cstore<mode>4): New.  Consolidate here all choices about when to use
21974         portable or specialized sCC sequences.
21975         (stack_protect_test): Use cbranchsi4.
21976         (conditional_trap): Replace with ctrap<GPR>4.
21977         (conditional trap insn): Replace trap_comparison_operator with
21978         ordered_comparison_operator.
21979
21980         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
21981         (s390_emit_prologue): Use ctrap.
21982         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
21983         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
21984         New predicates replacing...
21985         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
21986         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
21987         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
21988         (add<mode>cc): Do not use s390_compare_op0/op1.
21989         (s<code>): Change to...
21990         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
21991         (seq): Change to...
21992         (cstorecc4): ... this.  Handle EQ or NE equally.
21993         (*sne): Un-privatize for use in cstorecc4.
21994         (b<code>): Change to...
21995         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
21996         (conditional_trap): Replace with...
21997         (ctrap<GPR>4, ctrap<FP>4): ... these.
21998         (stack_protect): Use cbranchcc4.
21999
22000         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
22001         * config/score/score-protos.h (score_gen_cmp): Delete.
22002         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
22003         (score_block_move-loop): Use cbranchsi4.
22004         * config/score/score.md (cbranchsi4): New.
22005         (cmpsi, bCC): Delete.
22006         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
22007         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
22008         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
22009         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
22010         * config/score/score3.h (score3_gen_cmp): Delete.
22011         * config/score/score7.h (score7_gen_cmp): Delete.
22012
22013         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
22014         (sh_emit_scc_to_t): ... this.  Return void.
22015         (from_compare): Rename to...
22016         (sh_emit_compare_and_branch): ... this.
22017         (sh_emit_compare_and_set): New.
22018         (sh_expand_t_scc): Accept operands.
22019         * config/sh/predicates.md (sh_float_comparison_operator): New.
22020         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
22021         (prepare_scc_operands): Rename to...
22022         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
22023         arguments.
22024         (sh_emit_cheap_store_flag): New.
22025         (sh_emit_set_t_insn): New.
22026         (from_compare): Rename to...
22027         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
22028         handling of TARGET_SH2E floating point to avoid recursive call.
22029         Generate branch here.
22030         (sh_emit_compare_and_set): New.
22031         (sh_expand_t_scc): Get op0/op1 from arguments.
22032         (sh_emit_cheap_store_flag): New.
22033         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
22034         cases.
22035         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
22036         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
22037         (movsicc, movdicc): Do nothing when it recreated operands from
22038         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
22039         prepare_scc_operands (now sh_emit_scc_to_t).
22040         (udivdi3): Use cstoresi4.
22041         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
22042         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
22043         (cbranchint4_media, cbranchfp4_media): New.
22044         (casesi): Use cbranchdi4.
22045         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
22046         Delete.
22047         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
22048         (movnegt): Remove second operand.
22049         (cbranchsf4, cbranchdf4): New.
22050         (stack_protect): Use cbranchdi4/cbranchsi4.
22051
22052         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
22053         (gen_compare_reg): Accept comparison, extract part of it to...
22054         (gen_compare_reg_1): ... this.
22055         (gen_compare_operator): Delete.
22056         (gen_v9_scc): Accept separate destination, comparison code and arms.
22057         Do not use sparc_compare_op0/sparc_compare_op1.
22058         (emit_scc_insn, emit_conditional_branch_insn): New.
22059         (emit_v9_brxx): Make static.  Remove useless assertion.
22060         (sparc_emit_float_lib_cmp): Return RTL instead of calling
22061         emit_cmp_insn.
22062         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
22063         * config/sparc/sparc-protos.h (gen_compare_reg,
22064         sparc_emit_float_lib_cmp): Adjust prototype.
22065         (emit_scc_insn, emit_conditional_branch_insn): New.
22066         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
22067         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
22068         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
22069         iterators to the top.
22070         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
22071         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
22072         snedi_special_trunc): Delete.
22073         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
22074         and snedi_special_trunc.
22075         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
22076         cbranchdi4, cbranch<F:mode>4): New.
22077         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
22078         here.  Use gen_compare_reg instead of gen_compare_operator.
22079         (conditional_trap): Replace with...
22080         (ctrapsi4, ctrapdi4): ... this.
22081         (stack_protect_test): Use cbranchcc4.
22082
22083         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
22084         argument to rtx.
22085         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
22086         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
22087         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
22088         from operands[0] or operands[3] depending on is_set.
22089         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
22090         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
22091         cmpdf, bCC), sCC: Remove.
22092         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
22093         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
22094         cstoredf4): New.
22095         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
22096         spu_emit_branch_or_set.
22097
22098         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
22099         Add two arguments.
22100         * config/stormy16/stormy16.h (xstormy16_compare_op0,
22101         xstormy16_compare_op1): Delete.
22102         * config/stormy16/stormy16.c (xstormy16_compare_op0,
22103         xstormy16_compare_op1): Delete.
22104         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
22105         Adjust calls.
22106         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
22107         (cmphi, cmpsi, bCC): Remove.
22108
22109         * config/v850/v850.md (tstsi, cmpsi): Fold into...
22110         (*cmpsi): ... this one.
22111         (cbranchsi4, cstoresi4): New.
22112         (bCC expanders): Delete.
22113         (sCC insns): Fold into...
22114         (*setcc): ... this one.
22115         (casesi): Do not use gen_cmpsi and gen_bgtu.
22116         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
22117         (movsicc): Simplify.
22118         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
22119
22120         * config/vax/vax-protos.h (cond_name): New.
22121         (vax_output_conditional_branch): Remove.
22122         * config/vax/vax.c (cond_name): New.
22123         (vax_output_conditional_branch): Remove.
22124         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
22125         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
22126         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
22127         (bit<VAXint>): Wrap source with (compare).
22128         (b<code> and following unnamed pattern): Rename to *branch and
22129         *branch_reversed.  Change macroization to match_operator.
22130         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
22131
22132         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
22133         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
22134         Change last argument to machine_mode.
22135         (xtensa_expand_scc): Add machine_mode argument.
22136         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
22137         (gen_conditional_move, xtensa_expand_conditional_branch,
22138         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
22139         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
22140         Adjust operand numbers.
22141         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
22142         Delete.
22143         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
22144         (cmpsi, cmpsf, b<code>, s<code>): Delete.
22145         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
22146
22147 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22148
22149         * optabs.c (prepare_cmp_insn): Temporarily disable test that
22150         causes spurious differences between trunk and cond-optab branch.
22151
22152 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
22153
22154         PR target/37137
22155         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
22156
22157 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
22158
22159         * tree.c (iterative_hash_pointer): Delete.
22160         (iterative_hash_expr): Short-circuit handling of NULL pointer.
22161         Hash UIDs and versions of SSA names.  Don't special-case built-in
22162         function declarations.
22163
22164 2009-05-11  Ian Lance Taylor  <iant@google.com>
22165
22166         PR bootstrap/40103
22167         * graphite.c: Force -Wc++-compat to only be a warning before
22168         #including "cloog/cloog.h".
22169
22170 2009-05-11  Martin Jambor  <mjambor@suse.cz>
22171
22172         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
22173
22174 2009-05-11  Jan Hubicka  <jh@suse.cz>
22175
22176         * tree-ssa-loop-ivcanon.c: Include target.h
22177         (struct loop_size): new structure.
22178         (constant_after_peeling): New predicate.
22179         (tree_estimate_loop_size): New function.
22180         (estimated_unrolled_size): Rewrite for new estimates.
22181         (try_unroll_loop_completely): Use new estimates.
22182         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
22183
22184 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22185
22186         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
22187         libcpp interface change.
22188         (spu_macro_to_expand): Likewise.
22189
22190 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
22191
22192         PR tree-optimization/40026
22193         * gimplify.c (gimplify_init_constructor): Change initial conditional
22194         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
22195         optimize_compound_literals_in_ctor.
22196
22197 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
22198
22199         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
22200         New devices.
22201         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
22202
22203 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
22204
22205         * tree-vect-data-refs.c (vect_analyze_group_access): Use
22206         HOST_WIDE_INT for gap.
22207
22208 2009-05-11  Ira Rosen  <irar@il.ibm.com>
22209
22210         PR tree-optimization/40074
22211         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
22212         account in group size and step comparison.
22213
22214 2009-05-11  Richard Guenther  <rguenther@suse.de>
22215
22216         * passes.c (init_optimization_passes): Strip now incorrect comment.
22217         (execute_function_todo): Do not set PROP_alias.
22218         * tree-pass.h (PROP_alias): Remove.
22219         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
22220         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
22221         * tree-nrv.c (pass_return_slot): Likewise.
22222         * tree-object-size.c (pass_object_sizes): Likewise.
22223         * tree-ssa-dom.c (pass_dominator): Likewise.
22224         (pass_phi_only_cprop): Likewise.
22225         * tree-ssa-dse.c (pass_dse): Likewise.
22226         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
22227         (pass_cselim): Likewise.
22228         * tree-ssa-pre.c (pass_pre): Likewise.
22229         (pass_fre): Likewise.
22230         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
22231         * tree-ssa-sink.c (pass_sink_code): Likewise.
22232         * tree-stdarg.c (pass_stdarg): Likewise.
22233         * tree-tailcall.c (pass_tail_calls): Likewise.
22234         * tree-vrp.c (pass_vrp): Likewise.
22235
22236 2009-05-10  Ian Lance Taylor  <iant@google.com>
22237
22238         * basic-block.h (enum profile_status): Break out of struct
22239         control_flow_graph.
22240         * cgraph.h (struct inline_summary): Break out of struct
22241         cgraph_local_info.
22242         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
22243         of struct cgraph_order_sort.
22244         * combine.c (enum undo_kind): New enum, broken out of struct undo.
22245         * cse.c (struct branch_path): Break out of struct
22246         cse_basic_block_data.
22247         * except.h (enum eh_region_type): Break out of struct eh_region.
22248         * gcc.c (enum add_del): Break out of struct modify_target.
22249         * genrecog.c (enum decision_type): Break out of struct decision_test.
22250         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
22251         ggc_pch_data.
22252         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
22253         * regmove.c (enum match_use): New enum, broken out of struct match.
22254         * sched-int.h (enum post_call_group): New enum, broken out of
22255         struct deps.
22256         (struct deps_reg): Break out of struct deps.
22257         * target.h (struct asm_int_op): Break out of struct gcc_target.
22258         * tree-eh.c (struct goto_queue_node): Break out of struct
22259         leh_tf_state.
22260         * tree-inline.h (enum copy_body_cge_which): Break out of
22261         copy_body_data.
22262         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
22263
22264         * c-decl.c (in_struct, struct_types): New static variables.
22265         (pushtag): Add loc parameter.  Change all callers.
22266         (lookup_tag): Add ploc parameter.  Change all callers.
22267         (check_compound_literal_type): New function.
22268         (parser_xref_tag): Add loc parameter.  Change all callers.  If
22269         -Wc++-compat, warn about struct/union/enum types defined within a
22270         struct or union.
22271         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
22272         and loc parameters.  Change all callers.  Change error calls to
22273         error_at, using loc.  For a redefinition, if the location of the
22274         original definition is known, report it.  Set in_struct and
22275         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
22276         (finish_struct): Add new parameters enclosing_in_struct and
22277         enclosing_struct_types.  Change all callers.  Set
22278         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
22279         in the struct.  If in a struct, add this struct to struct_types.
22280         (start_enum): Add loc parameter.  Change all callers.  Use
22281         error_at for errors, using loc.  For a redefinition, if the
22282         location of the original definition is known, report it.  If in a
22283         struct, add this enum type to struct_types.  If -Wc++-compat warn
22284         if in sizeof, typeof, or alignof.
22285         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
22286         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
22287         (c_parser_enum_specifier): Get enum location for start_enum.
22288         (c_parser_struct_or_union_specifier): Get struct location for
22289         start_struct.  Save in_struct and struct_types status between
22290         start_struct and finish_struct.
22291         (c_parser_cast_expression): Get location of cast.
22292         (c_parser_alignof_expression): Get location of type.
22293         (c_parser_postfix_expression): Likewise.
22294         (c_parser_postfix_expression_after_paren_type): Add type_loc
22295         parameter.  Change all callers.  Call check_compound_literal_type.
22296         Use type_loc for error about variable size type.
22297         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
22298         of an enum constant from an enum type defined in a struct or union.
22299         (c_cast_expr): Add loc parameter.  Change all callers.  If
22300         -Wc++-compat, warn about defining a type in a cast.
22301         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
22302         (start_enum, start_struct, finish_struct): Update declarations.
22303         (parser_xref_tag, c_cast_expr): Update declarations.
22304         (check_compound_literal_type): Declare.
22305
22306 2009-05-11  Ben Elliston  <bje@au.ibm.com>
22307
22308         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
22309         for recent libcpp interface change.
22310         (rs6000_macro_to_expand): Likewise.
22311
22312 2009-05-10  Michael Matz  <matz@suse.de>
22313
22314         PR target/40031
22315         * config/arm/arm.c (require_pic_register): Emit on entry edge,
22316         not at entry of function.
22317
22318 2009-05-10  Richard Guenther  <rguenther@suse.de>
22319
22320         PR tree-optimization/40081
22321         Revert
22322         * tree-sra.c (instantiate_element): Instantiate scalar replacements
22323         using the main variant of the element type.  Do not fiddle with
22324         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
22325
22326         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
22327         structs with volatile fields.
22328
22329 2009-05-10  Jan Hubicka  <jh@suse.cz>
22330
22331         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
22332         (estimate_move_cost): Assert that it does not get called for
22333         VOID_TYPE_P.
22334         (estimate_num_insns): Skip VOID types in argument handling.
22335         (optimize_inline_calls): Delete unreachable blocks and verify that
22336         callgraph is valid.
22337
22338 2009-05-10  Jan Hubicka  <jh@suse.cz>
22339
22340         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
22341         * cgraph.c (cgraph_mark_address_taken_node): New function.
22342         (dump_cgraph_node): Dump new flag.
22343         * cgraph.h (struct cgraph_node): Add address_taken.
22344         (cgraph_mark_address_taken_node): New function.
22345         * ipa.c (cgraph_postorder): Prioritize functions with address taken
22346         since new direct calls can be born.
22347
22348 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22349
22350         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
22351         tok->val.node.node.
22352
22353 2009-05-10  Jan Hubicka  <jh@suse.cz>
22354
22355         PR middle-end/40084
22356         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
22357         argument; rewrite.
22358         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
22359         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
22360         * tree-inline.c (copy_bb): Set frequency correctly.
22361         (fold_marked_statements): Update call to
22362         cgraph_update_edges_for_call_stmt.
22363
22364 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22365
22366         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
22367         identifiers in diagnostics.
22368         * config/arm/arm.c (arm_handle_fndecl_attribute,
22369         arm_handle_isr_attribute): Likewise.
22370         * config/avr/avr.c (avr_handle_progmem_attribute,
22371         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
22372         * config/bfin/bfin.c (handle_int_attribute,
22373         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
22374         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
22375         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
22376         Likewise.
22377         * config/darwin.c (darwin_handle_kext_attribute,
22378         darwin_handle_weak_import_attribute): Likewise.
22379         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
22380         h8300_handle_eightbit_data_attribute,
22381         h8300_handle_tiny_data_attribute): Likewise.
22382         * config/i386/i386.c (ix86_handle_cconv_attribute,
22383         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
22384         * config/i386/winnt.c (ix86_handle_shared_attribute,
22385         ix86_handle_selectany_attribute): Likewise.
22386         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
22387         * config/m32c/m32c.c (function_vector_handler): Likewise.
22388         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
22389         m68hc11_handle_fntype_attribute): Likewise.
22390         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
22391         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
22392         * config/mips/mips.c (mips_insert_attributes,
22393         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
22394         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
22395         rs6000_handle_struct_attribute): Likewise.
22396         * config/sh/sh.c (sh_insert_attributes,
22397         sh_handle_resbank_handler_attribute,
22398         sh_handle_interrupt_handler_attribute,
22399         sh2a_handle_function_vector_handler_attribute,
22400         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
22401         Likewise.
22402         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
22403         * config/spu/spu.c (spu_handle_fndecl_attribute,
22404         spu_handle_vector_attribute): Likewise.
22405         * config/stormy16/stormy16.c
22406         (xstormy16_handle_interrupt_attribute): Likewise.
22407         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
22408         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
22409
22410 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22411
22412         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
22413         (pp_translate_identifiers): New.
22414         (pp_identifier): Only conditionally translate identifier to locale
22415         character set.
22416         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
22417         (pp_base_tree_identifier): Only conditionally translate identifier
22418         to locale character set.
22419         * c-pretty-print.c (M_): Define.
22420         (pp_c_type_specifier, pp_c_primary_expression): Mark English
22421         fragments for conditional translation with M_.
22422         * tree-pretty-print.c (maybe_init_pretty_print): Disable
22423         identifier translation.
22424
22425 2009-05-10  Richard Guenther  <rguenther@suse.de>
22426
22427         PR tree-optimization/40081
22428         * tree-sra.c (instantiate_element): Instantiate scalar replacements
22429         using the main variant of the element type.  Do not fiddle with
22430         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
22431
22432 2009-05-09  Jan Hubicka  <jh@suse.cz>
22433
22434         PR middle-end/40080
22435         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
22436         indirect calls; verify cgraph afterwards.
22437
22438 2009-05-09  Jan Hubicka  <jh@suse.cz>
22439
22440         PR bootstrap/40082
22441         * ipa.c (update_inlined_to_pointer): New function.
22442         (cgraph_remove_unreachable_nodes): Use it.
22443
22444 2009-05-09  Jan Hubicka  <jh@suse.cz>
22445
22446         * tree-eh.c (struct leh_state): Remove prev_try.
22447         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
22448         not track prev_try.
22449         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
22450         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
22451         remove_eh_handler_and_replace, foreach_reachable_handler,
22452         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
22453         * except.h (struct eh_region): Remove eh_region_u_cleanup.
22454         (gen_eh_region_cleanup): Update prototype.
22455
22456 2009-05-09  Jan Hubicka  <jh@suse.cz>
22457
22458         PR middle-end/40043
22459         * except.c (copy_eh_region): Always set prev_try.
22460         (redirect_eh_edge_to_label): Find outer try.
22461         (foreach_reachable_handler): When looking for prev try
22462         handle case where previous try is not going to be taken.
22463
22464 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
22465
22466         PR tree-optimization/40049
22467         * tree-vect-stmts.c (vectorizable_operation): If the machine has
22468         only vector/vector shifts, convert the type of the constant to the
22469         appropriate type to avoid building incorrect trees, which
22470         eventually have problems with garbage collection.
22471
22472 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
22473
22474         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
22475         -1 for complex floating-point types if honoring signed zeros.
22476
22477 2009-05-08  Jan Hubicka  <jh@suse.cz>
22478
22479         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
22480         argument; handle correctly when profile is absent.
22481         (build_cgraph_edges): Update.
22482         (rebuild_cgraph_edges): Update.
22483         * cgraph.c: Do not include varray.h.
22484         (cgraph_set_call_stmt_including_clones): New function.
22485         (cgraph_create_edge_including_clones): Likewise
22486         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
22487         (cgraph_update_edges_for_call_stmt): Handle clones.
22488         (cgraph_remove_node): Handle clone tree.
22489         (cgraph_remove_node_and_inline_clones): New function.
22490         (dump_cgraph_node): Dump clone tree.
22491         (cgraph_clone_node): Handle clone tree.
22492         (clone_function_name): Bring here from tree-inline.c.
22493         (cgraph_create_virtual_clone): New function.
22494         * cgraph.h (ipa_replace_map): Move here from ipa.h.
22495         (cgraph_clone_info): New function.
22496         (strut cgraph_node): Add clone_info and new clone tree pointers.
22497         (cgraph_remove_node_and_inline_clones,
22498         cgraph_set_call_stmt_including_clones,
22499         cgraph_create_edge_including_clones,
22500         cgraph_create_virtual_clone): Declare.
22501         (cgraph_function_versioning): Use VEC argument.
22502         (compute_call_stmt_bb_frequency): Update prototype.
22503         (cgraph_materialize_all_clones): New function.
22504         * ipa-cp.c (ipcp_update_cloned_node): Remove.
22505         (ipcp_create_replace_map): Update to VECtors.
22506         (ipcp_update_callgraph): Use virtual clones.
22507         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
22508         (ipcp_update_profiling): Do not update local profiling.
22509         (ipcp_insert_stage): Use VECtors and virtual clones.
22510         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
22511         (clone_of_p): New function.
22512         (cgraph_preserve_function_body_p): Use clone tree.
22513         (cgraph_optimize): Materialize clones.
22514         (cgraph_function_versioning): Update for VECtors.
22515         (save_inline_function_body): Use clone tree.
22516         (cgraph_materialize_clone): New function.
22517         (cgraph_materialize_all_clones): Likewise.
22518         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
22519         * ipa.c: Include gimple.h.
22520         (cgraph_remove_unreachable_nodes): Use clone tree.
22521         * ipa-prop.c (ipa_note_param_call): Update call to
22522         compute_call_stmt_bb_frequencycall.
22523         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
22524         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
22525         (copy_bb): Handle updating of clone tree; add new edge when new call
22526         appears.
22527         (expand_call_inline): Be strict about every call having edge.
22528         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
22529         (delete_unreachable_blocks_update_callgraph): New function.
22530         (tree_function_versioning): Use VECtors; always remove unreachable
22531         blocks and fold conditionals.
22532         * tree-inline.h: Do not include varray.h.
22533         (tree_function_versioning): Remove.
22534         * Makefile.in (GTFILES): Remove tree-inline.c
22535         * passes.c (do_per_function): Do only functions having body.
22536         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
22537         tree.
22538
22539 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
22540             Andrew Morrow  <acm@google.com>
22541
22542         PR c/36892
22543         * c-common.c (c_common_attribute_table): Permit deprecated
22544         attribute to take an optional argument.
22545         (handle_deprecated_attribute): If the optional argument to
22546         __attribute__((deprecated)) is not a string ignore the attribute
22547         and emit a warning.
22548
22549         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
22550         * c-typeck.c (build_component_ref): Likewise.
22551         (build_external_ref): Likewise.
22552
22553         * toplev.c (warn_deprecated_use): Add an attribute argument.
22554         Emit the message associated with __attribute__((deprecated)).
22555
22556         * toplev.h (warn_deprecated_use): Updated.
22557
22558         * doc/extend.texi: Document new optional parameter to
22559         __attribute__((deprecated))
22560
22561 2009-05-08  Michael Eager <eager@eagercon.com>
22562
22563         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
22564         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
22565
22566 2009-05-08  Richard Guenther  <rguenther@suse.de>
22567
22568         PR tree-optimization/40062
22569         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
22570         Avoid exponential behavior.
22571
22572 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
22573
22574         PR rtl-optimization/33928
22575         PR 26854
22576         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
22577         process_uses, build_single_def_use_links): New.
22578         (update_df): Update use_def_ref.
22579         (forward_propagate_into): Use get_def_for_use instead of use-def
22580         chains.
22581         (fwprop_init): Call build_single_def_use_links and let it initialize
22582         dataflow.
22583         (fwprop_done): Free use_def_ref.
22584         (fwprop_addr): Eliminate duplicate call to df_set_flags.
22585         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
22586         df_rd_simulate_one_insn): New.
22587         (df_rd_bb_local_compute_process_def): Update head comment.
22588         (df_chain_create_bb): Use the new RD simulation functions.
22589         * df.h (df_rd_simulate_artificial_defs_at_top,
22590         df_rd_simulate_one_insn): New.
22591         * opts.c (decode_options): Enable fwprop at -O1.
22592         * doc/invoke.texi (-fforward-propagate): Document this.
22593
22594 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
22595
22596         PR c/24581
22597         * c-typeck.c (build_binary_op): Handle arithmetic between one real
22598         and one complex operand specially.
22599         * tree-complex.c (some_nonzerop): Do not identify a real value as
22600         zero if flag_signed_zeros.
22601
22602 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
22603
22604         PR rtl-optimization/33928
22605         * loop-invariant.c (record_use): Fix && vs. || mishap.
22606
22607 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
22608
22609         PR rtl-optimization/33928
22610         * loop-invariant.c (struct use): Add addr_use_p.
22611         (struct def): Add n_addr_uses.
22612         (struct invariant): Add cheap_address.
22613         (create_new_invariant): Set cheap_address.
22614         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
22615         (record_uses): Pass df_ref to record_use.
22616         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
22617         used only as such.
22618
22619 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
22620
22621         * config/sh/sh.c: Do not include c-pragma.h.
22622
22623 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22624
22625         * config/spu/spu.c: Remove include of c-common.h.
22626
22627 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
22628
22629         PR c/39037
22630         * c-common.h (mark_valid_location_for_stdc_pragma,
22631         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
22632         clear_float_const_decimal64, float_const_decimal64_p): New.
22633         * c.opt (Wunsuffixed-float-constants): New.
22634         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
22635         unsuffixed float constant, handle new warning.
22636         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
22637         * c-decl.c (c_scope): New flag float_const_decimal64.
22638         (set_float_const_decimal64, clear_float_const_decimal64,
22639         float_const_decimal64_p): New.
22640         (push_scope): Set new flag.
22641         * c-parser.c (c_parser_translation_unit): Mark when it's valid
22642         to use STDC pragmas.
22643         (c_parser_external_declaration): Ditto.
22644         (c_parser_compound_statement_nostart): Ditto.
22645         * c-pragma.c (valid_location_for_stdc_pragma,
22646         mark_valid_location_for_stdc_pragma,
22647         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
22648         handle_pragma_float_const_decimal64): New.
22649         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
22650         * cp/semantics.c (valid_location_for_stdc_pragma_p,
22651         set_float_const_decimal64, clear_float_const_decimal64,
22652         float_const_decimal64_p): New dummy functions.
22653         * doc/extend.texi (Decimal Float): Remove statement that the
22654         pragma, and suffix for double constants, are not supported.
22655         * doc/invoke.texi (Warning Options): List new option.
22656         (-Wunsuffixed-float-constants): New.
22657
22658 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
22659
22660         * config/i386/i386.c: Do not include c-common.h.
22661
22662 2009-05-07  Mark Heffernan  <meheff@google.com>
22663
22664         * doc/invoke.texi (Debugging Options): Document change of debugging
22665         dump location.
22666         * opts.c (decode_options): Make dump_base_name relative to
22667         aux_base_name directory.
22668
22669 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
22670
22671         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
22672         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
22673
22674 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
22675
22676         * Makefile.in (install-plugin): Simplify a bit.
22677
22678 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
22679
22680         * Makefile.in (OBJS-common): Add regcprop.o.
22681         (regcprop.o): New.
22682         * timevar.def (TV_CPROP_REGISTERS): New.
22683         * regrename.c (regrename_optimize): Return 0.
22684         (rest_of_handle_regrename): Delete.
22685         (pass_rename_registers): Point to regrename_optimize.
22686         (struct value_data_entry, struct value_data,
22687         kill_value_one_regno, kill_value_regno, kill_value,
22688         set_value_regno, init_value_data, kill_clobbered_value,
22689         kill_set_value, kill_autoinc_value, copy_value,
22690         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
22691         replace_oldest_value_reg, replace_oldest_value_addr,
22692         replace_oldest_value_mem, copyprop_hardreg_forward_1,
22693         debug_value_data, validate_value_data): Move...
22694         * regcprop.c: ... here.
22695         (rest_of_handle_cprop): Delete.
22696         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
22697
22698 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
22699
22700         PR middle-end/40057
22701         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
22702         GEN_INT for 1 << bitnum.
22703         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
22704         build_int_cst_type.
22705
22706 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
22707
22708         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
22709         Remove wrong description of "nand" operation.
22710
22711 2009-05-06  Richard Guenther  <rguenther@suse.de>
22712             Adam Nemet  <anemet@caviumnetworks.com>
22713
22714         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
22715         comment.  Add that if LHS is not a gimple register, then RHS1 has
22716         to be a single object (GIMPLE_SINGLE_RHS).
22717
22718 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
22719
22720         * expr.c (get_def_for_expr): Move it up in the file.
22721         (store_field): When expanding a bit-field store, look at the
22722         defining gimple stmt for the masking conversion.
22723
22724 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
22725
22726         PR middle-end/39986
22727         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
22728         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
22729         32-bit memcpy into long.
22730
22731 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
22732
22733         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
22734         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
22735         new_reg_loc_descr.
22736         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
22737         instead of appending DW_OP_deref*.
22738
22739 2009-05-06  Michael Matz  <matz@suse.de>
22740
22741         PR middle-end/40021
22742         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
22743         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
22744
22745 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
22746
22747         * Makefile.in (install-plugin): Fix srcdir handling.
22748
22749 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
22750
22751         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
22752         when processing for not_regs_needed bitmap.
22753         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
22754         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
22755         handling it for rhs.
22756
22757 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22758
22759         * config/i386/i386.md (unnamed inc/dec peephole): Use
22760         optimize_insn_for_size_p instead of optimize_size.
22761         * config/i386/predicates.md (incdec_operand): Likewise.
22762         (aligned_operand): Likewise.
22763         * config/i386/sse.md (divv8sf3): Likewise.
22764         (sqrtv8sf2): Likewise.
22765
22766 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22767
22768         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
22769
22770         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
22771
22772 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22773
22774         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
22775         ssemodesuffixf2c with avxmodesuffixf2c.
22776
22777 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
22778
22779         PR c/40032
22780         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
22781
22782 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
22783
22784         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
22785         (struct tree_base): Adjust spacing for 8 bit boundaries.
22786         (struct tree_decl_common): Add decl_by_reference_flag bit.
22787         (DECL_BY_REFERENCE): Adjust.
22788         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
22789         print DECL_BY_REFERENCE bit.
22790         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
22791         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
22792         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
22793         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
22794         unconditionally.
22795
22796         PR middle-end/39666
22797         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
22798         range of the type, but default label is missing, add it with one
22799         of the existing labels instead of adding a new label for it.
22800
22801 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
22802
22803         * dwarf.h: Remove.
22804
22805 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
22806
22807         * Makefile.in (enable_plugin, plugin_includedir): New.
22808         (install): Depend on install-plugin.
22809         (PLUGIN_HEADERS): New.
22810         (install-plugin): New.
22811         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
22812
22813 2009-05-05  Richard Guenther  <rguenther@suse.de>
22814
22815         PR tree-optimization/40022
22816         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
22817         the only vuse.
22818         (phivn_valid_p): Fix tuplification error, simplify.
22819         (phiprop_insert_phi): Add dumps.
22820         (propagate_with_phi): Simplify.
22821
22822 2009-05-05  Richard Guenther  <rguenther@suse.de>
22823
22824         PR middle-end/40023
22825         * builtins.c (gimplify_va_arg_expr): Properly build the address.
22826
22827 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
22828
22829         * tree.h (strip_float_extensions): Remove duplicate declaration.
22830         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
22831         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
22832         block_ultimate_origin): Rearrange the declarations line to match the
22833         comment that indicates the .c file which the functions are defined.
22834         (dwarf2out_*, set_decl_rtl): Add comment.
22835         (get_base_address): Adjust comment.
22836         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
22837         declarations line and add comment.
22838         (is_builtin_name): Add blank after function name, for clarity.
22839
22840 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22841
22842         * attribs.c (decl_attributes): Use %qE for identifiers in
22843         diagnostics.
22844         * cgraphunit.c (verify_cgraph_node): Translate function names to
22845         locale character set in diagnostics.
22846         * coverage.c (get_coverage_counts): Use %qE for identifiers in
22847         diagnostics.
22848         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
22849         Document that functions are named in UTF-8.
22850         * expr.c (expand_expr_real_1): Translate function names to locale
22851         character set in diagnostics.
22852         * gimplify.c (omp_notice_variable, omp_is_private,
22853         gimplify_scan_omp_clauses): Use %qE for identifiers in
22854         diagnostics.
22855         * langhooks.c (lhd_print_error_function): Translate function names
22856         to locale character set.
22857         * langhooks.h (decl_printable_name): Document that return value is
22858         in internal character set.
22859         * stmt.c: Include pretty-print.h
22860         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
22861         diagnostics.
22862         (resolve_operand_name_1): Translate named operand name to locale
22863         character set.
22864         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
22865         diagnostics.
22866         * toplev.c (announce_function): Translate function names to locale
22867         character set.
22868         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
22869         (default_tree_printer): Use pp_identifier or translate identifiers
22870         to locale character set.  Mark "<anonymous>" for translation.
22871         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
22872         for identifiers in diagnostics.
22873         * tree.c (handle_dll_attribute): Use %qE for identifiers in
22874         diagnostics.
22875         * varasm.c (output_constructor): Use %qE for identifiers in
22876         diagnostics.
22877
22878 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
22879
22880         * configure.ac: use ` ` instead of $()
22881         * configure: Regenerate.
22882
22883 2009-05-05  Ben Elliston  <bje@au.ibm.com>
22884
22885         * config/pa/linux-atomic.c: Eliminate conditional include of
22886         errno.h on non-LP64 systems to simplify build requirements.
22887
22888 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22889
22890         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
22891         diagnostics.
22892         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
22893         and pass value to identifier_to_locale.
22894         (warn_variable_length_array): Make name a tree.
22895         (grokdeclarator): Separate diagnostic texts for named and unnamed
22896         declarators.  Use %qE for named declarators.
22897         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
22898         diagnostics.
22899         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
22900         identifiers in diagnostics.
22901         * c-typeck.c (push_member_name, start_init): Pass identifiers to
22902         identifier_to_locale.  Mark "anonymous" strings for translation.
22903
22904 2009-05-04  Michael Eager <eager@eagercon.com>
22905
22906         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
22907         address for DImode/DFmode only if double-precision FP regs.
22908
22909 2009-05-04  Michael Eager <eager@eagercon.com>
22910
22911         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
22912         TARGET_SINGLE_FLOAT check.
22913
22914 2009-05-04  Michael Eager <eager@eagercon.com>
22915
22916         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
22917
22918 2009-05-04  Michael Eager <eager@eagercon.com>
22919
22920         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
22921         * config/rs6000/t-xilinx: New
22922
22923 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
22924
22925         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
22926         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
22927         * gcc/explow.c (memory_address): Use target hook.
22928         * gcc/targhooks.c (default_legitimize_address): New.
22929         * gcc/targhooks.h (default_legitimize_address): New.
22930         * gcc/target.h (legitimize_address): New.
22931         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
22932         (TARGET_INITIALIZER): Include it.
22933         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
22934
22935         * config/bfin/bfin-protos.h (legitimize_address): Remove.
22936         * config/bfin/bfin.c (legitimize_address): Remove.
22937         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
22938         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
22939         Remove.
22940         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
22941         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
22942
22943         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
22944         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
22945         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
22946         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
22947         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
22948         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
22949         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
22950         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
22951         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
22952         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
22953         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
22954         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
22955         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
22956         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
22957         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
22958         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
22959         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
22960         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
22961         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
22962         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
22963         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
22964         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
22965         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
22966
22967         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
22968         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
22969         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
22970         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
22971         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
22972         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
22973         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
22974         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
22975         (thumb_legitimize_address): Delete.
22976         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
22977         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
22978         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
22979         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
22980         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
22981         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
22982         Delete.
22983         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
22984         Delete.
22985
22986         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
22987         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
22988         * config/m32r/m32r.c (m32r_legitimize_address): New.
22989         * config/m68k/m68k.c (m68k_legitimize_address): New.
22990         * config/score/score.c (score_legitimize_address): Standardize.
22991         * config/score/score3.c (score3_legitimize_address): Standardize.
22992         * config/score/score3.h (score3_legitimize_address): Adjust.
22993         * config/score/score7.c (score7_legitimize_address): Standardize.
22994         * config/score/score7.h (score7_legitimize_address): Adjust.
22995         * config/sh/sh.c (sh_legitimize_address): New.
22996         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
22997
22998         * gcc/config/s390/s390.c (legitimize_address): Rename to...
22999         (s390_legitimize_address): ... this.
23000         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
23001         (sparc_legitimize_address): ... this.
23002         * gcc/config/i386/i386.c (legitimize_address): Rename to...
23003         (ix86_legitimize_address): ... this.
23004         * gcc/config/avr/avr.c (legitimize_address): Rename to...
23005         (avr_legitimize_address): ... this.
23006         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
23007         (mn10300_legitimize_address): ... this.
23008         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
23009         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
23010         (alpha_expand_mov): Adjust call.
23011
23012         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
23013         * config/spu/spu.c (spu_legitimize_address): Likewise.
23014         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
23015         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
23016
23017 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23018
23019         * intl.c (locale_encoding, locale_utf8): New.
23020         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
23021         * intl.h (locale_encoding, locale_utf8): Declare.
23022         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
23023         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
23024         New.
23025         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
23026         argument.
23027         (pp_tree_identifier): Define to call pp_base_tree_identifier.
23028         (pp_base_tree_identifier): Declare as function.
23029         (identifier_to_locale): Declare.
23030         * Makefile.in (pretty-print.o): Update dependencies.
23031         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
23032
23033 2009-05-04  Richard Guenther  <rguenther@suse.de>
23034
23035         PR middle-end/40015
23036         * builtins.c (fold_builtin_memory_op): Do not decay to element
23037         type if the size matches the whole array.
23038
23039 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
23040
23041         * expmed.c (synth_mult): When trying out a shift, pass the result
23042         of a signed shift.
23043
23044 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
23045
23046         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
23047         (shiftsub1_cost): New.
23048         (init_expmed): Compute shiftsub1_cost.
23049         (synth_mult): Optimize multiplications by constants of the form
23050         -(2^^m-1) for some constant positive integer m.
23051
23052 2009-05-03  Richard Guenther  <rguenther@suse.de>
23053
23054         PR c/39983
23055         * c-typeck.c (array_to_pointer_conversion): Do not built
23056         ADDR_EXPRs of arrays of pointer-to-element type.
23057         * c-gimplify.c (c_gimplify_expr): Revert change fixing
23058         up wrong ADDR_EXPRs after-the-fact.
23059         * c-common.c (strict_aliasing_warning): Strip pointer
23060         conversions for obtaining the original type.
23061         * builtins.c (fold_builtin_memset): Handle array types.
23062         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
23063         and array types
23064
23065 2009-05-03  Richard Guenther  <rguenther@suse.de>
23066
23067         PR middle-end/23329
23068         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
23069         Do not lose casts from array types with unknown extent to array
23070         types with known extent.
23071         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
23072         alias set compatibility.
23073
23074 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
23075
23076         * flags.h (extra_warnings): Delete.
23077         * toplev.c (process_options): Handle Wuninitialized here.
23078         * opts.c (extra_warnings): Delete.
23079         (set_Wextra): Delete.
23080         (common_handle_option): -Wextra can be handled automatically.
23081         * c-opts.c (c_common_handle_option): Delete obsolete code.
23082         (c_common_post_options): Simplify comment.
23083         * common.opt (W): Add Var.
23084         (Wextra): Add Var.
23085         (Wuninitialized): Initialize to -1.
23086
23087 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
23088             Richard Guenther  <rguenther@suse.de>
23089
23090         * expr.c (get_def_for_expr): New function.
23091         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
23092         SSA rather than trees.
23093         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
23094         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
23095
23096 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
23097
23098         * c-common.c (reswords): Add _Imaginary.
23099         * c-common.c (enum rid): Add RID_IMAGINARY.
23100
23101 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
23102
23103         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
23104         Patch by Richard Guenther.
23105
23106 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
23107
23108         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
23109         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
23110         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
23111         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
23112         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
23113         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
23114         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
23115         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
23116         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
23117         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
23118         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
23119         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
23120         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
23121         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
23122         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
23123         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
23124         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
23125         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
23126
23127 2009-05-02  Richard Guenther  <rguenther@suse.de>
23128
23129         PR tree-optimization/39940
23130         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
23131         doing so.
23132
23133 2009-05-02  Richard Guenther  <rguenther@suse.de>
23134
23135         PR middle-end/40001
23136         * tree-ssa.c (execute_update_addresses_taken): Properly check
23137         if we can mark a variable DECL_GIMPLE_REG_P.
23138         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
23139         back to the end of the function.
23140         (is_gimple_reg_type): Remove complex type special casing.
23141         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
23142         if not optimizing.
23143
23144 2009-05-02  Ben Elliston  <bje@au.ibm.com>
23145
23146         * doc/collect2.texi (Collect2): Document search path behaviour
23147         when configured with --with-ld.
23148
23149 2009-05-02  Jan Hubicka  <jh@suse.cz>
23150
23151         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
23152         parameter; update callers.
23153         (coalesce_cost_edge): EH edges are costier because they needs
23154         splitting even if not critical and even more costier when there are
23155         multiple EH predecestors.
23156
23157 2009-05-02  Jan Hubicka  <jh@suse.cz>
23158
23159         * except.c (remove_eh_handler_and_replace): Handle updating after
23160         removing TRY blocks.
23161
23162 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
23163
23164         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
23165
23166 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
23167
23168         * varasm.c: Do not include c-pragma.h.
23169         * attribs.c: Do not incude c-common.h.
23170
23171 2009-05-01  Michael Matz  <matz@suse.de>
23172
23173         * calls.c (initialize_argument_information): Handle SSA names like
23174         decls with a non MEM_P DECL_RTL.
23175
23176 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
23177
23178         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
23179         * ipa-utils.c: Likewise.
23180         * ipa-type-escape.c: Likewise.
23181         * cgraphunit.c Do not include c-common.h.
23182         * ipa-pure-const.c: Likewise.
23183         * tree-if-conv.c: Likewise.
23184         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
23185         * ipa-struct-reorg.c: Likewise.
23186         * tree-nomudflap.c: Likewise.
23187         * tree-ssa-structalias.c: Likewise.
23188
23189 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
23190
23191         * store-motion.c: Many cleanups to make this pass a first-class
23192         citizen instead of an appendix to gcse load motion.  Add TODO list
23193         to make this pass faster/cleaner/better.
23194
23195         (struct ls_expr): Post gcse.c-split cleanups.
23196         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
23197         "stores" field to "avail_stores".
23198         (pre_ldst_mems): Rename to store_motion_mems.
23199         (pre_ldst_table): Rename to store_motion_mems_table.
23200         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
23201         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
23202         (ldst_entry): Rename to st_expr_entry, update users.
23203         (free_ldst_entry): Rename to free_st_expr_entry, update users.
23204         (free_ldst_mems): Rename to free_store_motion_mems, update users.
23205         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
23206         update caller.
23207         (first_ls_expr): Rename to first_st_expr, update users.
23208         (next_ls_expr): Rename to next_st_expr, update users.
23209         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
23210         fields properly for store motion instead of names inherited from load
23211         motion in gcse.c.
23212         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
23213         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
23214         are done with it.
23215
23216         (ae_kill): Rename to st_kill, update users.
23217         (ae_gen): Rename to st_avloc, update users.
23218         (transp): Rename to st_transp, update users.
23219         (pre_insert_map): Rename to st_insert_map, update users.
23220         (pre_delete_map): Rename to st_delete_map, update users.
23221         (insert_store, build_store_vectors, free_store_memory,
23222         one_store_motion_pass): Update for abovementioned changes.
23223
23224         (gcse_subst_count, gcse_create_count): Remove.
23225         (one_store_motion_pass): New statistics counters "n_stores_deleted"
23226         and "n_stores_created", local variables.
23227
23228         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
23229         use for_each_rtx.
23230
23231         (regvec, compute_store_table_current_insn): Remove.
23232         (reg_set_info, reg_clear_last_set): Remove.
23233         (compute_store_table): Use DF caches instead of local dataflow
23234         solvers.
23235
23236 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
23237
23238         * c-objc-common.c (c_tree_printer): Print identifiers with
23239         pp_identifier, not pp_string.  Mark "({anonymous})" for
23240         translation.
23241         * c-pretty-print.c (pp_c_ws_string): New.
23242         (pp_c_cv_qualifier, pp_c_type_specifier,
23243         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
23244         pp_c_storage_class_specifier, pp_c_function_specifier,
23245         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
23246         pp_c_primary_expression, pp_c_postfix_expression,
23247         pp_c_unary_expression, pp_c_shift_expression,
23248         pp_c_relational_expression, pp_c_equality_expression,
23249         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
23250         use pp_string and pp_c_ws_string in place of pp_identifier and
23251         pp_c_identifier for non-identifiers.  Mark English strings for
23252         translation.
23253         * c-pretty-print.h (pp_c_ws_string): Declare.
23254
23255 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
23256             Roland McGrath <roland@redhat.com>
23257
23258         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
23259         (ENABLE_LD_BUILDID): New configuration option.
23260         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
23261         (LINK_BUILDID_SPEC): New macro.
23262         (init_spec): If defined, prepend it between LINK_EH_SPEC and
23263         link_spec.
23264         * doc/install.texi: Document --enable-linker-build-id option.
23265         * configure: Rebuild.
23266         * config.in: Rebuild.
23267
23268 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
23269
23270         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
23271         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
23272         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
23273         MIPS_GP_SAVE_AREA_SIZE.
23274         * config/mips/mips.c (struct mips_frame_info): Update comment
23275         before arg_pointer_offset and hard_frame_pointer_offset.
23276         (mips_compute_frame_info): Update diagram before function: to
23277         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
23278         indicate the position of frame_pointer_rtx with -fstack-protector and
23279         to show args_size.  Don't allocate cprestore area for leaf functions
23280         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
23281         cprestore_size.
23282         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
23283
23284 2009-04-30  Michael Matz  <matz@suse.de>
23285
23286         PR tree-optimization/39955
23287         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
23288
23289 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
23290
23291         * ira.c (setup_cover_and_important_classes):  Use safe macro
23292         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
23293         directly.
23294         * genpreds.c (write_tm_preds_h):  Output suitable definition of
23295         REG_CLASS_FOR_CONSTRAINT.
23296
23297 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
23298
23299         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
23300         instead of an int.
23301         * bitmap.c (bitmap_descriptor): Likewise.
23302         * ggc-common.c (loc_descriptor): Likewise.
23303         * varray.c (varray_descriptor): Likewise.
23304         * vec.c (vec_descriptor): Likewise.
23305
23306 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
23307
23308         * Makefile.in (dce.o): Add $(EXCEPT_H).
23309         * dce.c: Include except.h and delete redundant vector definitions.
23310         (deletable_insn_p): Return false for non-call insns that can throw
23311         if DF is running.
23312
23313 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
23314
23315         * gcse.c (ae_gen): Remove.
23316         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
23317         and make non-static function to make it available in store-motion.c.
23318         Update call sites with search-and-replace.
23319         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
23320         extract_mentioned_regs, extract_mentioned_regs_helper,
23321         find_moveable_store, compute_store_table, load_kills_store, find_loads,
23322         store_killed_in_insn, store_killed_after, store_killed_before,
23323         build_store_vectors, insert_insn_start_basic_block, insert-store,
23324         remove_reachable_equiv_notes, replace_store_insn, delete_store,
23325         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
23326         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
23327         * store-motion.c: ...new file.  Also copy data structures from gcse.c
23328         and clean up to remove parts not used by store motion.
23329         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
23330         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
23331
23332 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23333
23334         PR target/38571
23335         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
23336         when optimizing for size.
23337
23338 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
23339
23340         * gcse.c (gcse_constant_p): Fix typo in last change.
23341
23342 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
23343
23344         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
23345
23346 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
23347
23348         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
23349
23350 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
23351
23352         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
23353         CONST_HIGH_PART result.
23354
23355 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
23356
23357         * config/avr/avr.c (initial_elimination_offset): Rename to
23358         avr_initial_elimination_offset.
23359         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
23360         change return type to bool.
23361         (avr_can_eliminate): New function.
23362         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
23363         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
23364         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
23365         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
23366         avr_initial_elimination_offset.
23367         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
23368         (avr_initial_elimination_offset): Define.
23369
23370 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
23371             Steven Bosscher  <steven@gcc.gnu.org>
23372
23373         PR rtl-optimization/39938
23374         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
23375         * cfgrtl.c: Include insn-attr.h.
23376         (rest_of_pass_free_cfg): New function.
23377         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
23378         * resource.c (init_resource_info): Remove call to df_analyze.
23379
23380 2009-04-29  Richard Guenther  <rguenther@suse.de>
23381
23382         PR target/39943
23383         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
23384         allow conversion to signed integers.
23385
23386 2009-04-29  Richard Guenther  <rguenther@suse.de>
23387
23388         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
23389         shifts of floating point vectors if the shift amount is
23390         a constant multiple of the element size.
23391
23392 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
23393             Michael Matz  <matz@suse.de>
23394
23395         PR middle-end/39927
23396         PR bootstrap/39929
23397         * tree-outof-ssa.c (emit_partition_copy): New function.
23398         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
23399         insert_part_to_rtx_on_edge): Perform the partition base var
23400         copy using emit_partition_copy.
23401         (insert_value_copy_on_edge): Convert constants to the right mode.
23402         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
23403         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
23404
23405 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23406
23407         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
23408         scan backwards to try to find a constant to initialize it.
23409
23410         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
23411         insn before the loop_end instruction, don't look past labels.
23412
23413 2009-04-29  Richard Guenther  <rguenther@suse.de>
23414
23415         PR middle-end/39937
23416         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
23417         loose type conversions.
23418         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
23419         stmts only if there are no uses of its definition.
23420
23421 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23422
23423         * config/bfin/bfin.h (splitting_loops): Declare.
23424         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
23425         Reorder bit definitions to be ascending.
23426         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
23427         * config/bfin/bfin.c (splitting_loops): New variable.
23428         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
23429         (struct loop_info): Remove members INIT and LOOP_INIT.
23430         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
23431         the LSETUP sequence.  Allow LC to be loaded from any register, but
23432         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
23433         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
23434         set to 1.
23435         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
23436         of reload_completed.
23437
23438         From Jie Zhang:
23439         * config/bfin/bfin.md (movsi_insn): Refine constraints.
23440
23441 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
23442
23443         * Makefile.in (PLUGIN_VERSION_H): New.
23444         (OBJS-common): Remove plugin-version.o.
23445         (plugin.o): Depend on (PLUGIN_VERSION_H).
23446         (plugin-version.o): Remove.
23447         * configure: Regenerate
23448         * configure.ac: Create plugin-version.h.
23449         * gcc-plugin.h (plugin_gcc_version): Remove.
23450         (plugin_default_version_check): Change signature.
23451         * plugin-version.c: Remove.
23452         * plugin.c: Include plugin-version.h.
23453         (str_plugin_gcc_version_name): Remove.
23454         (try_init_one_plugin): Pass gcc version to plugin_init.
23455         (plugin_default_version_check): Both gcc and plugin versions are now
23456         arguments.
23457
23458 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23459
23460         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
23461         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
23462         Remove special case testing for last insn of inner loops. Don't fail
23463         if the loop ends with a jump, emit an extra nop instead.
23464
23465         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
23466         DREGS rather than comparing directly.  Remove code that tries to
23467         account for latencies.
23468
23469 2009-04-29  Richard Guenther  <rguenther@suse.de>
23470
23471         PR tree-optimization/39941
23472         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
23473         eliminating an indirect call.
23474
23475 2009-04-29  Richard Guenther  <rguenther@suse.de>
23476
23477         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
23478         parameter.  Allow invariants as base if !require_lvalue.
23479         (verify_gimple_assign_single): Adjust.
23480
23481 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23482
23483         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
23484         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
23485         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
23486         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
23487         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
23488         a VEC_SELECT.
23489         * config/bfin/bfin.c (bfin_expand_builtin,
23490         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
23491
23492 2009-04-28  Richard Guenther  <rguenther@suse.de>
23493
23494         * tree-vect-loop.c (get_initial_def_for_induction): Use
23495         correct types for pointer increment.
23496
23497 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23498
23499         * toplev.c (print_version): Update GMP version string calculation.
23500
23501 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
23502
23503         PR rtl-optimization/39938
23504         * resource.c (init_resource_info): Add call to df_analyze.
23505
23506 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
23507
23508         * config/alpha/alpha.md (usegp): Cast the result of
23509         alpha_find_lo_sum_using_gp to enum attr_usegp.
23510         * config/alpha/alpha.c (override_options): Remove end-of-structure
23511         marker element from cpu_table.  Use array size of cpu_table to handle
23512         -mcpu and -mtune options.
23513         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
23514
23515 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
23516
23517         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
23518         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
23519         tune_32 and tune_64.
23520         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
23521         support on PowerPC.
23522         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
23523         * config/rs6000/option-defaults.h: ... here.  New file.
23524         (OPT_64, OPT_32): Define.
23525         (MASK_64BIT): Define to 0 if not already defined.
23526         (OPT_ARCH64, OPT_ARCH32): Define.
23527         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
23528         and tune_64.
23529
23530 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23531
23532         * config/arm/arm.c (arm_override_options): Emit error on using
23533         fpa with AAPCS.
23534
23535 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
23536
23537         PR rtl-optimization/39914
23538         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
23539         registers for allocnos created from user-defined variables only
23540         when not optimizing.
23541
23542 2009-04-28  Richard Guenther  <rguenther@suse.de>
23543
23544         PR middle-end/39937
23545         * fold-const.c (fold_binary): Use distribute_real_division only
23546         on float types.
23547
23548 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
23549
23550         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
23551         add hpux-stdint.h to tm_file.
23552         (hppa[12]*-*-hpux11*): Ditto.
23553         (ia64*-*-hpux*): Ditto.
23554         * config/hpux-stdint.h: New.
23555         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
23556         __STDC_EXT__ for all compiles.
23557         * config/pa/pa-hpux.h: Ditto.
23558         * config/pa/pa-hpux10.h: Ditto.
23559         * config/pa/pa-hpux11.h: Ditto.
23560
23561 2009-04-28  Catherine Moore  <clm@codesourcery.com>
23562
23563         * debug.h (set_name): Add comment.
23564
23565 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
23566
23567         PR target/39929
23568         * config/darwin.c (machopic_gen_offset): Check
23569         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
23570         * config/arm/arm.c (require_pic_register): Likewise.
23571
23572 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
23573
23574         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
23575         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
23576         m32c_promote_prototypes): Delete.
23577
23578 2009-04-28  Michael Matz  <matz@suse.de>
23579
23580         PR middle-end/39922
23581         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
23582         constants.
23583
23584 2009-04-28  Richard Guenther  <rguenther@suse.de>
23585
23586         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
23587
23588 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23589
23590         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
23591         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
23592         * config/arm/arm-tune.md: Regenerate.
23593
23594 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
23595
23596         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
23597         block if there are complex incoming edges.
23598         (sel_merge_blocks): Remove useless assert.
23599         (sel_redirect_edge_and_branch): Check that edge was redirected.
23600         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
23601         (sel_find_rgns): Delete declaration.
23602         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
23603         the region when it is not a preheader.
23604
23605 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
23606
23607         PR c/39323
23608         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
23609
23610 2009-04-28  Richard Guenther  <rguenther@suse.de>
23611
23612         * tree.h (SSA_NAME_VALUE): Remove.
23613         (struct tree_ssa_name): Remove value_handle member.
23614         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
23615         array for jump threading.
23616         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
23617         SSA_NAME_VALUEs.
23618         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
23619         * tree-flow.h (threadedge_initialize_values): Declare.
23620         (threadedge_finalize_values): Likewise.
23621         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
23622         (SSA_NAME_VALUE): Define.
23623         (threadedge_initialize_values): New function.
23624         (threadedge_finalize_values): Likewise.
23625         * tree-ssa-dom.c (ssa_name_values): New global variable.
23626         (SSA_NAME_VALUE): Define.
23627         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
23628
23629 2009-04-28  Ira Rosen  <irar@il.ibm.com>
23630
23631         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
23632         Use REPORT_VECTORIZED_LOCATIONS instead
23633         REPORT_VECTORIZED_LOOPS.
23634         * tree-vectorizer.c (vect_verbosity_level): Make static.
23635         (vect_loop_location): Rename to vect_location.
23636         (vect_set_verbosity_level): Update comment.
23637         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
23638         and vect_location.
23639         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
23640         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
23641         instead REPORT_UNVECTORIZED_LOOPS.
23642         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
23643         and vect_loop_def to vect_external_def and vect_internal_def.
23644         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
23645         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
23646         REPORT_UNVECTORIZED_LOCATIONS.
23647         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
23648         and vect_used_in_loop and to vect_unused_in_scope and
23649         vect_used_in_scope.
23650         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
23651         (vect_verbosity_level): Remove declaration.
23652         (vect_analyze_operations): Likewise.
23653         (vect_analyze_stmt): Declare.
23654         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
23655         REPORT_UNVECTORIZED_LOCATIONS.
23656         (vect_get_loop_niters): Fix indentation.
23657         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
23658         (vect_analyze_loop_operations): New function.
23659         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
23660         vect_analyze_operations.
23661         (vect_is_simple_reduction): Use new names.
23662         (vectorizable_live_operation, vect_transform_loop): Likewise.
23663         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
23664         to specify whether the data references can be a part of interleaving
23665         chain.
23666         (vect_analyze_data_ref_dependence): Use new names.
23667         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
23668         (vect_create_addr_base_for_vector_ref): Remove redundant code.
23669         * tree-vect-patterns.c (widened_name_p): Use new names.
23670         (vect_recog_dot_prod_pattern): Likewise.
23671         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
23672         (process_use, vect_mark_stmts_to_be_vectorized,
23673         vect_model_simple_cost, vect_model_store_cost,
23674         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
23675         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
23676         vectorizable_operation, vectorizable_type_demotion,
23677         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
23678         vectorizable_condition): Likewise.
23679         (vect_analyze_operations): Split into vect_analyze_loop_operations
23680         and ...
23681         (vect_analyze_stmt): ... new function.
23682         (new_stmt_vec_info): Use new names.
23683         (vect_is_simple_use): Use new names and fix comment.
23684         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
23685         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
23686
23687 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
23688
23689         PR target/39911
23690         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
23691         and integer modes for x87 operands.  Do not ICE for unsupported size,
23692         generate error instead.  Generate error for unsupported operand types.
23693         ['z']: Do not handle HImode memory operands specially.  Warning
23694         for floating-point operands.  Fallthru to 'Z' for unsupported operand
23695         types.  Do not ICE for unsupported size, generate error instead.
23696         (output_387_binary_op): Use %Z to output operands.
23697         (output_fp_compare): Ditto.
23698         (output_387_reg_move): Ditto.
23699
23700 2009-04-28  Ben Elliston  <bje@au.ibm.com>
23701
23702         PR c++/35652
23703         Revert:
23704
23705         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23706
23707         * builtins.c (c_strlen): Do not warn here.
23708         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
23709         * c-common.c (pointer_int_sum): Take an explicit location.
23710         Warn about offsets out of bounds.
23711         * c-common.h (pointer_int_sum): Adjust declaration.
23712
23713 2009-04-27  Ian Lance Taylor  <iant@google.com>
23714
23715         * collect2.c (is_ctor_dtor): Change type of ret field in struct
23716         names to symkind.
23717         * dce.c (run_fast_df_dce): Change type of old_flags to int.
23718         * df-core.c (df_set_flags): Change return type to int.  Change
23719         type of old_flags to int.
23720         (df_clear_flags): Likewise.
23721         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
23722         (df_get_conditional_uses): Likewise.
23723         * df.h (df_set_flags, df_clear_flags): Update declarations.
23724         * dwarf2out.c (struct indirect_string_node): Change type of form
23725         field to enum dwarf_form.
23726         (AT_string_form): Change return type to enum dwarf_form.
23727         * fixed-value.c (fixed_compare): Add cast to enum type.
23728         * fwprop.c (update_df): Change 0 to VOIDmode.
23729         * gensupport.c: Change 0 to UNKNOWN.
23730         * gimple.h (gimple_cond_code): Add cast to enum type.
23731         * haifa-sched.c (reemit_notes): Add cast to enum type.
23732         * hooks.c (hook_int_void_no_regs): Remove function.
23733         * hooks.h (hook_int_void_no_regs): Remove declaration.
23734         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
23735         * predict.c (combine_predictions_for_insn): Add casts to enum type.
23736         * real.c (real_arithmetic): Add cast to enum type.
23737         (real_compare): Likewise.
23738         * target.h (struct gcc_target): Change return type of
23739         branch_target_register_class to enum reg_class.
23740         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
23741         default_branch_target_register_class.
23742         * targhooks.c (default_branch_target_register_class): New function.
23743         * targhooks.h (default_branch_target_register_class): Declare.
23744         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
23745         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
23746         cast to int.
23747         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
23748         ERROR_MARK.
23749         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
23750         vect_uninitialized_def.  Change 0 to ERROR_MARK.
23751         * tree-vect-stmts.c (supportable_widening_operation): Don't
23752         initialize icode1 and icode2.
23753         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
23754         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
23755         and to STD_C89.
23756         (cmn_err_flag_specs): Change 0 to STD_C89.
23757         (cmn_err_char_table): Likewise.
23758         * config/arm/arm.c (get_arm_condition_code): Change type of code
23759         to enum arm_cond_code.
23760         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
23761         (IWMMXT_BUILTIN2): Likewise.
23762         (neon_builtin_type_bits): Don't define typedef.
23763         (neon_builtin_datum): Change type of bits field to int.
23764         (arm_expand_neon_args): Add cast to enum type.
23765         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
23766         TLS_MODEL_NONE.
23767         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
23768         casts to enum type.
23769         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
23770         MIPS_FP_COND_f.
23771         * config/mips/mips.md (jal_macro): Return enum constant.
23772         (single_insn): Likewise.
23773         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
23774         CODE_FOR_nothing.
23775         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
23776         casts to enum type.
23777         * config/s390/s390.c (s390_tune_flags): Change type to int.
23778         (s390_arch_flags): Likewise.
23779         (s390_handle_arch_option): Change flags field of struct pta to int.
23780         * config/s390/s390.h (s390_tune_flags): Update declaration.
23781         (s390_arch_flags): Likewise.
23782         * config/sh/sh.c (prepare_move_operands): Compare
23783         tls_symbolic_operand result with enum constant.
23784         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
23785         (sh_expand_prologue): Add cast to enum type.
23786         (sh_expand_epilogue): Likewise.
23787         (tls_symbolic_operand): Change return type to enum tls_model.
23788         (fpscr_set_from_mem): Add cast to enum type.
23789         (legitimize_pic_address): Compare tls_symbolic_operand result with
23790         enum constant.
23791         (sh_target_reg_class): Change return type to enum reg_class.
23792         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
23793         PROCESSOR_xxx.
23794         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
23795         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
23796         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
23797         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
23798         (delayed_branch, tls_call_delay): Likewise.
23799         (eligible_for_sibcall_delay): Likewise.
23800         (eligible_for_return_delay): Likewise.
23801         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
23802         (spu_expand_builtin_1): Likewise.
23803
23804         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
23805         for all types of conversions.
23806         (output_init_element): Issue -Wc++-compat warning if needed when
23807         initializing a bitfield with enum type.
23808         * c-parser.c (c_parser_expression): Set original_type to
23809         original_type of right hand operand of comma operator.
23810
23811 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23812
23813         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
23814         grammar nits.
23815         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
23816         * doc/cpp.texi (Standard Predefined Macros)
23817         (Implementation-defined behavior): Likewise.
23818         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
23819         * doc/gimple.texi (GIMPLE Exception Handling)
23820         (@code{GIMPLE_ASSIGN}): Likewise.
23821         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
23822         * doc/invoke.texi (Warning Options, Optimize Options)
23823         (AVR Options, Darwin Options): Likewise.
23824         (Optimize Options): Reformulate -fwhole-program description.
23825         * doc/loop.texi (Lambda): Likewise.
23826         * doc/md.texi (Output Template, Define Constraints)
23827         (Standard Names, Insn Splitting): Likewise.
23828         * doc/options.texi (Option properties): Likewise.
23829         * doc/passes.texi (Tree-SSA passes): Likewise.
23830         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
23831         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
23832         (File Names and DBX): Likewise.
23833         * doc/trouble.texi (Incompatibilities): Likewise.
23834
23835 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
23836
23837         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
23838         instruction is correct.
23839
23840 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
23841
23842         Allow non-constant arguments to conversion intrinsics.
23843         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
23844         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
23845         * spu.c (print_operand): Handle 'v' and 'w'.
23846         (exp2_immediate_p, spu_gen_exp2): Define.
23847         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
23848         spu_convtf_1): Update parameter descriptions.
23849         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
23850         * constraints.md ('v', 'w'): New.
23851         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
23852         Remove.
23853         (i2f, I2F): New define_mode_attr.
23854         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
23855         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
23856         fixuns_truncv4sfv4si2):  Update to use mode attribute.
23857         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
23858         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
23859         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
23860         patterns for combine.
23861
23862 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
23863
23864         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
23865         (cprop, hoist, pre, store_motion): New debug counters.
23866         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
23867         is not an RTL pass anymore.
23868         (pass_profiling): Remove extern decl for pass removed in 2005.
23869         (pass_gcse, pass_jump_bypass): Remove.
23870         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
23871         to 0 for clean state.
23872         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
23873         * cse.c (gate_handle_cse_after_global_opts,
23874         rest_of_handle_cse_after_global_opts): New functions.
23875         (pass_cse_after_global_opts): New pass, does local CSE.
23876         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
23877         (TV_CPROP): New timevar.
23878         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
23879         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
23880         (gcse_main, recompute_all_luids): Remove.
23881         (compute_hash_table_work): Call max_reg_num instead of reading
23882         max_gcse_regno.
23883         (cprop_jump): Don't set run_jump_opt_after_gcse.
23884         (constprop_register): Always allow to alter jumps.
23885         (cprop_insn): Likewise.
23886         (do_local_cprop): Likewise.
23887         (local_cprop_pass): Likewise.  Return non-zero if something changed.
23888         (cprop): Remove function, fold interesting bits into one_cprop_pass.
23889         (find_implicit_sets): Add note about missed optimization opportunity.
23890         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
23891         pass_rtl_cprop execute function.
23892         Don't bother tracking the pass number, each pass gets its own dumpfile
23893         now anyway.
23894         Always allow to alter jumpsand bypass jumps.
23895         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
23896         will just find no suitable set.
23897         (pre_edge_insert): Fix dumping, this function is for PRE only.
23898         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
23899         pass_rtl_pre execute function.
23900         (hoist_code): Return non-zero if something changed.  Keep track of
23901         substitutions and insertions for statistics gathering similar to PRE.
23902         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
23903         called from the pass_rtl_hoist execute function.  Show pass statistics.
23904         (compute_store_table): Use max_reg_num directly instead of using the
23905         formerly global max_gcse_regno.
23906         (build_store_vectors): Likewise.
23907         (replace_store_insn): Fix dumping.
23908         (store_motion): Rename to ...
23909         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
23910         pass, called from the pass_rtl_store_motion execute function.  Keep
23911         track of substitutions and insertions for statistics gathering similar
23912         to PRE.
23913         (bypass_jumps): Remove, fold interesting bits into ...
23914         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
23915         from the pass_rtl_cprop execute function.
23916         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
23917         pass_jump_bypass): Remove.
23918         (gate_handle_gcse, rest_of_handle_gcse): Remove.
23919         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
23920         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
23921         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
23922         (gate_rtl_store_motion, execute_rtl_store_motion,
23923         pass_rtl_store_motion): New.
23924         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
23925         make it clear that -fcse-skip-blocks is a no-op for backward compat.
23926         * passes.c (init_optimization_passes): Remove pass_gcse and
23927         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
23928         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
23929         instead of pass_jump_bypass.
23930
23931 2009-04-27  Richard Guenther  <rguenther@suse.de>
23932
23933         PR middle-end/39928
23934         * gimplify.c (gimplify_expr): If we are required to create
23935         a temporary make sure it ends up as register.
23936
23937 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
23938
23939         PR target/39903
23940         * config/i386/i386.c (construct_container): Don't call
23941         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
23942         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
23943
23944 2009-04-27  Michael Matz  <matz@suse.de>
23945
23946         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
23947         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
23948         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
23949         (dump_replaceable_exprs): Take a bitmap.
23950         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
23951         array.
23952         (expand_gimple_basic_block): Likewise.
23953         * tree-ssa-ter.c (struct temp_expr_table_d): Make
23954         replaceable_expressions member a bitmap.
23955         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
23956         (mark_replaceable): Likewise.
23957         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
23958         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
23959
23960 2009-04-27  Richard Guenther  <rguenther@suse.de>
23961
23962         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
23963         (verify_stmts): Dispatch to gimple/type verification code.
23964         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
23965         issue with call argument types.
23966
23967 2009-04-27  Michael Matz  <matz@suse.de>
23968
23969         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
23970         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
23971         to above.
23972
23973 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
23974             Eric Botcazou  <ebotcazou@adacore.com>
23975
23976         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
23977         a label's basic block.
23978         (mark_target_live_regs): Tidy and rework obsolete comments.
23979         Change back DF problem to LIVE.  If a label starts a basic block,
23980         assume that all registers that used to be live then still are.
23981         (init_resource_info): If a label starts a basic block, set its
23982         BLOCK_FOR_INSN accordingly.
23983         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
23984
23985 2009-04-27  Richard Guenther  <rguenther@suse.de>
23986
23987         * tree-flow-inline.h (function_ann): Remove.
23988         (get_function_ann): Likewise.
23989         * tree-dfa.c (create_function_ann): Remove.
23990         * tree-flow.h (struct static_var_ann_d): Remove.
23991         (struct function_ann_d): Likewise.
23992         (union tree_ann_d): Remove fdecl member.
23993         (function_ann_t): Remove.
23994         (function_ann, get_function_ann, create_function_ann): Remove
23995         declarations.
23996
23997 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
23998
23999         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
24000
24001 2009-04-27  Jan Hubicka  <jh@suse.cz>
24002
24003         * ipa-pure-const.c (struct funct_state_d): New fields
24004         state_previously_known, looping_previously_known; remove
24005         state_set_in_source.
24006         (analyze_function): Use new fields.
24007         (propagate): Avoid assumption that state_set_in_source imply
24008         nonlooping.
24009
24010         * tree-ssa-loop-niter.c (finite_loop_p): New function.
24011         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
24012         * cfgloop.h (finite_loop_p): Declare.
24013
24014 2009-04-26  Michael Matz  <matz@suse.de>
24015
24016         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
24017
24018 2009-04-26  Michael Matz  <matz@suse.de>
24019
24020         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
24021         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
24022         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
24023         pass_mark_used_blocks): Remove.
24024         * tree-optimize.c (pass_free_datastructures,
24025         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
24026         * passes.c (init_optimization_passes): Don't call
24027         pass_mark_used_blocks, remove dead code.
24028
24029 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
24030
24031         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
24032         * tree-ssa-live.h (register_ssa_partition): Likewise.
24033
24034 2009-04-26  Michael Matz  <matz@suse.de>
24035
24036         Expand from SSA.
24037         * builtins.c (fold_builtin_next_arg): Handle SSA names.
24038         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
24039         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
24040         SSA names.
24041         (compare_pairs): Swap cost comparison.
24042         (coalesce_ssa_name): Don't use change_partition_var.
24043         * tree-nrv.c (struct nrv_data): Add modified member.
24044         (finalize_nrv_r): Set it.
24045         (tree_nrv): Use it to update statements.
24046         (pass_nrv): Require PROP_ssa.
24047         * tree-mudflap.c (mf_decl_cache_locals,
24048         mf_build_check_statement_for): Use make_rename_temp.
24049         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
24050         * alias.c (find_base_decl): Handle SSA names.
24051         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
24052         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
24053         * rtl.h (set_reg_attrs_for_parm): Declare.
24054         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
24055         to "optimized", remove unused locals at finish.
24056         (execute_free_datastructures): Make global, call
24057         delete_tree_cfg_annotations.
24058         (execute_free_cfg_annotations): Don't call
24059         delete_tree_cfg_annotations.
24060
24061         * ssaexpand.h: New file.
24062         * expr.c (toplevel): Include ssaexpand.h.
24063         (expand_assignment): Handle SSA names the same as register variables.
24064         (expand_expr_real_1): Expand SSA names.
24065         * cfgexpand.c (toplevel): Include ssaexpand.h.
24066         (SA): New global variable.
24067         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
24068         (SSAVAR): New macro.
24069         (set_rtl): New helper function.
24070         (add_stack_var): Deal with SSA names, use set_rtl.
24071         (expand_one_stack_var_at): Likewise.
24072         (expand_one_stack_var): Deal with SSA names.
24073         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
24074         before unique numbers.
24075         (expand_stack_vars): Use set_rtl.
24076         (expand_one_var): Accept SSA names, add asserts for them, feed them
24077         to above subroutines.
24078         (expand_used_vars): Expand all partitions (without default defs),
24079         then only the local decls (ignoring those expanded already).
24080         (expand_gimple_cond): Remove edges when jumpif() expands an
24081         unconditional jump.
24082         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
24083         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
24084         SSA name.
24085         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
24086         members of SA; deal with PARM_DECL partitions here; expand
24087         all PHI nodes, free tree datastructures and SA.  Commit instructions
24088         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
24089         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
24090         info and statements at start, collect garbage at finish.
24091         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
24092         (VAR_ANN_PARTITION) Remove.
24093         (change_partition_var): Don't declare.
24094         (partition_to_var): Always return SSA names.
24095         (var_to_partition): Only accept SSA names.
24096         (register_ssa_partition): Only check argument.
24097         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
24098         member.
24099         (delete_var_map): Don't free it.
24100         (var_union): Only accept SSA names, simplify.
24101         (partition_view_init): Mark only useful SSA names as used.
24102         (partition_view_fini): Only deal with SSA names.
24103         (change_partition_var): Remove.
24104         (dump_var_map): Use ssa_name instead of partition_to_var member.
24105         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
24106         basic blocks.
24107         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
24108         (struct _elim_graph): New member const_dests; nodes member vector of
24109         ints.
24110         (set_location_for_edge): New static helper.
24111         (create_temp): Remove.
24112         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
24113         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
24114         (new_elim_graph): Allocate const_dests member.
24115         (clean_elim_graph): Truncate const_dests member.
24116         (delete_elim_graph): Free const_dests member.
24117         (elim_graph_size): Adapt to new type of nodes member.
24118         (elim_graph_add_node): Likewise.
24119         (eliminate_name): Likewise.
24120         (eliminate_build): Don't take basic block argument, deal only with
24121         partition numbers, not variables.
24122         (get_temp_reg): New static helper.
24123         (elim_create): Use it, deal with RTL temporaries instead of trees.
24124         (eliminate_phi): Adjust all calls to new signature.
24125         (assign_vars, replace_use_variable, replace_def_variable): Remove.
24126         (rewrite_trees): Only do checking.
24127         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
24128         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
24129         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
24130         contains_tree_r, MAX_STMTS_IN_LATCH,
24131         process_single_block_loop_latch, analyze_edges_for_bb,
24132         perform_edge_inserts): Remove.
24133         (expand_phi_nodes): New global function.
24134         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
24135         functions, initialize new parameter, remember partitions having a
24136         default def.
24137         (finish_out_of_ssa): New global function.
24138         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
24139         don't reset in_ssa_p here, don't disable TER when mudflap.
24140         (pass_del_ssa): Remove.
24141         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
24142         partition members.
24143         (execute_free_datastructures): Declare.
24144         * Makefile.in (SSAEXPAND_H): New variable.
24145         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
24146         * basic-block.h (commit_one_edge_insertion): Declare.
24147         * passes.c (init_optimization_passes): Move pass_nrv and
24148         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
24149         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
24150         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
24151         (redirect_branch_edge): Deal with super block when expanding, split
24152         out jump patching itself into ...
24153         (patch_jump_insn): ... here, new static helper.
24154
24155 2009-04-26  Michael Matz  <matz@suse.de>
24156
24157         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
24158         beyond num_ssa_names.
24159         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
24160         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
24161
24162 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
24163
24164         PR inline-asm/39543
24165         * fwprop.c (forward_propagate_asm): New function.
24166         (forward_propagate_and_simplify): Propagate also into __asm, if it
24167         doesn't increase the number of referenced registers.
24168
24169         PR c/39889
24170         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
24171
24172 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
24173
24174         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
24175         note_nonlocal_vla_type for nonlocal VLAs.
24176         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
24177         contains_remapped_vars, remap_vla_decls): New functions.
24178         (convert_nonlocal_reference_stmt): If not optimizing, call
24179         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
24180         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
24181         if it wasn't found in var_map.
24182         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
24183         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
24184         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
24185         declare_vars.
24186         * gimplify.c (nonlocal_vlas): New variable.
24187         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
24188         referenced VLAs.
24189         (gimplify_body): Create and destroy nonlocal_vlas.
24190
24191         * dwarf2out.c (loc_descr_plus_const): New function.
24192         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
24193         mem_loc_descriptor, loc_descriptor_from_tree_1,
24194         descr_info_loc, gen_variable_die): Use it.
24195
24196         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
24197         !TREE_STATIC VAR_DECLs.
24198         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
24199         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
24200         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
24201         DECL_BY_REFERENCE is valid.
24202         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
24203         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
24204         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
24205         Copy DECL_BY_REFERENCE.
24206         (struct nesting_copy_body_data): New type.
24207         (nesting_copy_decl): New function.
24208         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
24209         if they have variable length.
24210
24211 2009-04-26  Michael Matz  <matz@suse.de>
24212
24213         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
24214         mark new temporaries for renaming.
24215
24216 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
24217
24218         PR c/39581
24219         * c-decl.c (global_bindings_p): Return negative value.
24220         (c_variable_size): New.  Based on variable_size from
24221         stor-layout.c.
24222         (grokdeclarator): Call c_variable_size not variable_size.
24223
24224 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
24225
24226         * config/i386/i386.c (print_operand) ['z']: Fix typo.
24227
24228 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
24229
24230         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
24231         Redefine it to just use mingw/include.
24232         (ASM_SPEC): Rules for -m32 and -m64.
24233         (LINK_SPEC): Use Likewise.
24234         (SPEC_32): New define.
24235         (SPEC_64): Likewise.
24236         (SUB_LINK_SPEC): Likewise.
24237         (MULTILIB_DEFAULTS): New define.
24238         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
24239         Add multilib options.
24240         (MULTILIB_DIRNAMES): Likewise.
24241         (MULTILIB_OSDIRNAMES): Likewise.
24242         (LIBGCC): Likewise.
24243         (INSTALL_LIBGCC): Likewise.
24244
24245 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
24246
24247         PR c/39556
24248         * c-tree.h (enum c_inline_static_type): New.
24249         (record_inline_static): Declare.
24250         * c-decl.c (struct c_inline_static, c_inline_statics,
24251         record_inline_static, check_inline_statics): New.
24252         (pop_file_scope): Call check_inline_statics.
24253         (start_decl): Call record_inline_static instead of pedwarning
24254         directly for static in inline function.
24255         * c-typeck.c (build_external_ref): Call record_inline_static
24256         instead of pedwarning directly for static referenced in inline
24257         function.
24258
24259 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
24260
24261         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
24262         not new but only being rescanned.
24263         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
24264         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
24265         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
24266         record_set_info, compute_set, grealloc): Remove.
24267         (recompute_all_luids): New function.
24268         (gcse_main): Don't compute sets, and don't do related memory
24269         allocations/free-ing.  If something changed before the end of the
24270         pass, update LUIDs using recompute_all_luids.
24271         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
24272         (free_gcse_mem): Don't free it either.
24273         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
24274         Use the df insn LUIDs.
24275         (load_killed_in_block): Likewise.
24276         (compute_hash_table_work): Don't compute reg_set_in_block.
24277         (compute_transp): Use DF_REG_DEF_CHAINs.
24278         (local_cprop_pass): Don't use compute_sets and related functions.
24279         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
24280         Use get_max_uid() instead of max_cuid.
24281         (insert_insn_end_basic_block, pre_insert_copy_insn,
24282         update_ld_motion_stores): Don't try to
24283         keep reg_set tables up to date.
24284         (pre_insert_copies): Use df insn LUIDs.
24285         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
24286         (reg_set_info): Don't use extra bitmap argument.
24287         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
24288         information to compute regs_set_in_block.
24289         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
24290         (bypass_jumps): Don't use compute_sets and friends.
24291
24292 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24293
24294         PR testsuite/39710
24295         * opts.c (undocumented_msg): Do not leave blank even with
24296         ENABLE_CHECKING.
24297
24298 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24299
24300         * c-decl.c (build_enumerator): Allow values folding to integer
24301         constants but not integer constant expressions with a pedwarn if
24302         pedantic.
24303
24304 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24305
24306         PR c/39582
24307         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
24308         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
24309         type is an integer constant.
24310
24311 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
24312
24313         PR target/39897
24314         * config/i386/i386.c (print_operand) ['z']: Revert handling of
24315         HImode operands.
24316
24317 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24318
24319         PR c/39564
24320         * c-decl.c (grokdeclarator): Diagnose declarations of functions
24321         with variably modified return type and no storage class
24322         specifiers, except for the case of nested functions.  Distinguish
24323         extern declarations of functions with variably modified return
24324         types from those of objects with variably modified types.
24325
24326 2009-04-25  Jan Hubicka  <jh@suse.cz>
24327
24328         * tree.c (list_equal_p): New function.
24329         * tree.h (list_equal_p): Declare.
24330         * coretypes.h (edge_def, edge, const_edge, basic_block_def
24331         basic_block_def, basic_block, const_basic_block): New.
24332         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
24333         (redirect_eh_edge): New function.
24334         (make_eh_edge_update_phi): EH edges are not abnormal.
24335         * except.c: Include tree-flow.h.
24336         (list_match): New function.
24337         (eh_region_replaceable_by_p): New function.
24338         (replace_region): New function.
24339         (hash_type_list): New function.
24340         (hash_eh_region): New function.
24341         (eh_regions_equal_p): New function.
24342         (merge_peers): New function.
24343         (remove_unreachable_regions): Verify EH tree when checking;
24344         merge peers.
24345         (copy_eh_region_1): New function.
24346         (copy_eh_region): New function.
24347         (push_reachable_handler): New function.
24348         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
24349         regions without label but with live RESX.
24350         * except.h (redirect_eh_edge_to_label): New.
24351         * tree-flow.h (redirect_eh_edge): New.
24352         * coretypes.h (edge_def, edge, const_edge, basic_block_def
24353         basic_block_def, basic_block, const_basic_block): Remove.
24354         * Makefile.in (except.o): Add dependency on tree-flow.h
24355         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
24356         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
24357         Remove.
24358
24359 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
24360
24361         PR bootstrap/39645
24362         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
24363         on the destination of memcpy.
24364
24365 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
24366
24367         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
24368         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
24369         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
24370
24371 2009-04-25  Jan Hubicka  <jh@suse.cz>
24372
24373         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
24374         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
24375         to be reached by different label than left.
24376         (update_eh_edges): Update comment; remove edge_to_remove if possible
24377         and return true if suceeded.
24378         (cleanup_empty_eh): Accept sharing map; handle shared regions.
24379         (cleanup_eh): Compute sharing map.
24380         * except.c (remove_eh_handler_and_replace): Add argument if we should
24381         update regions.
24382         (remove_unreachable_regions): Update for label sharing.
24383         (label_to_region_map): Likewise.
24384         (get_next_region_sharing_label): New function.
24385         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
24386         prev_try pointers.
24387         (remove_eh_handler): Update.
24388         (remove_eh_region_and_replace_by_outer_of): New function.
24389         * except.h (struct eh_region): Add next_region_sharing_label.
24390         (remove_eh_region_and_replace_by_outer_of,
24391         get_next_region_sharing_label): Declare.
24392         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
24393
24394 2009-04-25  Jan Hubicka  <jh@suse.cz>
24395
24396         * tree-cfg.c (split_critical_edges): Split also edges where we can't
24397         insert code even if they are not critical.
24398
24399 2009-04-25  Jan Hubicka  <jh@suse.cz>
24400
24401         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
24402         (gimple_can_remove_branch_p): EH edges won't remove branch by
24403         redirection.
24404         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
24405         updating of non-abnormal EH edges.
24406         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
24407         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
24408         (split_critical_edges): Split also edges where emitting code on them
24409         will lead to splitting later.
24410
24411 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
24412             H.J. Lu  <hongjiu.lu@intel.com>
24413
24414         PR target/39590
24415         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
24416         the configured assembler supports fildq and fistpq mnemonics.
24417         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
24418         * configure: Regenerated.
24419         * config.in: Ditto.
24420
24421         * config/i386/i386.c (print_operand): Handle 'Z'.
24422         ['z']: Remove handling of special fild/fist suffixes.
24423         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
24424         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
24425         suffix of fild insn.
24426         (*floatsi<mode>2_vector_mixed): Ditto.
24427         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
24428         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
24429         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
24430         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
24431         * config/i386/gas.h (GAS_MNEMONICS): Remove.
24432
24433 2009-04-25  Ben Elliston  <bje@au.ibm.com>
24434
24435         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
24436         the source of a set operation.
24437
24438 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
24439
24440         * target.h (struct gcc_target): Add case_values_threshold field.
24441         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
24442         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
24443         * targhooks.c (default_case_values_threshold): New function.
24444         * targhooks.h (default_case_values_threshold): Declare function.
24445         * stmt.c (expand_case): Use case_values_threshold target hook.
24446         * expr.h (case_values_threshold): Remove declartation.
24447         * expr.c (case_values_threshold): Remove function.
24448         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
24449
24450         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
24451         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
24452         (avr_case_values_threshold): Declare as static.
24453         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
24454
24455         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
24456         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
24457         (mn10300_case_values_threshold): New function.
24458
24459 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
24460
24461         * ira.c (setup_cover_and_important_classes): Add enum cast.
24462
24463 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
24464
24465         * genpreds.c (write_enum_constraint_num): Output definition of
24466         CONSTRAINT_NUM_DEFINED_P macro.
24467         * ira.c (setup_cover_and_important_classes): Use
24468         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
24469
24470 2009-04-24  DJ Delorie  <dj@redhat.com>
24471
24472         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
24473         __SH2A_SINGLE_ONLY__ also.
24474
24475 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
24476
24477         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
24478         (movdf_internal): Ditto.
24479         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
24480         SFmode and DFmode constants.
24481         (ia64_print_operand): Add 'G' format for printing
24482         floating point constants.
24483
24484 2009-04-24  Richard Guenther  <rguenther@suse.de>
24485
24486         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
24487         from unsigned additions.
24488
24489 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
24490
24491         * c-typeck.c (set_init_index): Allow array designators that are
24492         not integer constant expressions with a pedwarn if pedantic.
24493
24494 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
24495
24496         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
24497         zero if no overlap in nonzero bits between the operands.
24498
24499 2009-04-24  Ian Lance Taylor  <iant@google.com>
24500
24501         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
24502         (record_dead_and_set_regs): Likewise.
24503         * df.h (struct df_mw_hardreg): Change flags field to int.
24504         (struct df_base_ref): Likewise.
24505         (struct df): Change changeable_flags field to int.
24506         * df-scan.c (df_defs_record): Change clobber_flags to int.
24507         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
24508         constants rather than #define macros.
24509         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
24510         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
24511         (enum dwarf_calling_convention): Likewise.
24512         (enum dwarf_line_number_x_ops): Likewise.
24513         (enum dwarf_call_frame_info): Likewise.
24514         (enum dwarf_source_language): Likewise.
24515         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
24516         (add_calling_convention_attribute): Likewise.
24517         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
24518         (combine_comparisons): Change compcode to int.  Add cast to enum type.
24519         * genrecog.c (maybe_both_true_2): Change c to int.
24520         (write_switch): Likewise.  Add cast to enum type.
24521         * gimplify.c (gimplify_omp_for): Handle return values from
24522         gimplify_expr using MIN rather than bitwise or.
24523         (gimplify_expr): Add cast to enum type.
24524         * ipa-prop.c (update_jump_functions_after_inlining): Change
24525         IPA_BOTTOM to IPA_JF_UNKNOWN.
24526         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
24527         Add casts to enum type.
24528         (setup_cover_and_important_classes): Change cl to int.  Add casts
24529         to enum type.
24530         (setup_class_translate): Change cl and mode to int.
24531         (ira_init_once): Change mode to int.
24532         (free_register_move_costs): Likewise.
24533         (setup_prohibited_mode_move_regs): Add casts to enum type.
24534         * langhooks.c (add_builtin_function_common): Rework assertion that
24535         value fits bitfield.
24536         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
24537         * omega.c (omega_do_elimination): Avoid math on enum types.
24538         * optabs.c (expand_vec_shift_expr): Remove casts to int.
24539         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
24540         int local to handle integral_argment value.
24541         * regmove.c (try_auto_increment): Change PUT_MODE to
24542         PUT_REG_NOTE_KIND.
24543         * reload.c (push_secondary_reload): Add casts to enum type.
24544         (secondary_reload_class, find_valid_class): Likewise.
24545         * reload1.c (emit_input_reload_insns): Likewise.
24546         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
24547         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
24548         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
24549         constant.
24550         * tree.c (build_common_builtin_nodes): Add casts to enum type.
24551         * tree-complex.c (complex_lattice_t): Typedef to int rather than
24552         enum type.
24553         (expand_complex_libcall): Add casts to enum type.
24554         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
24555         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
24556         with ERROR_MARK, not NUM_TREE_CODES.
24557         (vect_create_epilog_for_reduction): Likewise.
24558         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
24559         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
24560         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
24561         enum machine_mode.
24562         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
24563         vect_unused_in_loop.  Change 0 to loop_vect.
24564         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
24565         * var-tracking.c (get_init_value): Change return type to enum
24566         var_init_status.
24567         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
24568         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
24569         arm_fp_model.
24570         (arm_override_options): Add casts to enum type.
24571         (arm_emit_tls_decoration): Likewise.
24572         * config/i386/i386.c (ix86_function_specific_restore): Add casts
24573         to enum type.
24574         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
24575         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
24576         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
24577         enum type.
24578         * config/s390/s390.c (code_for_builtin_64): Change to array of
24579         enum insn_code.
24580         (code_for_builtin_31): Likewise.
24581         (s390_expand_builtin): Change code_for_builtin to enum insn_code
24582         const *.
24583         * config/sparc/sparc.c (sparc_override_options): Change value
24584         field in struct code_model to enum cmodel.  In initializer change
24585         0 to NULL and add cast to enum type.
24586
24587         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
24588         Change all callers.  Issue a -Wc++-compat warning using
24589         lhs_origtype if necessary.
24590         (convert_for_assignment): Issue -Wc++-compat warnings about
24591         invalid conversions to enum type on assignment.
24592         * c-common.h (build_modify_expr): Update declaration.
24593
24594 2009-04-24  Nick Clifton  <nickc@redhat.com>
24595
24596         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
24597         (function_arg_advance): Likewise.
24598         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
24599         5th alternative.
24600
24601 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
24602
24603         * config/s390/constraints.md ('I', 'J'): Fix condition.
24604
24605 2009-04-24  Diego Novillo  <dnovillo@google.com>
24606
24607         * gengtype-parse.c (parse_error): Add newline after message.
24608
24609 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
24610
24611         * config/i386/sse.md (avxmodesuffixs): Removed.
24612         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
24613         (*avx_pinsr<ssevecsize>): This.
24614
24615 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
24616
24617         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
24618         follow chains of regs with a single definition, and allow expressions
24619         that are function_invariant_p.
24620         (simple_rhs_p): Allow expressions that are function_invariant_p.
24621
24622 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
24623
24624         PR middle-end/39867
24625         * fold-const.c (fold_cond_expr_with_comparison): When folding
24626         > and >= to MAX, make sure the MAX uses the same type as the
24627         comparison's operands.
24628
24629 2009-04-24  Nick Clifton  <nickc@redhat.com>
24630
24631         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
24632         addressing for DImode accesses.
24633         (frv_print_operand_address): Handle PLUS case.
24634         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
24635
24636 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
24637
24638         PR rtl-optimization/39794
24639         * alias.c (canon_true_dependence): Add x_addr argument.
24640         * rtl.h (canon_true_dependence): Adjust prototype.
24641         * cse.c (check_dependence): Adjust canon_true_dependence callers.
24642         * cselib.c (cselib_invalidate_mem): Likewise.
24643         * gcse.c (compute_transp): Likewise.
24644         * dse.c (scan_reads_nospill): Likewise.
24645         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
24646         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
24647         canon_base_addr of the group, plus optional offset.
24648         (struct group_info): Rename canon_base_mem to
24649         canon_base_addr.
24650         (get_group_info): Set canon_base_addr to canon_rtx of base, not
24651         canon_rtx of base_mem.
24652
24653 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
24654
24655         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
24656         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
24657
24658 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24659
24660         * config/spu/spu-builtins.h: Delete file.
24661
24662         * config/spu/spu.h (enum spu_builtin_type): Move here from
24663         spu-builtins.h.
24664         (struct spu_builtin_description): Likewise.  Add GTY marker.
24665         Do not use enum spu_function_code or enum insn_code.
24666         (spu_builtins): Add extern declaration.
24667
24668         * config/spu/spu.c: Do not include "spu-builtins.h".
24669         (enum spu_function_code, enum spu_builtin_type_index,
24670         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
24671         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
24672         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
24673         unsigned_V2DI_type_node): Move here from spu-builtins.h.
24674         (spu_builtin_types): Make static.  Add GTY marker.
24675         (spu_builtins): Add extern declaration with GTY marker.
24676         Include "gt-spu.h".
24677
24678         * config/spu/spu-c.c: Do not include "spu-builtins.h".
24679         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
24680         Check programmatically whether all parameters are scalar.
24681
24682         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
24683
24684 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
24685
24686         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
24687         assignment from the constructor either if the target is volatile.
24688
24689 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
24690
24691         * config/arm/arm.md (insv): Do not share operands[0].
24692
24693 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
24694
24695         * config/vxlib-tls.c (active_tls_threads): Delete.
24696         (delete_hook_installed): New.
24697         (tls_delete_hook): Don't delete the delete hook.
24698         (tls_destructor): Delete it here.
24699         (__gthread_set_specific): Adjust installing the delete hook.
24700         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
24701         __gthread_leave_tsd_dtor_context.
24702
24703 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
24704
24705         * c-format.c (gcc_tdiag_char_table): Add support for %E.
24706
24707 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
24708
24709         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
24710         enum type.
24711         (alpha_rtx_costs): Ditto.
24712         (emit_unlikely_jump): Use add_reg_note.
24713         (emit_frame_store_1): Ditto.
24714         (alpha_expand_prologue): Ditto.
24715         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24716         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
24717
24718 2009-04-23  Nick Clifton  <nickc@redhat.com>
24719
24720         * config/v850/v850.md (epilogue): Remove suppressed code.
24721         (return): Rename to return_simple and remove test of frame size.
24722         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
24723         to gen_return_simple.
24724
24725 2009-04-22  Jing Yu  <jingyu@google.com>
24726
24727         PR testsuite/39781
24728         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
24729
24730 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24731
24732         PR C/31499
24733         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
24734         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
24735         value is a VECTOR_CST, the element type is the element type of the
24736         vector.
24737
24738 2009-04-22  DJ Delorie  <dj@redhat.com>
24739
24740         * config/m32c/m32c.h: Update GTY annotations to new syntax.
24741
24742 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
24743
24744         * alias.c (find_base_term): Move around LO_SUM case, so that
24745         CONST falls through into PLUS/MINUS handling.
24746
24747         PR c/39855
24748         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
24749         into 0, use omit_one_operand.
24750
24751 2009-04-23  Ben Elliston  <bje@au.ibm.com>
24752
24753         * config/rs6000/linux-unwind.h (get_regs): Remove type
24754         puns. Change the type of `pc' to an array of unsigned ints and
24755         update all users.  Constify frame24.
24756
24757 2009-04-22  DJ Delorie  <dj@redhat.com>
24758
24759         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
24760         declarations before code.
24761         (current_function_special_page_vector): Likewise.
24762         (m32c_expand_insv): Silence a warning.
24763
24764 2009-04-21  Taras Glek  <tglek@mozilla.com>
24765
24766         * alias.c: Update GTY annotations to new syntax.
24767         * basic-block.h: Likewise.
24768         * bitmap.h: Likewise.
24769         * c-common.h: Likewise.
24770         * c-decl.c: Likewise.
24771         * c-parser.c: Likewise.
24772         * c-pragma.c: Likewise.
24773         * c-tree.h: Likewise.
24774         * cfgloop.h: Likewise.
24775         * cgraph.h: Likewise.
24776         * config/alpha/alpha.c: Likewise.
24777         * config/arm/arm.h: Likewise.
24778         * config/avr/avr.h: Likewise.
24779         * config/bfin/bfin.c: Likewise.
24780         * config/cris/cris.c: Likewise.
24781         * config/darwin.c: Likewise.
24782         * config/frv/frv.c: Likewise.
24783         * config/i386/i386.c: Likewise.
24784         * config/i386/i386.h: Likewise.
24785         * config/i386/winnt.c: Likewise.
24786         * config/ia64/ia64.h: Likewise.
24787         * config/iq2000/iq2000.c: Likewise.
24788         * config/mips/mips.c: Likewise.
24789         * config/mmix/mmix.h: Likewise.
24790         * config/pa/pa.c: Likewise.
24791         * config/pa/pa.h: Likewise.
24792         * config/rs6000/rs6000.c: Likewise.
24793         * config/s390/s390.c: Likewise.
24794         * config/sparc/sparc.c: Likewise.
24795         * config/xtensa/xtensa.c: Likewise.
24796         * cselib.h: Likewise.
24797         * dbxout.c: Likewise.
24798         * dwarf2out.c: Likewise.
24799         * except.c: Likewise.
24800         * except.h: Likewise.
24801         * fixed-value.h: Likewise.
24802         * function.c: Likewise.
24803         * function.h: Likewise.
24804         * gimple.h: Likewise.
24805         * integrate.c: Likewise.
24806         * optabs.c: Likewise.
24807         * output.h: Likewise.
24808         * real.h: Likewise.
24809         * rtl.h: Likewise.
24810         * stringpool.c: Likewise.
24811         * tree-data-ref.c: Likewise.
24812         * tree-flow.h: Likewise.
24813         * tree-scalar-evolution.c: Likewise.
24814         * tree-ssa-address.c: Likewise.
24815         * tree-ssa-alias.h: Likewise.
24816         * tree-ssa-operands.h: Likewise.
24817         * tree.c: Likewise.
24818         * tree.h: Likewise.
24819         * varasm.c: Likewise.
24820         * varray.h: Likewise.
24821         * vec.h: Likewise.
24822         * coretypes.h: Do not define GTY macro if it is already defined.
24823         * doc/gty.texi: Update GTY documentation to new syntax.
24824         * gengtype-lex.l: Enforce attribute-like syntax for GTY
24825         annotations on structs.
24826         * gengtype-parse.c: Likewise.
24827
24828 2009-04-22  Mark Heffernan  <meheff@google.com>
24829
24830         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
24831
24832 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
24833
24834         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
24835         where appropriate.
24836
24837 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
24838
24839         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
24840         the same as a PLUS without a shift.  Increase the cost of a
24841         CONST_INT in MULT.
24842
24843 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24844
24845         * Makefile.in: Update dependencies.
24846         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
24847         * errors.h: Remove bogus comment about compatibility.
24848         (warning): Update declaration.
24849         * genautomata.c: Update all calls to warning.
24850         * gimple.c: Do not include errors.h. Include toplev.h.
24851         * tree-ssa-structalias.c: Do not include errors.h.
24852         * omega.c: Likewise.
24853         * tree-ssa-reassoc.c: Likewise.
24854         * config/spu/spu-c.c: Likewise.
24855         * config/spu/t-spu-elf: Update dependencies.
24856
24857 2009-04-22  Richard Guenther  <rguenther@suse.de>
24858
24859         PR tree-optimization/39824
24860         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
24861         make sure the types are compatible.
24862
24863 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24864
24865         PR c++/14875
24866         * c-common.c (c_parse_error): Take a token_flags parameter.
24867         Use token_type for the token type instead.
24868         Pass token_flags to cpp_type2name.
24869         * c-common.h (c_parse_error): Update declaration.
24870         * c-parser.c (c_parser_error): Pass 0 as token flags.
24871
24872 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
24873
24874         PR rtl-optimization/39580
24875         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
24876
24877 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24878
24879         * function.c (expand_function_end): Do not emit a jump to the "naked"
24880         return label for fall-through returns.
24881         * except.c (sjlj_emit_function_exit): Always place the call to the
24882         unregister function at the location installed by expand_function_end.
24883
24884 2009-04-22  Richard Guenther  <rguenther@suse.de>
24885
24886         PR tree-optimization/39845
24887         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
24888         (gen_inbound_check): Likewise.
24889
24890 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
24891
24892         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
24893         padding for PPC.
24894         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
24895         * config/vxlib.c (__gthread_once): Add race guard for PPC.
24896
24897 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24898
24899         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
24900         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
24901         shift counts to avoid out-of-bounds array accesses.
24902
24903 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24904
24905         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
24906         (Pmode): Move above.
24907
24908 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
24909
24910         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
24911         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
24912         GET_CODE macro.  Use IN_RANGE macro where appropriate.
24913         * config/alpha/alpha.h: Ditto.
24914         * config/alpha/alpha.md: Ditto.
24915         * config/alpha/constraints.md: Ditto.
24916         * config/alpha/predicates.md: Ditto.
24917
24918 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24919
24920         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
24921         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24922         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24923         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24924         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24925         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24926         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24927         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24928         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24929         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24930         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24931         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24932         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24933         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24934         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24935         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24936         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24937         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24938         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24939         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24940         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24941         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24942         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24943         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24944         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24945         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24946         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24947
24948 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
24949
24950         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
24951         references from comments.
24952         * cfgbuild.c (count_basic_blocks): Delete.
24953         (find_basic_blocks_1): Delete.
24954         (find_basic_blocks): Delete.
24955         * except.c (finish_eh_generation): Make static.  Move comment from
24956         except.h here.  Remove find_basic_blocks references from comments.
24957         * except.h (finish_eh_generation): Delete.
24958         * basic-block.h (find_basic_blocks): Delete.
24959         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
24960
24961 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
24962
24963         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
24964         (sdbout_parms):  Likewise.
24965
24966 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
24967
24968         * config/sh/sh.c (prepare_cbranch_operands): Use
24969         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
24970         (expand_cbranchdi4): Likewise.
24971         (from_compare): Add cast to enum type.
24972         (expand_cbranchsi4): Use add_reg_note.
24973         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
24974         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
24975         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
24976         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24977         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
24978         instead of CODE_FOR_nothing.
24979         (cbranchdi4): Likewise.  Fix the order of arguments for
24980         gen_rtx_fmt_ee.
24981         (push_fpscr): Use add_reg_note.
24982         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
24983         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
24984
24985 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
24986
24987         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
24988         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
24989         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
24990         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
24991         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
24992         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
24993         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
24994         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
24995         config/alpha/x-vms, config/arc/t-arc,
24996         config/arm/README-interworking, config/arm/arm-c.c,
24997         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
24998         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
24999         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
25000         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
25001         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
25002         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
25003         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
25004         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
25005         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
25006         config/cris/t-elfmulti, config/crx/t-crx,
25007         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
25008         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
25009         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
25010         config/h8300/t-h8300, config/i386/athlon.md,
25011         config/i386/darwin-libgcc.10.4.ver,
25012         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
25013         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
25014         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
25015         config/i386/t-linux64, config/i386/t-nwld,
25016         config/i386/t-rtems-i386, config/i386/t-sol2-10,
25017         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
25018         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
25019         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
25020         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
25021         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
25022         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
25023         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
25024         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
25025         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
25026         config/m68k/t-uclinux, config/mcore/t-mcore,
25027         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
25028         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
25029         config/mips/crtn.asm, config/mips/irix-crti.asm,
25030         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
25031         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
25032         config/mips/mips-fixed.md, config/mips/sb1.md,
25033         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
25034         config/mips/t-iris6, config/mips/t-isa3264,
25035         config/mips/t-libgcc-mips16, config/mips/t-linux64,
25036         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
25037         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
25038         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
25039         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
25040         config/mn10300/t-linux, config/mn10300/t-mn10300,
25041         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
25042         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
25043         config/picochip/libgccExtras/clzsi2.asm,
25044         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
25045         config/rs6000/darwin-libgcc.10.4.ver,
25046         config/rs6000/darwin-libgcc.10.5.ver,
25047         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
25048         config/rs6000/t-aix43, config/rs6000/t-aix52,
25049         config/rs6000/t-darwin, config/rs6000/t-fprules,
25050         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
25051         config/rs6000/t-lynx, config/rs6000/t-netbsd,
25052         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
25053         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
25054         config/rs6000/t-rtems, config/rs6000/t-spe,
25055         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
25056         config/score/t-score-elf, config/sh/divcost-analysis,
25057         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
25058         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
25059         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
25060         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
25061         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
25062         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
25063         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
25064         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
25065         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
25066         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
25067         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
25068         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
25069         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
25070         limitx.h, version.c, xcoff.h: Add copyright and license notices.
25071         * config/h8300/genmova.sh: Include copyright and license notices
25072         in generated output.
25073         * config/h8300/mova.md: Regenerate.
25074         * doc/install.texi2html: Include word "Copyright" in copyright
25075         notice and use name "Free Software Foundation, Inc.".
25076         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
25077         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
25078         ChangeLog-2007, ChangeLog-2008: Correct dates.
25079
25080 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
25081
25082         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
25083         NE_EXPR operations as well.
25084         * c-parser.c (c_parser_condition): Do not set location information on
25085         the condition.
25086         (c_parser_conditional_expression): Likewise.
25087         (c_parser_binary_expression): Set location information on operators.
25088         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
25089         TRUTH_NOT_EXPR has been folded.
25090         * fold-const.c (fold_truth_not_expr): Copy location information from
25091         the incoming expression to the outgoing one.
25092         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
25093         recursive calls on the LHS of the operator but pass that of the
25094         operator to recursive calls on the RHS of the operator.  Set it
25095         on the COND_EXPR.
25096         (shortcut_cond_expr): Set the locus of the operator on the second
25097         COND_EXPR and that of the expression on the first in degenerate cases.
25098         Pass the locus of the expression to calls to shortcut_cond_r.
25099         Set the locus of the 'then' block on the associated jump, if any.
25100         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
25101         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
25102         expression to call to gimplify_boolean_expr.
25103
25104 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
25105
25106         * config.gcc: Add additional configuration for
25107         i686-w64-mingw* and x86_64-w64-mingw* triplet.
25108         * config/i386/mingw-w64.h: New mingw-w64 specific header.
25109         (CPP_SPEC): Redefine for allowing -municode option.
25110         (STARTFILE_SPEC): Likewise.
25111         * config/i386/t-mingw-w64: New.
25112         * config/i386/mingw-w64.opt: New.
25113         (municode): Add new target option.
25114         * doc/invoke.texi (municode): Add documentation for new option.
25115
25116 2009-04-21  Ian Lance Taylor  <iant@google.com>
25117
25118         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
25119         Correct test for number of arguments.
25120         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
25121
25122 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
25123
25124         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
25125         argument of emit_library_call.
25126
25127 2009-04-21  Richard Guenther  <rguenther@suse.de>
25128
25129         PR middle-end/39829
25130         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
25131         inside VIEW_CONVERT_EXPRs.
25132
25133 2009-04-21  Martin Jambor  <mjambor@suse.cz>
25134
25135         * tree-switch-conversion.c (build_constructors): Split a long line.
25136         (constructor_contains_same_values_p): New function.
25137         (build_one_array): Create assigns of constants if possible, do not
25138         call mark_sym_for_renaming, call update_stmt.
25139         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
25140         make_rename_temp.  Do not call mark_symbols_for_renaming, call
25141         update_stmt.
25142         (gen_def_assigns): Do not call mark_symbols_for_renaming or
25143         find_new_referenced_vars, call update_stmt.
25144         (gen_inbound_check): Use create_tmp_var and create ssa names manually
25145         instead of calling make_rename_temp.  Do not call
25146         find_new_referenced_vars or mark_symbols_for_renaming, call
25147         update_stmt.
25148
25149 2009-04-21  Richard Guenther  <rguenther@suse.de>
25150
25151         PR tree-optimization/39827
25152         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
25153         (tree_ssa_phiprop): Pass the correct array size.
25154
25155 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
25156
25157         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
25158
25159 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
25160
25161         PR 16202
25162         * c-typeck.c (lvalue_p): Move declaration ...
25163         * c-common.h (lvalue_p): ... to here.
25164         * c-common.c (candidate_equal_p): New.
25165         (add_tlist): Use it.
25166         (merge_tlist): Use it.
25167         (warn_for_collisions_1): Likewise.
25168         (warning_candidate_p): Accept more candidates.
25169         (verify_tree): A warning candidate can be an expression. Use
25170         candidate_equal_p.
25171
25172 2009-04-21  Ben Elliston  <bje@au.ibm.com>
25173
25174         PR target/5267
25175         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
25176         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
25177         options.  Remove -mcall-solaris documentation.
25178
25179 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25180
25181         PR c++/13358
25182         * doc/invoke.texi (-Wlong-long): Update description.
25183         * c-lex (interpret_integer): Only warn if there was no previous
25184         overflow and -Wlong-long is enabled.
25185         * c-decl.c (declspecs_add_type): Drop redundant flags.
25186         * c.opt (Wlong-long): Init to -1.
25187         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
25188         and front-end warn_long_long. Wlong-long only depends on other
25189         flags if it is uninitialized.
25190         * c-parser.c (disable_extension_diagnostics): warn_long_long is
25191         the same for CPP and FE.
25192         (restore_extension_diagnostics): Likewise.
25193
25194 2009-04-20  Ian Lance Taylor  <iant@google.com>
25195
25196         Fix enum conversions which are invalid in C++:
25197         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
25198         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
25199         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
25200         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
25201         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
25202         (dbxout_parms): Likewise.
25203         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
25204         (df_clear_flags): Likewise.
25205         * df-problems.c (df_rd_bb_local_compute_process_def): Change
25206         top_flag parameter to int.
25207         (df_chain_create_bb_process_use): Likewise.
25208         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
25209         Remove cast.
25210         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
25211         (df_ref_create_structure, df_def_record_1): Likewise.
25212         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
25213         (df_notes_rescan): Change 0 to VOIDmode in function call.
25214         (df_get_call_refs, df_insn_refs_collect): Likewise.
25215         (df_bb_regs_collect): Likewise.
25216         (df_entry_block_defs_collect): Likewise.
25217         (df_exit_block_uses_collect): Likewise.
25218         * df.h: Update declarations.
25219         * double-int.c (double_int_divmod): Add cast to enum type.
25220         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
25221         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
25222         (based_loc_descr): Likewise.
25223         (loc_descriptor_from_tree_1): Change first_op and second_op to
25224         enum dwarf_location_atom.  Add cast to enum type.
25225         * expmed.c (init_expmed): Change 0 to SET in function call.
25226         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
25227         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
25228         (do_store_flag): Likewise.
25229         * fixed-value.h (struct fixed_value): Change mode to enum
25230         machine_mode.
25231         * function.c (assign_parms): Change 0 to VOIDmode in function call.
25232         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
25233         function call.
25234         (insert_insn_decl, insert_decl, insert_state): Likewise.
25235         (automata_list_finish): Likewise.
25236         * genrecog.c (process_define_predicate): Add cast to enum type.
25237         * gensupport.c (init_predicate_table): Add cast to enum type.
25238         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
25239         function call.
25240         (gimple_build_call_1, gimple_build_label): Likewise.
25241         (gimple_build_goto, gimple_build_asm_1): Likewise.
25242         (gimple_build_switch_1, gimple_build_cdt): Likewise.
25243         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
25244         (enum fallback): Rename from enum fallback_t.
25245         (fallback_t): Typedef as int.
25246         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
25247         GSI_SAME_STMT in function call.
25248         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
25249         enum type.
25250         (setup_reg_class_relations): Likewise.
25251         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
25252         (setup_prohibited_class_mode_regs): Add cast to enum type.
25253         (setup_prohibited_mode_move_regs): Likewise.
25254         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
25255         (record_address_regs): Change i to enum reg_class.
25256         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
25257         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
25258         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
25259         (GET_MODE_2XWIDER_MODE): Likewise.
25260         (GET_CLASS_NARROWEST_MODE): Likewise.
25261         * omp-low.c (expand_omp_for): Add cast to enum type.
25262         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
25263         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
25264         * postreload.c (reload_cse_simplify_operands): Change rclass local
25265         to enum reg_class.
25266         * predict.c (combine_predictions_for_insn): Change best_predictor
25267         and predictor to enum br_predictor.
25268         (combine_predictions_for_bb): Likewise.
25269         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
25270         use SET_PREDICT_EXPR_OUTCOME.
25271         * real.c (real_arithmetic): Change icode to code in function call.
25272         * reginfo.c (init_move_cost): Add casts to enum type.
25273         (init_reg_sets_1, init_fake_stack_mems): Likewise.
25274         * regmove.c (regclass_compatible_p): Change class0 and class1 to
25275         enum reg_class.
25276         * reload.c (find_valid_class): Add casts to enum type.
25277         (push_reload): Change 0 to NO_REGS in function call.
25278         (find_reloads): Change this_alternative to array of enum
25279         reg_class.  Remove some now-unnecessary casts.
25280         (make_memloc): Change 0 to VOIDmode in function call.
25281         * reload1.c (reload): Change 0 to VOIDmode in function call.
25282         (eliminate_regs_1, elimination_effects): Likewise.
25283         (eliminate_regs_in_insn): Likewise.
25284         (emit_input_reload_insns): Add cast to enum type.
25285         (delete_output_reload): Change 0 to VOIDmode in function call.
25286         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
25287         to enum type in function call.
25288         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
25289         (SET_PREDICT_EXPR_OUTCOME): Define.
25290         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
25291         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
25292         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
25293         (dump_function): Likewise.
25294         * tree-dump.h: Update declarations.
25295         * tree-pass.h: Update declarations.
25296         * varasm.c (assemble_integer): Change mclass to enum mode_class.
25297         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
25298         enum type.
25299         (arm_rtx_costs_1): Correct parenthesization.
25300         (arm_rtx_costs): Add casts to enum type.
25301         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
25302         (vfp_emit_fstmd): Use add_rg_note.
25303         (emit_multi_reg_push, emit_sfm): Likewise.
25304         (thumb_set_frame_pointer): Likewise.
25305         (arm_expand_prologue): Likewise.
25306         (arm_regno_class): Change return type to enum reg_class.
25307         (thumb1_expand_prologue): Use add_reg_note.
25308         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
25309         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
25310         in function call.
25311         * config/arm/gentune.sh: Add cast to enum type.
25312         * config/arm/arm-tune.md: Rebuild.
25313         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
25314         (ix86_split_fp_branch, predict_jump): Likewise.
25315         (ix86_expand_multi_arg_builtin): Change sub_code from enum
25316         insn_code to enum rtx_code.
25317         (ix86_builtin_vectorized_function): Add cast to enum type.
25318         * config/i386/i386.md (truncdfsf2): Change slot to enum
25319         ix86_stack_slot.
25320         (truncxf<mode>2, isinf<mode>2): Likewise.
25321         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
25322         enum type.
25323         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
25324         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
25325         (insert_bundle_state): Change 1 to INSERT in function call.
25326         (ia64_add_bundle_selector_before): Likewise.
25327         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
25328         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
25329         (restore_stack_nonlocal): Likewise.
25330         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
25331         function call.
25332         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
25333         function call.
25334         (mips_rtx_costs): Likewise.
25335         (mips_override_options): Add casts to enum type.
25336         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
25337         in function call.
25338         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
25339         (store_reg, set_reg_plus_d): Likewise.
25340         (hppa_expand_prologue, hppa_profile_hook): Likewise.
25341         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
25342         cast to enum type.
25343         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
25344         function call.
25345         (emit_unlikely_jump): Use add_reg_note.
25346         (rs6000_emit_allocate_stack): Likewise.
25347         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
25348         (output_toc): Change 1 to INSERT in function call.
25349         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
25350         (rs6000_initialize_trampoline): Likewise.
25351         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
25352         function call.
25353         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
25354         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
25355         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
25356         (save_gprs): Use add_reg_note.
25357         (s390_emit_prologue): Likewise.
25358         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25359         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
25360         (sparc_fold_builtin): Add cast to enum type.
25361         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
25362         enum insn_code.
25363         (spu_expand_prologue): Use add_reg_note.
25364         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
25365
25366 2009-04-20  Ian Lance Taylor  <iant@google.com>
25367
25368         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
25369         (c_parser_postfix_expression_after_primary): Get VEC for list of
25370         arguments.  Get original types of arguments.  Call
25371         build_function_call_vec.
25372         (cached_expr_list_1, cached_expr_list_2): New static variables.
25373         (c_parser_expr_list): Change return type to VEC *.  Add
25374         p_orig_types parameter.  Change all callers.
25375         (c_parser_release_expr): New static function.
25376         (c_parser_vec_to_tree_list): New static function.
25377         * c-typeck.c (build_function_call): Rewrite to build a VEC and
25378         call build_function_call_vec.
25379         (build_function_call_vec): New function, based on old
25380         build_function_call.
25381         (convert_arguments): Remove nargs and argarray parameters.  Change
25382         values to a VEC.  Add origtypes parameter.
25383         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
25384         (convert_for_assignment): Add origtype parameter.  Change all
25385         callers.  If warn_cxx_compat, check for conversion to an enum
25386         type when calling a function.
25387         (store_init_value): Add origtype parameter.  Change all callers.
25388         (digest_init): Likewise.
25389         (struct init_node): Add origtype field.
25390         (add_pending_init): Add origtype parameter.  Change all callers.
25391         (output_init_element): Likewise.
25392         (output_pending_init_elements): Pass origtype from init_node to
25393         output_init_element.
25394         (process_init_element): Pass origtype from c_expr to
25395         output_init_element.
25396         (c_finish_return): Add origtype parameter.  Change all callers.
25397         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
25398         caller.
25399         (sync_resolve_params): Likewise.
25400         (sync_resolve_return): Change params to first_param.  Change caller.
25401         (resolve_overloaded_builtins): Change params to VEC *.  Change
25402         callers.  Save first parameter around call to build_function_call_vec.
25403         * c-decl.c (finish_decl): Add origtype parameter.  Change all
25404         callers.  Call build_function_call_vec rather than
25405         build_function_call for cleanup.
25406         * c-tree.h: Update declarations.
25407         * c-common.h: Update declarations.
25408         * stub-objc.c (objc_rewrite_function_call): Change parameter from
25409         params to first_param.
25410         * target.h (struct gcc_target): Change resolve_overloaded_builtin
25411         params parameter from tree to void *.
25412         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
25413         Change arglist parameter to have type void *, and to be a pointer
25414         to a VEC.
25415         * config/rs6000/rs6000-protos.h
25416         (altivec_resolve_overloaded_builtin): Update declaration.
25417         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
25418         fnargs parameter to have type void *, and to be a pointer to a
25419         VEC.  Call build_function_call_vec instead of
25420         build_function_call.
25421         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
25422
25423 2009-04-20  Joey Ye  <joey.ye@intel.com>
25424             Xuepeng Guo  <xuepeng.guo@intel.com>
25425             H.J. Lu  <hongjiu.lu@intel.com>
25426
25427         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
25428
25429         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
25430         (IX86_LEA_PRIORITY): Likewise.
25431         (distance_non_agu_define): New function.
25432         (distance_agu_use): Likewise.
25433         (ix86_lea_for_add_ok): Likewise.
25434         (ix86_dep_by_shift_count): Likewise.
25435
25436         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
25437         should split for LEA.
25438
25439         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
25440         function.
25441         (ix86_dep_by_shift_count): Likewise.
25442
25443 2009-04-20  Richard Guenther  <rguenther@suse.de>
25444
25445         * expr.c (handled_component_p): Move ...
25446         * tree.h (handled_component_p): ... here.
25447         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
25448         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
25449         and REALPART_EXPR to be in one group.
25450
25451 2009-04-20  Richard Guenther  <rguenther@suse.de>
25452
25453         * basic-block.h (get_all_dominated_blocks): Declare.
25454         * dominance.c (get_all_dominated_blocks): New function.
25455         * tree-cfg.c (get_all_dominated_blocks): Remove.
25456         (remove_edge_and_dominated_blocks): Adjust.
25457         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
25458         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
25459         instead of recursing.
25460
25461 2009-04-20  Doug Kwan  <dougkwan@google.com>
25462
25463         * cgraph.h (cgraph_node_ptr): New type for vector functions.
25464         (struct cgraph_node_set_def): New type.
25465         (cgraph_node_set) New type. Also declare vector functions.
25466         (struct cgraph_node_set_element_def): New type.
25467         (cgraph_node_set_element): Ditto.
25468         (cgraph_node_set_iterator): New iterator type.
25469         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
25470         cgraph_node_set_remove, dump_cgraph_node_set,
25471         debug_cgraph_node_set): New prototypes.
25472         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
25473         cgraph_node_set_size): New inlines.
25474         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
25475         including cgraph.h.
25476         (struct ipa_opt_pass): Add struct cgraph_node_set_def
25477         argument to function 'write_summary'.
25478         * ipa.c: Include ggc.h.
25479         (hash_cgraph_node_set_element,
25480         eq_cgraph_node_set_element, cgraph_node_set_new,
25481         cgraph_node_set_add, cgraph_node_set_remove,
25482         cgraph_node_set_find, dump_cgraph_node_set,
25483         debug_cgraph_node_set): New functions.
25484         * Makefile.in (ipa.o): Add dependency on GGC_H.
25485
25486 2009-04-20  Ira Rosen  <irar@il.ibm.com>
25487
25488         PR tree-optimization/39675
25489         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
25490         check of the return code of vect_schedule_slp. Check that
25491         stmt_vec_info still exists for the statement, before checking its
25492         vectorization type.
25493
25494 2009-04-20  Michael Matz  <matz@suse.de>
25495
25496         * Makefile.in (generated_files): Take out $(simple_generated_c).
25497
25498 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
25499
25500         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
25501         (UINTPTR_TYPE):  Likewise.
25502
25503 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
25504
25505         PR c/37481
25506         * c-typeck.c (digest_init): Check for initializing an array with a
25507         string literal.
25508
25509 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
25510
25511         PR c/19771
25512         * c-semantics.c (pop_stmt_list): Propagate
25513         STATEMENT_LIST_HAS_LABEL to parent statement list.
25514
25515 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
25516
25517         * config/mips/mips.h (mips_tune_attr): New macro.
25518         * config/mips/mips.md (cpu): Use it.
25519
25520 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
25521
25522         PR c/38243
25523         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
25524         declaring a tag.
25525
25526 2009-04-19  Diego Novillo  <dnovillo@google.com>
25527
25528         * toplev.c (compile_file): Move call to coverage_finish ...
25529         * cgraphunit.c (ipa_passes): ... here.
25530         Call cgraph_process_new_functions.
25531         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
25532         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
25533
25534 2009-04-19  Jan Hubicka  <jh@suse.cz>
25535
25536         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
25537         cfun.
25538         (dump_cgraph_node): Dump can throw external flag.
25539         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
25540
25541 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
25542
25543         PR c/32061
25544         PR c++/36954
25545         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
25546         * common.opt (Wlogical-op): Move from here...
25547         * c.opt (Wlogical-op): ... to here.
25548         * c-typeck.c (parser_build_binary_op): Update call to
25549         warn_logical_operator.
25550         * c-opts.c (c_common_post_options): Enable warn_logical_op with
25551         extra_warnings.
25552         * c-common.c (warn_logical_op): Update.
25553         * c-common.h (warn_logical_op): Update declaration.
25554
25555 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
25556
25557         * tree.c (protected_set_expr_location): Fix formatting.
25558
25559 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
25560
25561         PR c/27676
25562         * c-typeck.c (readonly_warning): new.
25563         (build_unary_op, build_modify_expr): Use readonly_warning for
25564         storing into something readonly but not const-qualified.
25565
25566 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
25567
25568         PR c/22367
25569         * c-typeck.c (build_unary_op): Check for taking address of
25570         expression of type void.
25571
25572 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
25573
25574         PR c/35210
25575         * c-typeck.c (build_function_call): Check for calling a function
25576         with qualified void return types.  Call require_complete_type when
25577         generating a trap.
25578
25579 2009-04-18  Jan Hubicka  <jh@suse.cz>
25580
25581         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
25582         Set nothrow flag.
25583         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
25584         can_throw_external flag.
25585         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
25586         * ipa-pure-const.c (ignore_edge): New function.
25587         (propagate): Compute order for NOTHROW computation; set NOTHROWs
25588         only over can_throw_external edges.
25589         (local_pure_const): Add nothrow flag.
25590         * ipa-utils.c (searchc): Add ignore_edge callback.
25591         (ipa_utils_reduced_inorder): Add ignore_edge callback.
25592         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
25593         (set_nothrow_function_flags): Update cgraph.
25594         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
25595
25596 2009-04-18  Richard Guenther  <rguenther@suse.de>
25597
25598         PR middle-end/39804
25599         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
25600         (fold_stmt): ... this and ...
25601         (fold_stmt_inplace): ... this.
25602         (fold_stmt_1): Fold references in calls and asms.
25603         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
25604
25605 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25606
25607         * tree-vrp.c (ssa_name_nonzero_p): Remove.
25608         * tree.h: Remove the prototype for ssa_name_nonzero_p.
25609
25610 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25611
25612         * tree.c (function_args_count): Remove.
25613         * tree.h: Remove the prototype for function_args_count.
25614
25615 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25616
25617         * tree-iterator.c (expr_only): Remove.
25618         * tree.h: Remove the prototype for expr_only.
25619
25620 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25621
25622         * reginfo.c (cannot_change_mode_set_regs): Remove.
25623         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
25624
25625 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
25626
25627         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
25628         whether operands 0 and 1 overlaps.
25629
25630 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
25631
25632         PR middle-end/36902
25633         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
25634         pointer. Use warning_at instead of warning.
25635         (search_for_addr_array): Likewise.
25636         (check_array_bounds): Likewise.
25637         (check_all_array_refs): Check that the incoming edge is not in the
25638         list of edges to be removed.
25639         (check_all_array_refs): Avoid the temporal pointer.
25640         (vrp_visit_cond_stmt): Fix typo.
25641         (simplify_switch_using_ranges): Handle the case where the switch
25642         index is an integer constant.
25643
25644 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
25645
25646         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
25647
25648 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25649
25650         * doc/extend.texi, doc/invoke.texi: Fix typos.
25651
25652 2009-04-17  Cary Coutant  <ccoutant@google.com>
25653
25654         * tree-flow-inline.h (get_lineno): Fix inverted test.
25655
25656 2009-04-17  Diego Novillo  <dnovillo@google.com>
25657
25658         * tree-ssa-pre.c (create_expression_by_pieces): Remove
25659         assertion for AVAIL_OUT.
25660
25661 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
25662
25663         PR target/38627
25664         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
25665         * config/sh/linux-atomic.asm: Likewise.
25666
25667 2009-04-17  Diego Novillo  <dnovillo@google.com>
25668
25669         * except.c (debug_eh_tree): New.
25670         (struct eh_region, struct eh_status): Move ...
25671         * except.h: ... here.
25672         (add_type_for_runtime): Declare extern.
25673         (lookup_type_for_runtime): Likewise.
25674         (debug_eh_tree): Declare.
25675         * Makefile.in (GTFILES): List except.h before except.c
25676
25677 2009-04-17  Diego Novillo  <dnovillo@google.com>
25678
25679         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
25680         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
25681         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
25682         (find_vars_r): ... here.
25683         * tree-flow.h (find_referenced_vars_in): Declare.
25684         * tree-ssa-pre.c (create_expression_by_pieces): Assert
25685         that AVAIL_OUT exists for BLOCK.
25686         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
25687         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
25688         (tree-parloops.o): Likewise.
25689
25690 2009-04-17  Simon Baldwin  <simonb@google.com>
25691
25692         * toplev.c (default_tree_printer): Add handling for %E format.
25693
25694 2009-04-17  Diego Novillo  <dnovillo@google.com>
25695
25696         * tree-pretty-print.c (dump_generic_node): Add break after
25697         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
25698         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
25699         FUNCTION_TYPE together.  Call print_struct_decl when printing
25700         structures and TDF_SLIM is not given.
25701         (print_struct_decl): Fix logic for detecting recursion.
25702
25703 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
25704
25705         PR 31567
25706         * gcc.c (create_at_file): New.
25707         (compile_input_file_p): New.
25708         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
25709         * main.c (main): Update call to toplev_main.
25710         * toplev.c (toplev_main): Change signature. Call expandargv.
25711         * toplev.h (toplev_main): Change signature.
25712
25713 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
25714
25715         * dwarf2out.c (field_byte_offset): Use the type size as the field size
25716         if the latter is not constant.
25717
25718 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
25719
25720         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
25721
25722 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
25723
25724         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
25725         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
25726
25727 2009-04-17  Richard Guenther  <rguenther@suse.de>
25728
25729         * tree-ssa-structalias.c (get_constraint_for_component_ref):
25730         Handle component references view-converting an invariant address.
25731
25732 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
25733
25734         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
25735         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
25736         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
25737         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
25738         Use @deftypevr rather than @deftypevar.
25739
25740 2009-04-17  Richard Guenther  <rguenther@suse.de>
25741
25742         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
25743         (get_prop_source_stmt): Likewise.
25744         (can_propagate_from): Likewise.
25745
25746 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
25747
25748         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
25749         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
25750         (--with-multilib-list): Add default value.
25751         * configure: Regenerate.
25752         * Makefile.in (TM_ENDIAN_CONFIG): Define.
25753         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
25754         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
25755         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
25756         Don't add default cpu to multilib list unnecessarily, but do enable
25757         the relevant compiler option..
25758         Add support for --with-multilib-list=<blank> and
25759         --with-multilib-list=!<somelib> to supress unwanted multilibs.
25760         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
25761         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
25762         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
25763         TM_MULTILIB_CONFIG.
25764         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
25765         (MULTILIB_OSDIRNAMES): New variable.
25766         * config/sh/t-1e: Delete file.
25767         * config/sh/t-mlib-sh1: Delete file.
25768         * config/sh/t-mlib-sh2: Delete file.
25769         * config/sh/t-mlib-sh2a: Delete file.
25770         * config/sh/t-mlib-sh2a-nofpu: Delete file.
25771         * config/sh/t-mlib-sh2a-single: Delete file.
25772         * config/sh/t-mlib-sh2a-single-only: Delete file.
25773         * config/sh/t-mlib-sh2e: Delete file.
25774         * config/sh/t-mlib-sh3e: Delete file.
25775         * config/sh/t-mlib-sh4: Delete file.
25776         * config/sh/t-mlib-sh4-nofpu: Delete file.
25777         * config/sh/t-mlib-sh4-single: Delete file.
25778         * config/sh/t-mlib-sh4-single-only: Delete file.
25779         * config/sh/t-mlib-sh4a: Delete file.
25780         * config/sh/t-mlib-sh4a-nofpu: Delete file.
25781         * config/sh/t-mlib-sh4a-single: Delete file.
25782         * config/sh/t-mlib-sh4a-single-only: Delete file.
25783         * config/sh/t-mlib-sh4al: Delete file.
25784         * config/sh/t-mlib-sh5-32media: Delete file.
25785         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
25786         * config/sh/t-mlib-sh5-64media: Delete file.
25787         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
25788         * config/sh/t-mlib-sh5-compact: Delete file.
25789         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
25790         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
25791         * doc/install.texi (Options specification): Add
25792         --with-multilib-list and --with-endian.
25793
25794 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
25795
25796         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
25797         REVISION_c.
25798         (OBJS-common): Add plugin-version.o.
25799         (plugin-version.o): New.
25800         * gcc-plugin.h (plugin_gcc_version): New.
25801         (plugin_default_version_check): New.
25802         (plugin_init_func, plugin_init): Add version argument.
25803         * plugin-version.c: New.
25804         * plugin.c (str_plugin_gcc_version_name): New.
25805         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
25806         pass it to the init function.
25807         (plugin_default_version_check): New.
25808
25809 2009-04-17  Richard Guenther  <rguenther@suse.de>
25810
25811         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
25812         for decl-vs-decl disambiguation.
25813
25814 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
25815
25816         * config/s390/s390.h (s390_tune_attr): New macro definition.
25817         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
25818
25819 2009-04-17  Richard Guenther  <rguenther@suse.de>
25820
25821         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
25822         (fold_stmt_r): Likewise.
25823         (maybe_fold_reference): New function.
25824         (fold_gimple_assign): Handle cases fold_stmt_r did.
25825         (fold_stmt): Do not use fold_stmt_r.
25826         (fold_stmt_inplace): Likewise.
25827
25828 2009-04-17  Richard Guenther  <rguenther@suse.de>
25829
25830         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
25831         (record_equivalences_from_stmt): Remove useless checks and
25832         simplifications.
25833         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
25834         the type is already suitable.
25835
25836 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
25837
25838         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
25839
25840 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
25841
25842         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
25843         (CMPtype): Define as __gcc_CMPtype.
25844
25845 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
25846
25847         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
25848         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
25849
25850 2009-04-17  Richard Guenther  <rguenther@suse.de>
25851
25852         PR tree-optimization/39746
25853         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
25854         special-casing for builtins and static variable use/def.
25855         (call_may_clobber_ref_p_1): Likewise.
25856
25857 2009-04-16  Ian Lance Taylor  <iant@google.com>
25858
25859         * df.h: Include "timevar.h".
25860         (struct df_problem): Change tv_id field to timevar_id_t.
25861         * tree-pass.h: Include "timevar.h".
25862         (struct opt_pass): Change tv_id field to timevar_id_t.
25863         * timevar.h (timevar_id_t): Define TV_NONE.
25864         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
25865         TV_NONE rather than tv_id != 0.
25866         (execute_one_pass): Likewise.
25867         * Makefile.in (DF_H): Add $(TIMEVAR_H).
25868         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
25869         dependencies to $(TREE_PASS_H).
25870         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
25871         to TV_NONE.
25872         (pass_branch_target_load_optimize2): Likewise.
25873         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
25874         (pass_outof_cfg_layout_mode): Likewise.
25875         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
25876         (pass_rebuild_cgraph_edges): Likewise.
25877         (pass_remove_cgraph_callee_edges): Likewise.
25878         * df-core.c (pass_df_initialize_opt): Likewise.
25879         (pass_df_initialize_no_opt): Likewise.
25880         (pass_df_finish): Likewise.
25881         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
25882         * except.c (pass_set_nothrow_function_flags): Likewise.
25883         (pass_convert_to_eh_region_ranges): Likewise.
25884         * final.c (pass_compute_alignments): Likewise.
25885         * function.c (pass_instantiate_virtual_regs): Likewise.
25886         (pass_init_function): Likewise.
25887         (pass_leaf_regs): Likewise.
25888         (pass_match_asm_constraints): Likewise.
25889         * gimple-low.c (pass_lower_cf): Likewise.
25890         (pass_mark_used_blocks): Likewise.
25891         * init-regs.c (pass_initialize_regs): Likewise.
25892         * integrate.c (pass_initial_value_sets): Likewise.
25893         * ira.c (pass_ira): Likewise.
25894         * jump.c (pass_cleanup_barriers): Likewise.
25895         * omp-low.c (pass_expand_omp): Likewise.
25896         (pass_lower_omp): Likewise.
25897         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
25898         * recog.c (pass_split_all_insns): Likewise.
25899         (pass_split_after_reload): Likewise.
25900         (pass_split_before_regstack): Likewise.
25901         (pass_split_before_sched2): Likewise.
25902         (pass_split_for_shorten_branches): Likewise.
25903         * reginfo.c (pass_reginfo_init): Likewise.
25904         (pass_subregs_of_mode_init): Likewise.
25905         (pass_subregs_of_mode_finish): Likewise.
25906         * passes.c (pass_postreload): Likewise.
25907         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
25908         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
25909         (pass_warn_function_return): Likewise.
25910         (pass_warn_function_noreturn): Likewise.
25911         * tree-complex.c (pass_lower_complex): Likewise.
25912         (pass_lower_complex_O0): Likewise.
25913         * tree-if-conv.c (pass_if_conversion): Likewise.
25914         * tree-into-ssa.c (pass_build_ssa): Likewise.
25915         * tree-mudflap.c (pass_mudflap_1): Likewise.
25916         (pass_mudflap_2): Likewise.
25917         * tree-nomudflap.c (pass_mudflap_1): Likewise.
25918         (pass_mudflap_2): Likewise.
25919         * tree-nrv.c (pass_return_slot): Likewise.
25920         * tree-object-size.c (pass_object_sizes): Likewise.
25921         * tree-optimize.c (pass_all_optimizations): Likewise.
25922         (pass_early_local_passes): Likewise.
25923         (pass_all_early_optimizations): Likewise.
25924         (pass_cleanup_cfg): Likewise.
25925         (pass_cleanup_cfg_post_optimizing): Likewise.
25926         (pass_free_datastructures): Likewise.
25927         (pass_free_cfg_annotations): Likewise.
25928         (pass_fixup_cfg): Likewise.
25929         (pass_init_datastructures): Likewise.
25930         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
25931         (pass_late_warn_uninitialized): Likewise.
25932         (pass_update_address_taken): Likewise.
25933         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
25934         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
25935         (pass_cse_sincos): Likewise.
25936         (pass_convert_to_rsqrt): Likewise.
25937         * tree-ssa-structalias.c (pass_build_alias): Likewise.
25938         * tree-stdarg.c (pass_stdarg): Likewise.
25939         * tree-tailcall.c (pass_tail_recursion): Likewise.
25940         (pass_tail_calls): Likewise.
25941         * tree-vect-generic.c (pass_lower_vector): Likewise.
25942         (pass_lower_vector_ssa): Likewise.
25943         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
25944
25945 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
25946
25947         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
25948         XLR entry.
25949         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
25950         Handle -march=xlr.
25951         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
25952         logical and signext.
25953
25954 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
25955
25956         PR target/39767
25957         * config/sh/predicates.md (arith_operand): Check if the operand
25958         of TRUNCATE is a REG.
25959
25960 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25961
25962         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
25963         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
25964
25965 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25966
25967         * tree-iterator.c (tsi_split_statement_list_after,
25968         tsi_split_statement_list_before): Remove.
25969         * tree-iterator.h: Remove the prototypes for
25970         tsi_split_statement_list_after and tsi_split_statement_list_before.
25971
25972 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25973
25974         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
25975         * tree-ssa-propagate.h: Remove the prototype for
25976         stmt_makes_single_load.
25977
25978 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25979
25980         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
25981         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
25982
25983 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25984
25985         * tree-iterator.c (EXPR_LAST_BODY): Remove.
25986
25987 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25988
25989         * except.c (eh_region_outer_p): Remove.
25990         * except.h: Remove the prototype for eh_region_outer_p.
25991
25992 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25993
25994         * function.c (current_function_assembler_name): Remove.
25995         * function.h: Remove the prototype for
25996         current_function_assembler_name.
25997
25998 2009-04-16  Ian Lance Taylor  <iant@google.com>
25999
26000         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
26001         (add_reg_note): Call alloc_reg_note.
26002         * rtl.h (alloc_reg_note): Declare.
26003         * combine.c (try_combine): Use alloc_reg_note.
26004         (recog_for_combine, move_deaths): Likewise.
26005         (distribute_notes): Use alloc_reg_note and add_reg_note.
26006         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
26007         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
26008         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
26009
26010 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
26011
26012         PR rtl-optimization/39762
26013         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
26014         ira_may_move_out_cost): Add comments about way of their usage.
26015         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
26016
26017         * ira-conflicts.c (process_regs_for_copy): Use function
26018         ira_get_register_move_cost instead of global
26019         ira_register_move_cost.
26020
26021         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
26022         color_pass, move_spill_restore, update_curr_costs): Ditto.
26023
26024         * ira-lives.c (process_single_reg_class_operands): Ditto.
26025
26026         * ira-emit.c (emit_move_list): Ditto.
26027
26028         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
26029         (record_reg_classes): Ditto.  Use functions
26030         ira_get_register_move_cost and ira_get_may_move_cost instead of
26031         global vars ira_register_move_cost, ira_may_move_out_cost and
26032         ira_may_move_in_cost.
26033         (record_address_regs): Don't call ira_init_register_move_cost.
26034         Use function ira_get_may_move_cost instead of global
26035         ira_may_move_in_cost.
26036         (process_bb_node_for_hard_reg_moves): Use function
26037         ira_get_register_move_cost instead of global ira_register_move_cost.
26038         (ira_costs): Don't call ira_init_register_move_cost.
26039
26040 2009-04-16  Richard Guenther  <rguenther@suse.de>
26041
26042         * tree-cfg.c (verify_gimple_assign_binary):
26043         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
26044         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
26045         (create_general_new_stmt): Note that this function is broken.
26046
26047 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26048
26049         * common.opt (fhelp): Add Var(help_flag).
26050         * gcc-plugin.h (plugin_info): Add help.
26051         * plugin.c (plugin_name_args): Add help.
26052         (register_plugin_info): Set plugin->help.
26053         (print_help_one_plugin): New.
26054         (print_plugins_help): New.
26055         * plugin.h (print_plugins_help): New.
26056         * toplev.c (toplev_main): Call print_plugins_help if needed.
26057
26058 2009-04-16  Richard Guenther  <rguenther@suse.de>
26059
26060         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
26061         (gimple_ior_addresses_taken_1): New function.
26062         (gimple_ior_addresses_taken): Likewise.
26063         * gimple.h (struct gimple_statement_with_ops_base): Remove
26064         addresses_taken member.
26065         (gimple_ior_addresses_taken): Declare.
26066         (gimple_addresses_taken, gimple_addresses_taken_ptr,
26067         gimple_set_addresses_taken): Remove.
26068         * ipa-reference.c (mark_address): New function.
26069         (scan_stmt_for_static_refs): Use it for marking addresses taken.
26070         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
26071         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
26072         (gimple_add_to_addresses_taken): Remove.
26073         (get_tmr_operands): Call mark_address_taken.
26074         (get_asm_expr_operands): Likewise.
26075         (get_expr_operands): Likewise.
26076         (build_ssa_operands): Do not clear the addresses_taken bitmap.
26077         (free_stmt_operands): Do not free it.
26078         * tree-ssa.c (delete_tree_ssa): Likewise.
26079         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
26080
26081 2009-04-16  Richard Guenther  <rguenther@suse.de>
26082
26083         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
26084         (walk_stmt_load_store_ops): Likewise.
26085         * gimple.c (get_base_loadstore): New function.
26086         (walk_stmt_load_store_addr_ops): Likewise.
26087         (walk_stmt_load_store_ops): Likewise.
26088         * ipa-pure-const.c (check_op): Simplify.
26089         (check_load, check_store): New functions.
26090         (check_stmt): Use walk_stmt_load_store_ops.
26091         * ipa-reference.c (mark_load): Adjust signature.
26092         (mark_store): Likewise.
26093         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
26094
26095 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26096
26097         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
26098         (plugin_info): New.
26099         * opts.c (common_handle_option): Don't call print_version.
26100         * plugin.c (plugin_name_args): Add version.
26101         (register_plugin_info): New.
26102         (register_callback): Handle PLUGIN_INFO.
26103         (try_init_one_plugin): New.
26104         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
26105         if failed to init.
26106         (finalize_one_plugin): New.
26107         (finalize_plugins): New.
26108         (print_one_plugin): New.
26109         (print_plugins_versions): New.
26110         * plugin.h (print_plugins_versions): New.
26111         (finalize_plugins): New.
26112         * toplev.c (compile_file): Don't call initialize_plugins.
26113         (print_version): Call print_plugins_versions.
26114         (toplev_main): Call initialize_plugins. Print version if needed.
26115         Call finalize_plugins.
26116
26117 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26118
26119         * common.opt (fversion): New.
26120         * gcc.c (print_version): New.
26121         (process_command): Don't print the version. Just set print_version.
26122         (main): Print version. Call subprocesses if print_version and
26123         verbose_flag are set.
26124         * opts.c (common_handle_option): Handle OPT_fversion.
26125
26126 2009-04-16  Richard Guenther  <rguenther@suse.de>
26127             Ira Rosen  <irar@il.ibm.com>
26128
26129         PR tree-optimization/39698
26130         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
26131         type of the reduction variable.  Only generate the def if
26132         it is needed.
26133
26134         * omp-low.c (expand_omp_for_generic): When converting to a pointer
26135         make sure to first convert to an integer of the same precision.
26136         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
26137         the type of the evolution correctly in computing the new
26138         induction variable base.
26139
26140 2009-04-16  Richard Guenther  <rguenther@suse.de>
26141
26142         PR middle-end/39625
26143         * tree-cfg.c (make_blocks): Split statements with to-be
26144         abnormal SSA names on the lhs.
26145
26146 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
26147
26148         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
26149         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
26150         * c-typeck.c (really_start_incremental_init): Likewise.
26151         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
26152         (TARGET_INITIALIZER): Remove it.
26153         * target.h (struct target): Remove vector_opaque_p.
26154         * tree.c (build_opaque_vector_type): New.
26155         * tree.h (TYPE_VECTOR_OPAQUE): New.
26156         (build_opaque_vector_type): Declare.
26157         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
26158         * config/rs6000/rs6000.c (build_opaque_vector_type,
26159         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
26160         (rs6000_init_builtins): Use build_opaque_vector_type for
26161         opaque_V4SI_type_node.
26162
26163 2009-04-15  Catherine Moore  <clm@codesourcery.com>
26164
26165         * debug.h (set_name):  Declare.
26166         * dwarf2out.c (dwarf2out_set_name): Declare.
26167         (dwarf2_debug_hooks): Add set_name.
26168         (find_AT_string): New.
26169         (add_AT_string): Call find_AT_string.
26170         (dwarf2out_set_name): New.
26171         * cp/decl.c (grokdeclarator): Call set_name.
26172         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
26173         * debug.c (do_nothing_debug_hooks):  Likewise.
26174         * dbxout.c (dbx_debug_hooks): Likewise.
26175         * sdbout.c (sdb_debug_hooks): Likewise.
26176
26177 2009-04-15  Michael Eager  <eager@eagercon.com>
26178
26179         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
26180         reg for single-precision FPU.
26181         * config/rs6000/rs6000.md (movsi_internal1): Only for
26182         !TARGET_SINGLE_FPU.
26183         (movsi_internal1_single): New. Add pattern to move SI values to/from
26184         single-precision FP regs.
26185
26186 2009-04-15  Richard Guenther  <rguenther@suse.de>
26187
26188         * omp-low.c (lower_rec_input_clauses): Build correct address
26189         expressions.
26190         (expand_omp_for_generic): Fix multiplication type.
26191         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
26192         (generate_memset_zero): Fix types.
26193         * tree-profile.c (prepare_instrumented_value): Correctly
26194         widen a pointer.
26195
26196 2009-04-15  Ian Lance Taylor  <iant@google.com>
26197
26198         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
26199         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
26200         for -Wall and for -Wc++-compat.
26201         (c_common_post_options): For C++, set warn_enum_compare if not
26202         already set.
26203         * c-tree.h (struct c_expr): Add field original_type.
26204         (build_external_ref): Update declaration.
26205         * c-parser.c (c_parser_braced_init): Set original_type.
26206         (c_parser_initelt): Likewise.
26207         (c_parser_expr_no_commas): Likewise.
26208         (c_parser_conditional_expression): Likewise.
26209         (c_parser_cast_expression): Likewise.
26210         (c_parser_unary_expression): Likewise.  Pull setting of
26211         original_code to top of function.
26212         (c_parser_sizeof_expression): Set original_type.
26213         (c_parser_alignof_expression): Likewise.
26214         (c_parser_postfix_expression): Likewise.  Pull setting of
26215         original_code to top of function.
26216         (c_parser_postfix_expression_after_paren_type): Set original_type.
26217         (c_parser_postfix_expression_after_primary): Likewise.
26218         (c_parser_expression): Likewise.
26219         * c-typeck.c (build_external_ref): Add type parameter.  Change all
26220         callers.
26221         (c_expr_sizeof_expr): Set original_type field.
26222         (parser_build_unary_op): Likewise.
26223         (parser_build_binary_op): Likewise.  Optionally warn about
26224         comparisons of enums of different types.
26225         (digest_init): Set original_type field.
26226         (really_start_incremental_init): Likewise.
26227         (push_init_level, pop_init_level): Likewise.
26228         * doc/invoke.texi (Warning Options): -Wenum-compare now
26229         supported in C.
26230
26231 2009-04-15  Richard Guenther  <rguenther@suse.de>
26232
26233         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
26234         out a necessary conversion.
26235         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
26236         names we didn't value number.
26237         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
26238
26239 2009-04-15  Richard Guenther  <rguenther@suse.de>
26240
26241         PR tree-optimization/39764
26242         * tree-ssa-ccp.c (get_value): Canonicalize value with
26243         canonicalize_float_value.
26244
26245 2009-04-15  Jan Hubicka  <jh@suse.cz>
26246
26247         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
26248         Wrong version of patch.
26249
26250 2009-04-15  Jan Hubicka  <jh@suse.cz>
26251
26252         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
26253
26254 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
26255
26256         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
26257         our distinct integral and vector types.
26258
26259 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
26260
26261         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
26262         * init.c (build_vtbl_address): Remove call to assemble_external.
26263
26264 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
26265
26266         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
26267         output for other floating point modes.
26268
26269 2009-04-14  Diego Novillo  <dnovillo@google.com>
26270
26271         * diagnostic.c (diagnostic_report_diagnostic): Do not
26272         warn about loaded plugins for DK_ERROR and DK_WARNING.
26273         * c-decl.c (declspecs_add_type): Move call to
26274         invoke_plugin_callbacks ...
26275         * c-parser.c (c_parser_declspecs): ... here.
26276         * plugin.c (dump_active_plugins): Tidy output.
26277
26278 2009-04-14  Diego Novillo  <dnovillo@google.com>
26279             Le-Chun Wu  <lcwu@google.com>
26280
26281         * configure.ac: Add --enable-plugin support.
26282         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
26283         * Makefile.in (PLUGIN_H): Define.
26284         Export ENABLE_PLUGIN and GMPINC to site.exp.
26285         Add PLUGINLIBS to link command.
26286         Add/modify dependencies for plugin.o and files including plugin.h.
26287         (plugin.o): New.
26288         * config.in: Regenerate.
26289
26290         * opts.c (common_handle_option): Handle OPT_fplugin_ and
26291         OPT_fplugin_arg_.
26292
26293 2009-04-14  Le-Chun Wu  <lcwu@google.com>
26294
26295         * tree-pass.h (register_one_dump_file): Add a prototype for
26296         register_one_dump_file.
26297         * toplev.c (compile_file): Call initialize_plugins.
26298         (do_compile): Call invoke_plugin_callbacks.
26299         (toplev_main): Call invoke_plugin_callbacks.
26300         * common.opt: Add -fplugin= and -fplugin-arg-.
26301         * gcc-plugin.h: New public header file for plugins to include.
26302         * plugin.c: New source file.
26303         * plugin.h: New internal header file.
26304         * passes.c (register_one_dump_file): Make it external.
26305
26306         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
26307
26308 2009-04-14  Diego Novillo  <dnovillo@google.com>
26309
26310         * doc/plugins.texi: New.
26311         * doc/gccint.texi: Add reference to Plugins chapter.
26312         * doc/invoke.texi: Document -fplugin and -fplugin-arg
26313         * diagnostic.c (diagnostic_report_diagnostic): Warn about
26314         loaded plugins, if any.
26315         * timevar.def (TV_PLUGIN_INIT): Define.
26316         (TV_PLUGIN_RUN): Define.
26317         * plugin.c: Include timevar.h
26318         (plugins_active_p): New.
26319         (dump_active_plugins): New.
26320         (debug_active_plugins): New.
26321
26322 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
26323
26324         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
26325         library paths.
26326         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
26327
26328 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
26329
26330         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
26331         the same as a minus without a shift.
26332
26333 2009-04-14  Nick Clifton  <nickc@redhat.com>
26334
26335         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
26336         comparisons with small integers will always produce a short
26337         branch.
26338
26339 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
26340
26341         Merge:
26342         2008-12-19  Diego Novillo  <dnovillo@google.com>
26343
26344         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
26345
26346 2009-04-14  Richard Guenther  <rguenther@suse.de>
26347
26348         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
26349         verification.
26350         (verify_gimple_assign_binary): Likewise.  Handle shifts and
26351         rotates correctly.
26352         (verify_gimple_phi): Print the mismatched argument position.
26353         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
26354         Fix types.
26355         (vect_update_init_of_dr): Likewise.
26356         * matrix-reorg.c (transform_access_sites): Do what the
26357         comment suggests.
26358         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
26359
26360 2009-04-13  Michael Eager  <eager@eagercon.com>
26361
26362         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
26363         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
26364         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
26365         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
26366         remove duplicate config
26367
26368 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
26369
26370         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
26371         file_name:line_number type locator of the call site.
26372
26373 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
26374
26375         * genautomata.c: Put blank after comma.
26376         (automaton_decls): New.
26377         (struct unit_usage): Add comments to member next.
26378         (store_alt_unit_usage): Keep the list ordered.
26379         (unit_present_on_list_p, equal_alternatives_p): New.
26380         (check_regexp_units_distribution): Check units distribution
26381         correctness correctly.
26382         (main): Don't write automata if error is found.  Return correct
26383         exit code.
26384
26385         * config/m68k/cf.md (cfv4_ds): Remove.
26386         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
26387         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
26388
26389         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
26390         power4-load-ext, power4-store, power4-store-update,
26391         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
26392         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
26393         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
26394         power4-sqrt, power4-isync): Modify reservation to make correct
26395         unit distribution to automata.
26396
26397         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
26398         power5-store-update, power5-two, power5-three, power5-lmul,
26399         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
26400
26401 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
26402
26403         * except.c (pass_set_nothrow_function_flags): Set name and add
26404         TODO_dump_func.
26405         (set_nothrow_function_flags): Mention in the dump file when
26406         changing a function to nothrow.
26407
26408 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
26409
26410         PR/39066
26411         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
26412         instead of unsigned long.
26413
26414 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
26415
26416         * config/arm/arm.c (return_used_this_function): Remove.
26417         (arm_output_function_prologue): Remove use of
26418         return_used_this_function.
26419         (output_return_instruction): Replace use of
26420         return_used_this_function
26421         by cfun->machine->return_used_this_function.
26422         (arm_output_epilogue): Likewise.
26423         (arm_output_function_epilogue): Likewise.
26424         (thumb_unexpanded_epilogue): Likewise.
26425         * config/arm/arm.h (struct machine_function):
26426         New member return_used_this_function.
26427
26428 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
26429
26430         * doc/install.texi: Correct description of default directory for
26431         --with-gxx-include-dir.
26432
26433 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
26434
26435         * fold-const.c (build_range_check): Properly deal with enumeral and
26436         boolean base types.
26437
26438 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
26439
26440         * doc/invoke.texi (max_gcse_passes): Remove documentation.
26441         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
26442         * params.h (MAX_GCSE_PASSES): Remove.
26443         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
26444         in sequence.  Remove ability to run multiple passes.
26445         (bypass_jumps): Report run as third CPROP pass.
26446
26447 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
26448
26449         PR middle-end/39651
26450         * except.c (can_throw_external): Look at each insn in a SEQUENCE
26451         when deciding whether the whole SEQUENCE can throw.
26452
26453 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
26454
26455         PR target/39740
26456         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
26457         offseted label references.
26458
26459 2009-04-11  Jan Hubicka  <jh@suse.cz>
26460
26461         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
26462
26463 2009-04-11  Richard Guenther  <rguenther@suse.de>
26464
26465         PR middle-end/39732
26466         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
26467         return variables as TREE_ADDRESSABLE.
26468
26469 2009-04-11  Richard Guenther  <rguenther@suse.de>
26470
26471         PR tree-optimization/39713
26472         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
26473         reference trees have SSA_NAME operands.
26474
26475 2009-04-11  Richard Guenther  <rguenther@suse.de>
26476
26477         PR c/39712
26478         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
26479         address expressions.
26480
26481 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
26482
26483         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
26484         match changes in Cygwin 1.7
26485         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
26486         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
26487
26488 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
26489
26490         PR tree-optimization/39701
26491         * doc/invoke.texi (Optimization Options): Document change in
26492         meaning and initialization of -fdelete-null-pointer-checks.
26493
26494 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
26495
26496         PR middle-end/39701
26497         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
26498
26499         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
26500         here.
26501
26502         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
26503
26504 2009-04-10  Chao-ying Fu  <fu@mips.com>
26505
26506         * doc/tm.texi (Instruction Output): Document
26507         TARGET_ASM_FINAL_POSTSCAN_INSN.
26508         * target.h (final_postscan_insn): New field in asm_out.
26509         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
26510         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
26511         * final.c (final_scan_insn): Call
26512         targetm.asm_out.final_postscan_insn after outputting
26513         an asm macro and a normal instruction.
26514
26515         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
26516         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
26517         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
26518         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
26519         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
26520
26521 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
26522
26523         PR middle-end/39701
26524         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
26525         variables as non-NULL even with -fdelete-null-pointer-checks.
26526
26527 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
26528
26529         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
26530
26531 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
26532
26533         PR target/39678
26534         * config/i386/i386.c (classify_argument): Handle SCmode with
26535         (bit_offset % 64) != 0.
26536
26537 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
26538
26539         * doc/invoke.texi (Optimize Options): Add cross-reference to
26540         -Q --help=optimizers examples.
26541
26542 2009-04-10  Ben Elliston  <bje@au.ibm.com>
26543
26544         PR target/36800
26545         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
26546         regalign for the reg == fpr and TDmode case.
26547
26548 2009-04-09  David Ayers  <ayers@fsfe.org>
26549
26550         PR objc/29200
26551         * objc/objc-act.c (warn_with_method): Remove helper function.
26552         (check_duplicates): Call warning and inform directly.
26553         (really_start_method): Likewise.
26554
26555 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
26556
26557         * expmed.c (expand_divmod): Always use a comparison for a division
26558         by a large unsigned integer.
26559
26560         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
26561         for things others than variables or functions as nonzero.
26562
26563 2009-04-09  Nick Clifton  <nickc@redhat.com>
26564
26565         * unwind-compat.c: Change copyright header to refer to version
26566         3 of the GNU General Public License with version 3.1 of the
26567         GCC Runtime Library Exception and to point readers at the
26568         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
26569         * config/alpha/crtfastmath.c: Likewise.
26570         * config/alpha/linux-unwind.h: Likewise.
26571         * config/alpha/qrnnd.asm: Likewise.
26572         * config/alpha/vms-crt0-64.c: Likewise.
26573         * config/alpha/vms-crt0.c: Likewise.
26574         * config/alpha/vms-dwarf2.asm: Likewise.
26575         * config/alpha/vms-dwarf2eh.asm: Likewise.
26576         * config/alpha/vms-psxcrt0-64.c: Likewise.
26577         * config/alpha/vms-psxcrt0.c: Likewise.
26578         * config/alpha/vms_tramp.asm: Likewise.
26579         * config/arc/initfini.c: Likewise.
26580         * config/arc/lib1funcs.asm: Likewise.
26581         * config/arm/bpabi-v6m.S: Likewise.
26582         * config/arm/bpabi.S: Likewise.
26583         * config/arm/bpabi.c: Likewise.
26584         * config/arm/crti.asm: Likewise.
26585         * config/arm/crtn.asm: Likewise.
26586         * config/arm/ieee754-df.S: Likewise.
26587         * config/arm/ieee754-sf.S: Likewise.
26588         * config/arm/lib1funcs.asm: Likewise.
26589         * config/arm/libunwind.S: Likewise.
26590         * config/arm/linux-atomic.c: Likewise.
26591         * config/arm/mmintrin.h: Likewise.
26592         * config/arm/pr-support.c: Likewise.
26593         * config/arm/unaligned-funcs.c: Likewise.
26594         * config/arm/unwind-arm.c: Likewise.
26595         * config/arm/unwind-arm.h: Likewise.
26596         * config/avr/libgcc.S: Likewise.
26597         * config/bfin/crti.s: Likewise.
26598         * config/bfin/crtlibid.s: Likewise.
26599         * config/bfin/crtn.s: Likewise.
26600         * config/bfin/lib1funcs.asm: Likewise.
26601         * config/bfin/linux-unwind.h: Likewise.
26602         * config/cris/arit.c: Likewise.
26603         * config/cris/cris_abi_symbol.c: Likewise.
26604         * config/darwin-64.c: Likewise.
26605         * config/darwin-crt2.c: Likewise.
26606         * config/darwin-crt3.c: Likewise.
26607         * config/darwin.h: Likewise.
26608         * config/dbxelf.h: Likewise.
26609         * config/dfp-bit.c: Likewise.
26610         * config/dfp-bit.h: Likewise.
26611         * config/elfos.h: Likewise.
26612         * config/fixed-bit.c: Likewise.
26613         * config/fixed-bit.h: Likewise.
26614         * config/fp-bit.c: Likewise.
26615         * config/fp-bit.h: Likewise.
26616         * config/fr30/crti.asm: Likewise.
26617         * config/fr30/crtn.asm: Likewise.
26618         * config/fr30/lib1funcs.asm: Likewise.
26619         * config/freebsd-spec.h: Likewise.
26620         * config/frv/cmovd.c: Likewise.
26621         * config/frv/cmovh.c: Likewise.
26622         * config/frv/cmovw.c: Likewise.
26623         * config/frv/frvbegin.c: Likewise.
26624         * config/frv/frvend.c: Likewise.
26625         * config/frv/lib1funcs.asm: Likewise.
26626         * config/glibc-stdint.h: Likewise.
26627         * config/h8300/clzhi2.c: Likewise.
26628         * config/h8300/crti.asm: Likewise.
26629         * config/h8300/crtn.asm: Likewise.
26630         * config/h8300/ctzhi2.c: Likewise.
26631         * config/h8300/fixunssfsi.c: Likewise.
26632         * config/h8300/lib1funcs.asm: Likewise.
26633         * config/h8300/parityhi2.c: Likewise.
26634         * config/h8300/popcounthi2.c: Likewise.
26635         * config/i386/ammintrin.h: Likewise.
26636         * config/i386/att.h: Likewise.
26637         * config/i386/avxintrin.h: Likewise.
26638         * config/i386/biarch64.h: Likewise.
26639         * config/i386/bmmintrin.h: Likewise.
26640         * config/i386/cpuid.h: Likewise.
26641         * config/i386/cross-stdarg.h: Likewise.
26642         * config/i386/crtfastmath.c: Likewise.
26643         * config/i386/crtprec.c: Likewise.
26644         * config/i386/cygming-crtbegin.c: Likewise.
26645         * config/i386/cygming-crtend.c: Likewise.
26646         * config/i386/cygwin.asm: Likewise.
26647         * config/i386/emmintrin.h: Likewise.
26648         * config/i386/gmm_malloc.h: Likewise.
26649         * config/i386/gthr-win32.c: Likewise.
26650         * config/i386/i386.h: Likewise.
26651         * config/i386/immintrin.h: Likewise.
26652         * config/i386/linux-unwind.h: Likewise.
26653         * config/i386/linux64.h: Likewise.
26654         * config/i386/mm3dnow.h: Likewise.
26655         * config/i386/mmintrin-common.h: Likewise.
26656         * config/i386/mmintrin.h: Likewise.
26657         * config/i386/nmmintrin.h: Likewise.
26658         * config/i386/pmm_malloc.h: Likewise.
26659         * config/i386/pmmintrin.h: Likewise.
26660         * config/i386/smmintrin.h: Likewise.
26661         * config/i386/sol2-c1.asm: Likewise.
26662         * config/i386/sol2-ci.asm: Likewise.
26663         * config/i386/sol2-cn.asm: Likewise.
26664         * config/i386/sol2-gc1.asm: Likewise.
26665         * config/i386/tmmintrin.h: Likewise.
26666         * config/i386/unix.h: Likewise.
26667         * config/i386/w32-unwind.h: Likewise.
26668         * config/i386/wmmintrin.h: Likewise.
26669         * config/i386/x86-64.h: Likewise.
26670         * config/i386/x86intrin.h: Likewise.
26671         * config/i386/xmmintrin.h: Likewise.
26672         * config/ia64/crtbegin.asm: Likewise.
26673         * config/ia64/crtend.asm: Likewise.
26674         * config/ia64/crtfastmath.c: Likewise.
26675         * config/ia64/crti.asm: Likewise.
26676         * config/ia64/crtn.asm: Likewise.
26677         * config/ia64/fde-glibc.c: Likewise.
26678         * config/ia64/lib1funcs.asm: Likewise.
26679         * config/ia64/linux-unwind.h: Likewise.
26680         * config/ia64/quadlib.c: Likewise.
26681         * config/ia64/unwind-ia64.c: Likewise.
26682         * config/linux.h: Likewise.
26683         * config/m32c/m32c-lib1.S: Likewise.
26684         * config/m32c/m32c-lib2-trapv.c: Likewise.
26685         * config/m32c/m32c-lib2.c: Likewise.
26686         * config/m32r/initfini.c: Likewise.
26687         * config/m68hc11/larith.asm: Likewise.
26688         * config/m68hc11/m68hc11-crt0.S: Likewise.
26689         * config/m68k/cf.md: Likewise.
26690         * config/m68k/crti.s: Likewise.
26691         * config/m68k/crtn.s: Likewise.
26692         * config/m68k/lb1sf68.asm: Likewise.
26693         * config/m68k/linux-unwind.h: Likewise.
26694         * config/mcore/crti.asm: Likewise.
26695         * config/mcore/crtn.asm: Likewise.
26696         * config/mcore/lib1.asm: Likewise.
26697         * config/mips/linux-unwind.h: Likewise.
26698         * config/mips/loongson.h: Likewise.
26699         * config/mips/mips16.S: Likewise.
26700         * config/mmix/crti.asm: Likewise.
26701         * config/mmix/crtn.asm: Likewise.
26702         * config/pa/fptr.c: Likewise.
26703         * config/pa/hpux-unwind.h: Likewise.
26704         * config/pa/lib2funcs.asm: Likewise.
26705         * config/pa/linux-atomic.c: Likewise.
26706         * config/pa/linux-unwind.h: Likewise.
26707         * config/pa/milli64.S: Likewise.
26708         * config/pa/quadlib.c: Likewise.
26709         * config/pa/stublib.c: Likewise.
26710         * config/picochip/libgccExtras/adddi3.asm: Likewise.
26711         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
26712         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
26713         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
26714         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
26715         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
26716         * config/picochip/libgccExtras/divmod15.asm: Likewise.
26717         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
26718         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
26719         * config/picochip/libgccExtras/longjmp.asm: Likewise.
26720         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
26721         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
26722         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
26723         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
26724         * config/picochip/libgccExtras/setjmp.asm: Likewise.
26725         * config/picochip/libgccExtras/subdi3.asm: Likewise.
26726         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
26727         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
26728         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
26729         * config/rs6000/750cl.h: Likewise.
26730         * config/rs6000/altivec.h: Likewise.
26731         * config/rs6000/biarch64.h: Likewise.
26732         * config/rs6000/crtresfpr.asm: Likewise.
26733         * config/rs6000/crtresgpr.asm: Likewise.
26734         * config/rs6000/crtresxfpr.asm: Likewise.
26735         * config/rs6000/crtresxgpr.asm: Likewise.
26736         * config/rs6000/crtsavfpr.asm: Likewise.
26737         * config/rs6000/crtsavgpr.asm: Likewise.
26738         * config/rs6000/darwin-asm.h: Likewise.
26739         * config/rs6000/darwin-fallback.c: Likewise.
26740         * config/rs6000/darwin-fpsave.asm: Likewise.
26741         * config/rs6000/darwin-ldouble.c: Likewise.
26742         * config/rs6000/darwin-tramp.asm: Likewise.
26743         * config/rs6000/darwin-unwind.h: Likewise.
26744         * config/rs6000/darwin-vecsave.asm: Likewise.
26745         * config/rs6000/darwin-world.asm: Likewise.
26746         * config/rs6000/e500crtres32gpr.asm: Likewise.
26747         * config/rs6000/e500crtres64gpr.asm: Likewise.
26748         * config/rs6000/e500crtres64gprctr.asm: Likewise.
26749         * config/rs6000/e500crtrest32gpr.asm: Likewise.
26750         * config/rs6000/e500crtrest64gpr.asm: Likewise.
26751         * config/rs6000/e500crtresx32gpr.asm: Likewise.
26752         * config/rs6000/e500crtresx64gpr.asm: Likewise.
26753         * config/rs6000/e500crtsav32gpr.asm: Likewise.
26754         * config/rs6000/e500crtsav64gpr.asm: Likewise.
26755         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
26756         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
26757         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
26758         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
26759         * config/rs6000/eabi-ci.asm: Likewise.
26760         * config/rs6000/eabi-cn.asm: Likewise.
26761         * config/rs6000/eabi.asm: Likewise.
26762         * config/rs6000/linux-unwind.h: Likewise.
26763         * config/rs6000/linux64.h: Likewise.
26764         * config/rs6000/paired.h: Likewise.
26765         * config/rs6000/paired.md: Likewise.
26766         * config/rs6000/ppc64-fp.c: Likewise.
26767         * config/rs6000/ppu_intrinsics.h: Likewise.
26768         * config/rs6000/rs6000.h: Likewise.
26769         * config/rs6000/si2vmx.h: Likewise.
26770         * config/rs6000/sol-ci.asm: Likewise.
26771         * config/rs6000/sol-cn.asm: Likewise.
26772         * config/rs6000/spe.h: Likewise.
26773         * config/rs6000/spu2vmx.h: Likewise.
26774         * config/rs6000/sysv4.h: Likewise.
26775         * config/rs6000/tramp.asm: Likewise.
26776         * config/rs6000/vec_types.h: Likewise.
26777         * config/s390/linux-unwind.h: Likewise.
26778         * config/s390/tpf-unwind.h: Likewise.
26779         * config/score/crti.asm: Likewise.
26780         * config/score/crtn.asm: Likewise.
26781         * config/sh/crt1.asm: Likewise.
26782         * config/sh/crti.asm: Likewise.
26783         * config/sh/crtn.asm: Likewise.
26784         * config/sh/divtab-sh4-300.c: Likewise.
26785         * config/sh/divtab-sh4.c: Likewise.
26786         * config/sh/divtab.c: Likewise.
26787         * config/sh/lib1funcs-4-300.asm: Likewise.
26788         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
26789         * config/sh/lib1funcs.asm: Likewise.
26790         * config/sh/lib1funcs.h: Likewise.
26791         * config/sh/linux-atomic.asm: Likewise.
26792         * config/sh/linux-unwind.h: Likewise.
26793         * config/sh/shmedia.h: Likewise.
26794         * config/sh/sshmedia.h: Likewise.
26795         * config/sh/ushmedia.h: Likewise.
26796         * config/sparc/crtfastmath.c: Likewise.
26797         * config/sparc/linux-unwind.h: Likewise.
26798         * config/sparc/sol2-c1.asm: Likewise.
26799         * config/sparc/sol2-ci.asm: Likewise.
26800         * config/sparc/sol2-cn.asm: Likewise.
26801         * config/spu/divmodti4.c: Likewise.
26802         * config/spu/divv2df3.c: Likewise.
26803         * config/spu/float_disf.c: Likewise.
26804         * config/spu/float_unsdidf.c: Likewise.
26805         * config/spu/float_unsdisf.c: Likewise.
26806         * config/spu/float_unssidf.c: Likewise.
26807         * config/spu/mfc_multi_tag_release.c: Likewise.
26808         * config/spu/mfc_multi_tag_reserve.c: Likewise.
26809         * config/spu/mfc_tag_release.c: Likewise.
26810         * config/spu/mfc_tag_reserve.c: Likewise.
26811         * config/spu/mfc_tag_table.c: Likewise.
26812         * config/spu/multi3.c: Likewise.
26813         * config/spu/spu_internals.h: Likewise.
26814         * config/spu/spu_intrinsics.h: Likewise.
26815         * config/spu/spu_mfcio.h: Likewise.
26816         * config/spu/vec_types.h: Likewise.
26817         * config/spu/vmx2spu.h: Likewise.
26818         * config/stormy16/stormy16-lib2.c: Likewise.
26819         * config/svr4.h: Likewise.
26820         * config/sync.c: Likewise.
26821         * config/v850/lib1funcs.asm: Likewise.
26822         * config/vxlib-tls.c: Likewise.
26823         * config/vxlib.c: Likewise.
26824         * config/vxworks-dummy.h: Likewise.
26825         * config/xtensa/crti.asm: Likewise.
26826         * config/xtensa/crtn.asm: Likewise.
26827         * config/xtensa/ieee754-df.S: Likewise.
26828         * config/xtensa/ieee754-sf.S: Likewise.
26829         * config/xtensa/lib1funcs.asm: Likewise.
26830         * config/xtensa/lib2funcs.S: Likewise.
26831         * config/xtensa/linux-unwind.h: Likewise.
26832         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
26833         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
26834         * coretypes.h: Likewise.
26835         * crtstuff.c: Likewise.
26836         * defaults.h: Likewise.
26837         * dwarf2.h: Likewise.
26838         * emutls.c: Likewise.
26839         * gbl-ctors.h: Likewise.
26840         * gcov-io.h: Likewise.
26841         * ginclude/float.h: Likewise.
26842         * ginclude/iso646.h: Likewise.
26843         * ginclude/stdarg.h: Likewise.
26844         * ginclude/stdbool.h: Likewise.
26845         * ginclude/stddef.h: Likewise.
26846         * ginclude/stdfix.h: Likewise.
26847         * ginclude/stdint-gcc.h: Likewise.
26848         * ginclude/tgmath.h: Likewise.
26849         * gthr-aix.h: Likewise.
26850         * gthr-dce.h: Likewise.
26851         * gthr-gnat.c: Likewise.
26852         * gthr-gnat.h: Likewise.
26853         * gthr-lynx.h: Likewise.
26854         * gthr-mipssde.h: Likewise.
26855         * gthr-nks.h: Likewise.
26856         * gthr-posix.c: Likewise.
26857         * gthr-posix.h: Likewise.
26858         * gthr-posix95.h: Likewise.
26859         * gthr-rtems.h: Likewise.
26860         * gthr-single.h: Likewise.
26861         * gthr-solaris.h: Likewise.
26862         * gthr-tpf.h: Likewise.
26863         * gthr-vxworks.h: Likewise.
26864         * gthr-win32.h: Likewise.
26865         * gthr.h: Likewise.
26866         * libgcc2.c: Likewise.
26867         * libgcc2.h: Likewise.
26868         * libgcov.c: Likewise.
26869         * tsystem.h: Likewise.
26870         * typeclass.h: Likewise.
26871         * unwind-c.c: Likewise.
26872         * unwind-compat.h: Likewise.
26873         * unwind-dw2-fde-compat.c: Likewise.
26874         * unwind-dw2-fde-darwin.c: Likewise.
26875         * unwind-dw2-fde-glibc.c: Likewise.
26876         * unwind-dw2-fde.c: Likewise.
26877         * unwind-dw2-fde.h: Likewise.
26878         * unwind-dw2.c: Likewise.
26879         * unwind-dw2.h: Likewise.
26880         * unwind-generic.h: Likewise.
26881         * unwind-pe.h: Likewise.
26882         * unwind-sjlj.c: Likewise.
26883         * unwind.inc: Likewise.
26884         * config/arm/neon-gen.ml: Change generated copyright header to
26885         refer to version 3 of the GNU General Public License with
26886         version 3.1 of the GCC Runtime Library Exception and to point
26887         readers at the COPYING3 and COPYING3.RUNTIME files and the
26888         FSF's license web page.
26889         * config/arm/arm_neon.h: Regenerate.
26890
26891 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
26892
26893         * config/cris/cris.md: Change copyright header to refer to version
26894         3 of the GNU General Public License.
26895         * doc/install.texi2html: Change copyright header to refer to version
26896         3 of the GNU General Public License and to point readers at the
26897         COPYING3 file and the FSF's license web page.
26898         * config/vax/linux.h: Likewise.
26899
26900 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
26901
26902         * config/i386/i386.md (cmpcc): New.
26903         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
26904         (sync_compare_and_swap_cc*): Delete.
26905
26906         * config/s390/s390.c (s390_compare_emitted): Remove.
26907         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
26908         s390_compare_emitted used to be handled.  Assert that modes match.
26909         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
26910         refer to sync_compare_and_swap_ccsi.
26911         * config/s390/s390.h (s390_compare_emitted): Remove.
26912         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
26913         instead of s390_compare_emitted.
26914         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
26915         instead of s390_compare_emitted.
26916         * config/s390/s390.md (cmpcc): New.
26917         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
26918         CC_REGNUM, do not pretend it's set.
26919         (sync_compare_and_swap_cc*): Delete.
26920         * config/s390/predicates.md (cc_reg_operand): New.
26921
26922         * expr.c (sync_compare_and_swap_cc): Delete.
26923         * optabs.h (sync_compare_and_swap_cc): Delete.
26924         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
26925         is being used with can_compare_p.
26926         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
26927         (find_cc_set): New.
26928         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
26929         look for a MODE_CC set instead.  Use emit_store_flag.
26930         (expand_compare_and_swap_loop): Likewise, with some additional
26931         complication to avoid a force_reg when useless.  Use
26932         emit_cmp_and_jump_insns.
26933         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
26934         * doc/md.texi (sync_compare_and_swap_cc): Merge with
26935         sync_compare_and_swap documentation.
26936
26937 2009-04-09  Jan Hubicka  <jh@suse.cz>
26938
26939         * except.c (find_prev_try): Break out from ....
26940         (duplicate_eh_regions): ... here; properly update prev_try pointers
26941         when duplication part of tree.
26942         (dump_eh_tree): Improve dumping.
26943         (verify_eh_region): New.
26944         (verify_eh_tree): Use it.
26945
26946 2009-04-06  Richard Guenther  <rguenther@suse.de>
26947
26948         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
26949         &ARRAY addresses by adjusting their types and prepending
26950         a conversion.
26951         * tree-cfg.c (verify_gimple_assign_single): Verify that
26952         addresses are correct.
26953
26954 2009-04-09  Richard Guenther  <rguenther@suse.de>
26955
26956         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
26957         indices into an array reference if possible.
26958         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
26959         Fold POINTER_PLUS_EXPR statements with invariant address.
26960
26961 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
26962
26963         PR target/39634
26964         * config.gcc (powerpc64-*-linux*): Always build biarch.
26965
26966 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
26967
26968         PR c/39613
26969         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
26970         it and pedwarn if this results in an INTEGER_CST.
26971
26972 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26973
26974         * doc/install.texi: Update minimum GMP version.  Remove obsolete
26975         text in MPFR section.
26976
26977 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
26978
26979         * dwarf2out.c (class_scope_p): New static inline.
26980         (class_or_namespace_scope_p): Use it.
26981         (gen_variable_die): Use DW_TAG_member tag for static data member
26982         declarations instead of DW_TAG_variable.
26983
26984         PR middle-end/39573
26985         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
26986         variables.
26987
26988 2009-04-08  Richard Guenther  <rguenther@suse.de>
26989
26990         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
26991         valueize random data.
26992
26993 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
26994
26995         * config.gcc (aix tm_file):  Add aix-stdint.h.
26996         (aix tm clause use_gcc_stdint):  Set to wrap.
26997         * config/rs6000/aix-stdint.h:  New file.
26998
26999 2009-04-08  Richard Guenther  <rguenther@suse.de>
27000
27001         PR middle-end/36291
27002         * tree-dfa.c (add_referenced_var): Do not recurse into
27003         global initializers.
27004         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
27005         exposed variables.
27006         (fold_const_aggregate_ref): Likewise.
27007
27008 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
27009
27010         * recog.c (ordered_comparison_operator): New.
27011         * gensupport.c (std_preds): Add it.
27012         * doc/md.texi (Machine-Independent Predicates): Document it.
27013
27014 2009-04-08  Jan Hubicka  <jh@suse.cz>
27015
27016         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
27017         * function.h (rtl_eh): Remove exception_handler_label_map.
27018         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
27019         remove_exception_handler_label, for_each_eh_label_1): Remove.
27020         (rtl_remove_unreachable_regions): Remove.
27021         (convert_from_eh_region_ranges): Do not remove unreachable regions.
27022         (find_exception_handler_labels): Don't build the hashtable.
27023         (maybe_remove_eh_handler): Remove.
27024         (for_each_eh_label): Rewrite to walk the tree.
27025         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
27026         * except.h (maybe_remove_eh_handler): Remove.
27027         * passes.c (init_optimization_passes): Schedule second EH cleanup
27028         before out-of-ssa.
27029         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
27030         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
27031
27032 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
27033
27034         * genoutput.c (validate_optab_operands): New.
27035         (gen_insn, gen_expand): Call it.
27036
27037         * genflags.c (gen_insn): Detect misused iterators.
27038         (main): Pass line_no to gen_insn, exit with status 1 on error.
27039
27040         * genextract.c (line_no): Make global.
27041         (VEC_safe_set_locstr): Change assertion to error message.
27042         (main): Exit with status 1 on error.
27043
27044 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
27045
27046         PR c/39614
27047         PR c/39673
27048         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
27049         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
27050         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
27051         * c-convert.c (convert): Do not call fold on results of conversion
27052         functions when the result is a C_MAYBE_CONST_EXPR.
27053         * c-parser.c (c_parser_postfix_expression): Do not fold condition
27054         of __builtin_choose_expr.
27055         * c-typeck.c (remove_c_maybe_const_expr): New.
27056         (build_unary_op, build_conditional_expr, build_compound_expr,
27057         build_binary_op, c_objc_common_truthvalue_conversion): Call
27058         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
27059         integer operands.
27060
27061 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
27062
27063         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
27064         CODE to produce a new one. Add a prototype to use fold_convert_const
27065
27066 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
27067
27068         PR bootstrap/39660
27069         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
27070         mix declarations and code.
27071
27072 2009-04-08  Ben Elliston  <bje@au.ibm.com>
27073
27074         * gcc.c: Replace `CC' with `GCC' throughout.
27075
27076 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
27077
27078         * doc/invoke.texi: Document Atom support.
27079
27080 2009-04-07  Jason Merrill  <jason@redhat.com>
27081
27082         PR c++/25185
27083         * c-common.h, c-common.c: Add flag_pretty_templates.
27084         * c-opts.c (c_common_handle_option): Set it.
27085         * c.opt: Add -fno-pretty-templates.
27086         * doc/invoke.texi (C++ Dialect Options): Likewise.
27087
27088 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
27089
27090         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
27091         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
27092         (ia64_expand_builtin): Likewise.
27093
27094 2009-04-07  Martin Jambor  <mjambor@suse.cz>
27095
27096         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
27097         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
27098         ADDR_EXPRS are include too.
27099
27100 2009-04-07  Richard Guenther  <rguenther@suse.de>
27101
27102         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
27103         decls are only used if passes as parameters or if they are
27104         local statics and the call is not to a builtin.
27105         (call_may_clobber_ref_p_1): Likewise.
27106
27107 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27108
27109         * expr.c (do_store_flag): Remove last argument.  Simplify code
27110         to avoid duplication of tests already done by can_compare_p.
27111         (expand_expr_real_1): Adjust caller.
27112
27113 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27114
27115         * optabs.c (can_compare_p): Test the predicate of a
27116         cbranch and cstore pattern.
27117
27118 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27119
27120         * expr.c (convert_move): Use emit_store_flag instead of
27121         "emulating" it.
27122
27123 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27124
27125         * config/i386/i386.c (ix86_compare_emitted): Remove.
27126         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
27127         ix86_compare_op0 like ix86_compare_emitted used to be handled.
27128         * config/i386/i386.h (ix86_compare_emitted): Remove.
27129         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
27130         instead of ix86_compare_emitted.
27131         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
27132
27133 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
27134
27135         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
27136         Add t-sysroot-suffix to tmake_file.
27137         * config/print-sysroot-suffix.sh: New file.
27138         * config/t-sysroot-suffix: New file.
27139
27140 2009-04-07  Ben Elliston  <bje@au.ibm.com>
27141
27142         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
27143         as the latter produces a warning when the target does not support
27144         infinity.
27145
27146 2009-04-07  Ben Elliston  <bje@au.ibm.com>
27147
27148         * dfp.c: Replace type punning assignments with memcpy throughout.
27149         * Makefile.in (dfp.o-warn): Remove.
27150
27151 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
27152
27153         PR target/39634
27154         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
27155         Include soft-fp/t-softfp after rs6000/t-linux64.
27156
27157 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
27158
27159         * stor-layout.c (set_sizetype): Use the full precision of their
27160         machine mode for bitsize types.
27161
27162 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
27163
27164         * config/i386/i386.md: Revert 2 accidental checkins.
27165
27166 2009-04-06  Joey Ye  <joey.ye@intel.com>
27167             Xuepeng Guo  <xuepeng.guo@intel.com>
27168             H.J. Lu  <hongjiu.lu@intel.com>
27169
27170         Atom pipeline model, tuning and insn selection.
27171         * config.gcc (atom): Add atom config options and target.
27172
27173         * config/i386/atom.md: New.
27174
27175         * config/i386/i386.c (atom_cost): New cost.
27176         (m_ATOM): New macro flag.
27177         (initial_ix86_tune_features): Set m_ATOM.
27178         (x86_accumulate_outgoing_args): Likewise.
27179         (x86_arch_always_fancy_math_387): Likewise.
27180         (processor_target): Add Atom cost.
27181         (cpu_names): Add Atom cpu name.
27182         (override_options): Set Atom ISA.
27183         (ix86_issue_rate): New case PROCESSOR_ATOM.
27184         (ix86_adjust_cost): Likewise.
27185
27186         * config/i386/i386.h (TARGET_ATOM): New target macro.
27187         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
27188         (TARGET_OPT_AGU): New target option.
27189         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
27190         (processor_type): Add PROCESSOR_ATOM.
27191
27192         * config/i386/i386.md (cpu): Add new value "atom".
27193         (use_carry, movu): New attr.
27194         (atom.md): Include atom.md.
27195         (adddi3_carry_rex64): Set attr "use_carry".
27196         (addqi3_carry): Likewise.
27197         (addhi3_carry): Likewise.
27198         (addsi3_carry): Likewise.
27199         (*addsi3_carry_zext): Likewise.
27200         (subdi3_carry_rex64): Likewise.
27201         (subqi3_carry): Likewise.
27202         (subhi3_carry): Likewise.
27203         (subsi3_carry): Likewise.
27204         (x86_movdicc_0_m1_rex64): Likewise.
27205         (*x86_movdicc_0_m1_se): Likewise.
27206         (x86_movsicc_0_m1): Likewise.
27207         (*x86_movsicc_0_m1_se): Likewise.
27208         (*adddi_1_rex64): Emit add insn as much as possible.
27209         (*addsi_1): Likewise.
27210         (return_internal): Set atom_unit.
27211         (return_internal_long): Likewise.
27212         (return_pop_internal): Likewise.
27213         (*rcpsf2_sse): Set atom_sse_attr attr.
27214         (*qrt<mode>2_sse): Likewise.
27215         (*prefetch_sse): Likewise.
27216
27217         * config/i386/i386-c.c (ix86_target_macros_internal): New case
27218         PROCESSOR_ATOM.
27219         (ix86_target_macros_internal): Likewise.
27220
27221         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
27222         (*prefetch_sse_rex): Likewise.
27223         (sse_rcpv4sf2): Likewise.
27224         (sse_vmrcpv4sf2): Likewise.
27225         (sse_sqrtv4sf2): Likewise.
27226         (<sse>_vmsqrt<mode>2): Likewise.
27227         (sse_ldmxcsr): Likewise.
27228         (sse_stmxcsr): Likewise.
27229         (*sse_sfence): Likewise.
27230         (sse2_clflush): Likewise.
27231         (*sse2_mfence): Likewise.
27232         (*sse2_lfence): Likewise.
27233         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
27234         (<sse>_movup<ssemodesuffixf2c>): Likewise.
27235         (avx_movdqu<avxmodesuffix>): Likewise.
27236         (avx_lddqu<avxmodesuffix>): Likewise.
27237         (sse2_movntv2di): Change attr "type" to "ssemov".
27238         (sse2_movntsi): Likewise.
27239         (rsqrtv8sf2): Change attr "type" to "sseadd".
27240         (sse3_addsubv2df3): Set attr "atom_unit".
27241         (sse3_h<plusminus_insn>v4sf3): Likewise.
27242         (*sse2_pmaddwd): Likewise.
27243         (*vec_extractv2di_1_rex64): Likewise.
27244         (*vec_extractv2di_1_avx): Likewise.
27245         (sse2_psadbw): Likewise.
27246         (ssse3_phaddwv8hi3): Likewise.
27247         (ssse3_phaddwv4hi3): Likewise.
27248         (ssse3_phadddv4si3): Likewise.
27249         (ssse3_phadddv2si3): Likewise.
27250         (ssse3_phaddswv8hi3): Likewise.
27251         (ssse3_phaddswv4hi3): Likewise.
27252         (ssse3_phsubwv8hi3): Likewise.
27253         (ssse3_phsubwv4hi3): Likewise.
27254         (ssse3_phsubdv4si3): Likewise.
27255         (ssse3_phsubdv2si3): Likewise.
27256         (ssse3_phsubswv8hi3): Likewise.
27257         (ssse3_phsubswv4hi3): Likewise.
27258         (ssse3_pmaddubsw128): Likewise.
27259         (sse3_pmaddubsw: Likewise.
27260         (ssse3_palignrti): Likewise.
27261         (ssse3_palignrdi): Likewise.
27262
27263 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
27264
27265         * doc/install.texi (Specific): Fix two cross-references to MinGW.
27266
27267 2009-04-06  Richard Guenther  <rguenther@suse.de>
27268
27269         PR tree-optimization/28868
27270         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
27271         of which PHI results we inserted.
27272         (insert_into_preds_of_block): Record inserted PHIs.
27273         (eliminate): Eliminate redundant PHI nodes.
27274         (init_pre): Init inserted_phi_names.
27275
27276 2009-04-06  Richard Guenther  <rguenther@suse.de>
27277
27278         PR tree-optimization/39643
27279         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
27280         IMAGPART_EXPRs of complex constants.
27281         (execute_fold_all_builtins): If we folded a call queue
27282         TODO_update_address_taken.
27283
27284 2009-04-06  Jan Hubicka  <jh@suse.cz>
27285
27286         PR middle-end/39659
27287         * except.c (remove_unreachable_regions): Propagate may_contain_throw
27288         flag.
27289
27290 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
27291
27292         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
27293         delay slot.
27294         (ic_invalidate_array): Likewise.
27295
27296 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
27297
27298         * calls.c (emit_library_call_value_1): Fix a problem with parameter
27299         alignment for library calls.
27300
27301 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
27302
27303         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
27304         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
27305         * config/i386/mingw-stdint.h:  New file.
27306
27307 2009-04-05  Richard Guenther  <rguenther@suse.de>
27308
27309         PR tree-optimization/39648
27310         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
27311         our &A vs. &A[0] IL deficiencies.
27312
27313 2009-04-04  Jan Hubicka  <jh@suse.cz>
27314
27315         * except.c (sjlj_find_directly_reachable_regions): Be ready for
27316         removed toplevel regions.
27317         (sjlj_mark_call_sites): Likewise.
27318
27319 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
27320
27321         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
27322         (cygwin tm clause use_gcc_stdint):  Set to wrap.
27323         * config/i386/cygwin-stdint.h:  New file.
27324
27325 2009-04-04  Richard Guenther  <rguenther@suse.de>
27326
27327         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
27328         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
27329         single-argument PHIs if we are in loop-closed SSA form.
27330         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
27331         for the pre-condition.
27332         (slpeel_tree_peel_loop_to_edge): Likewise.
27333         (vect_build_loop_niters): Take an optional sequence to append stmts.
27334         (vect_generate_tmps_on_preheader): Likewise.
27335         (vect_do_peeling_for_loop_bound): Take extra guards for the
27336         pre-condition.
27337         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
27338         the cost model check.
27339         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
27340         guards if we are going to peel.  Do not apply versioning in that case.
27341         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
27342         (vect_do_peeling_for_loop_bound): Likewise.
27343         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
27344         loop bound only record extra pre-conditions, do not apply loop
27345         versioning.
27346
27347 2009-04-04  Richard Guenther  <rguenther@suse.de>
27348
27349         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
27350         renaming code.
27351
27352 2009-04-04  Jan Hubicka  <jh@suse.cz>
27353
27354         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
27355         last_basic_block for size of bb->index indexed array.
27356         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
27357         compute_out, link_btr_uses, build_btr_def_use_webs,
27358         build_btr_def_use_webs, migrate_btr_defs): Likewise.
27359
27360 2009-04-04  Jan Hubicka  <jh@suse.cz>
27361
27362         * except.c (remove_eh_handler_and_replace): Break out from ...
27363         (remove_eh_handler): ... here.
27364         (bring_to_root): New function.
27365         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
27366         handled ones, bring others to root of tree.
27367
27368 2009-04-04  Jan Hubicka  <jh@suse.cz>
27369
27370         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
27371         (all_phis_safe_to_merge): New function.
27372         (update_info): New structure.
27373         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
27374         (cleanup_empty_eh): Update SSA if possible.
27375
27376 2009-04-04  Richard Guenther  <rguenther@suse.de>
27377
27378         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
27379         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
27380         (append_vuse): Likewise.
27381
27382 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
27383
27384         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
27385         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
27386         instead of REG_UNSAVED for DW_CFA_undefined.
27387         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
27388         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
27389         outermost frame.
27390
27391 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
27392
27393         PR target/39501
27394         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
27395
27396 2009-04-04  Richard Guenther  <rguenther@suse.de>
27397
27398         PR tree-optimization/8781
27399         PR tree-optimization/37892
27400         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
27401         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
27402         (valueize_refs): Call it for *& valueizations.
27403         (shared_reference_ops_from_ref): Rename to ...
27404         (valueize_shared_reference_ops_from_ref): ... this and valueize.
27405         (shared_reference_ops_from_call): Rename to ...
27406         (valueize_shared_reference_ops_from_call): ... this and valueize.
27407         (vn_reference_lookup): Update.
27408         (visit_reference_op_call): Likewise.
27409         * tree-ssa-pre.c (phi_translate_1): Fold *&.
27410         (eliminate): Value-replace the call address in call statements.
27411
27412 2009-04-04  Richard Guenther  <rguenther@suse.de>
27413
27414         PR tree-optimization/39636
27415         * tree-ssa-forwprop.c
27416         (forward_propagate_addr_into_variable_array_index): Check for
27417         GIMPLE_ASSIGN before accessing the rhs code.
27418
27419 2009-04-03  Jason Merrill  <jason@redhat.com>
27420
27421         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
27422
27423 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
27424
27425         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
27426         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
27427         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
27428         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
27429         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
27430         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
27431         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
27432         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
27433         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
27434         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
27435         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
27436         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
27437         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
27438         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
27439         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
27440         Use fr_reg_or_fp01_operand instead of fr_register_operand
27441
27442         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
27443         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
27444         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
27445
27446 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
27447
27448         PR rtl-optimization/39607
27449         PR rtl-optimization/39631
27450
27451         Revert:
27452
27453         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
27454         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
27455         instead of DF_LR_OUT.
27456         * ira-lives.c (process_bb_node_lives): Ditto.
27457         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
27458         instead of DF_LR_{OUT,IN}.
27459         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
27460         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
27461
27462 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
27463
27464         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
27465         (execute_lower_omp): Always run but take the short way out if -fopenmp
27466         is not given.
27467         (gate_lower_omp): Remove, forcing the pass manager to always run the
27468         pass and always set PROP_gimple_lomp.
27469         (pass_lower_omp): Remove gate function.
27470         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
27471         PROP_trees.  Instead, require it.
27472         * ipa-cp.c (pass_ipa_cp): Likewise.
27473         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
27474         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
27475         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
27476         and PROP_gimple_leh.
27477
27478 2009-04-03  Richard Guenther  <rguenther@suse.de>
27479
27480         PR middle-end/13146
27481         PR tree-optimization/23940
27482         PR tree-optimization/33237
27483         PR middle-end/33974
27484         PR middle-end/34093
27485         PR tree-optimization/36201
27486         PR tree-optimization/36230
27487         PR tree-optimization/38049
27488         PR tree-optimization/38207
27489         PR tree-optimization/38230
27490         PR tree-optimization/38301
27491         PR tree-optimization/38585
27492         PR middle-end/38895
27493         PR tree-optimization/38985
27494         PR tree-optimization/39299
27495         * tree-ssa-structalias.h: Remove.
27496         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
27497         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
27498         (struct vuse_element_d): Remove.
27499         (struct vuse_vec_d): Likewise.
27500         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
27501         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
27502         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
27503         VUSE_ELEMENT_VAR): Likewise.
27504         (struct voptype_d): Likewise.
27505         (NUM_VOP_FREE_BUCKETS): Likewise.
27506         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
27507         (struct stmt_operands_d): Remove.
27508         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
27509         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
27510         VDEF_NUM, VDEF_VECT): Likewise.
27511         (copy_virtual_operands): Remove.
27512         (operand_build_cmp): Likewise.
27513         (create_ssa_artificial_load_stmt): Likewise.
27514         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
27515         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
27516         vuse_index and mayuse_index members.  Pack and move done and iter_type
27517         members to the front.
27518         (SSA_OP_VMAYUSE): Remove.
27519         (SSA_OP_VIRTUAL_USES): Adjust.
27520         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
27521         (unlink_stmt_vdef): Declare.
27522         (add_to_addressable_set): Remove.
27523         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
27524         (vrp_visit_stmt): Likewise.
27525         * doc/tree-ssa.texi (Alias analysis): Update.
27526         * doc/invoke.texi (max-aliased-vops): Remove docs.
27527         (avg-aliased-vops): Likewise.
27528         * tree-into-ssa.c (syms_to_rename): Remove.
27529         (need_to_update_vops_p): Likewise.
27530         (need_to_initialize_update_ssa_p): Rename to ...
27531         (update_ssa_initialized_fn): ... this.  Track function we are
27532         initialized for.
27533         (symbol_marked_for_renaming): Simplify.
27534         (add_new_name_mapping): Do not set need_to_update_vops_p.
27535         (dump_currdefs): Use SYMS_TO_RENAME.
27536         (rewrite_update_stmt): Always walk all uses/defs.
27537         (dump_update_ssa): Adjust.
27538         (init_update_ssa): Take function argument.  Track what we are
27539         initialized for.
27540         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
27541         (create_new_def_for): Initialize for cfun, assert we are initialized
27542         for cfun.
27543         (mark_sym_for_renaming): Simplify.
27544         (mark_set_for_renaming): Do not initialize update-ssa.
27545         (need_ssa_update_p): Simplify.  Take function argument.
27546         (name_mappings_registered_p): Assert we ask for the correct function.
27547         (name_registered_for_update_p): Likewise.
27548         (ssa_names_to_replace): Likewise.
27549         (release_ssa_name_after_update_ssa): Likewise.
27550         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
27551         (dump_decl_set): Do not print a newline.
27552         (debug_decl_set): Do it here.
27553         (dump_update_ssa): And here.
27554         * tree-ssa-loop-im.c (move_computations): Adjust.
27555         (movement_possibility): Likewise.
27556         (determine_max_movement): Likewise.
27557         (gather_mem_refs_stmt): Likewise.
27558         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
27559         or NAME_MEMORY_TAG.
27560         * tree-complex.c (update_all_vops): Remove.
27561         (expand_complex_move): Adjust.
27562         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
27563         Simplify test for memory referencing statement.  Exclude
27564         non-invariant ADDR_EXPRs.
27565         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
27566         * tree-loop-distribution.c (generate_memset_zero): Adjust.
27567         (rdg_flag_uses): Likewise.
27568         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
27569         related code.
27570         (tree_optimize_tail_calls_1): Also split the
27571         edge from the entry block if we have degenerate PHI nodes in
27572         the first basic block.
27573         * tree.c (init_ttree): Remove memory-tag related code.
27574         (tree_code_size): Likewise.
27575         (tree_node_structure): Likewise.
27576         (build7_stat): Re-write to be build6_stat.
27577         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
27578         (SSA_VAR_P): Adjust.
27579         (struct tree_memory_tag): Remove.
27580         (struct tree_memory_partition_tag): Likewise.
27581         (union tree_node): Adjust.
27582         (build7): Re-write to be build6.
27583         * tree-pass.h (pass_reset_cc_flags): Remove.
27584         (TODO_update_address_taken): New flag.
27585         (pass_simple_dse): Remove.
27586         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
27587         * params.h (MAX_ALIASED_VOPS): Remove.
27588         (AVG_ALIASED_VOPS): Likewise.
27589         * omp-low.c (expand_omp_taskreg): Update SSA form.
27590         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
27591         aliases the lhs in a copy stmt.
27592         * tree-ssa-dse.c (struct address_walk_data): Remove.
27593         (memory_ssa_name_same): Likewise.
27594         (memory_address_same): Likewise.
27595         (get_kill_of_stmt_lhs): Likewise.
27596         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
27597         unused stores.  Look through PHI nodes into post-dominated regions.
27598         (dse_optimize_stmt): Simplify.  Properly remove stores.
27599         (tree_ssa_dse): Compute dominators.
27600         (execute_simple_dse): Remove.
27601         (pass_simple_dse): Likewise.
27602         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
27603         gimple_loaded_syms and gimple_stored_syms computation.
27604         * toplev.c (dump_memory_report): Dump alias and pta stats.
27605         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
27606         (vn_reference_eq): Likewise.
27607         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
27608         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
27609         valueize_vuses): Remove.
27610         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
27611         (get_def_ref_stmt_vuse): ... this.
27612         (vn_reference_lookup_2): New function.
27613         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
27614         walking equivalent vuses.  Simplify.
27615         (vn_reference_lookup): Likewise.
27616         (vn_reference_insert): Likewise.
27617         (vn_reference_insert_pieces): Likewise.
27618         (visit_reference_op_call): Simplify.
27619         (visit_reference_op_load): Likewise.
27620         (visit_reference_op_store): Likewise.
27621         (init_scc_vn): Remove shared_lookup_vuses initialization.
27622         (free_scc_vn): Remove shared_lookup_vuses freeing.
27623         (sort_vuses, sort_vuses_heap): Remove.
27624         (get_ref_from_reference_ops): Export.
27625         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
27626         vector with single vuse pointer.
27627         (vn_reference_lookup_pieces, vn_reference_lookup,
27628         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
27629         (shared_vuses_from_stmt): Remove.
27630         (get_ref_from_reference_ops): Declare.
27631         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
27632         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
27633         memory-tag related code.
27634         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
27635         (likely_value): Add comment, skip static-chain of call statements.
27636         (surely_varying_stmt_p): Adjust.
27637         (gimplify_and_update_call_from_tree): Likewise.
27638         (execute_fold_all_builtins): Do not rebuild alias info.
27639         (gimplify_and_update_call_from_tree): Properly update VOPs.
27640         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
27641         (copy_ref_info): Remove memory-tag related code.
27642         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
27643         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
27644         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
27645         computation.
27646         * tree-ssa-dom.c (gimple_p): Remove typedef.
27647         (eliminate_redundant_computations): Adjust.
27648         (record_equivalences_from_stmt): Likewise.
27649         (avail_expr_hash): Likewise.
27650         (avail_expr_eq): Likewise.
27651         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
27652         (stmt_makes_single_load): Likewise.
27653         (stmt_makes_single_store): Likewise.
27654         * tree-ssa-alias.c: Rewrite completely.
27655         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
27656         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
27657         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
27658         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
27659         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
27660         Remove public functions.
27661         (pass_reset_cc_flags): Remove.
27662         (pass_build_alias): Move ...
27663         * tree-ssa-structalias.c (pass_build_alias): ... here.
27664         * tree-ssa-alias.c (may_be_aliased): Move ...
27665         * tree-flow-inline.h (may_be_aliased): ... here.
27666         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
27667         count_uses_and_derefs): Move ...
27668         * gimple.c: ... here.
27669         * gimple.h (count_uses_and_derefs): Declare.
27670         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
27671         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
27672         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
27673         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
27674         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
27675         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
27676         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
27677         New functions.
27678         * tree-dfa.c (refs_may_alias_p): Move ...
27679         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
27680         * tree-ssa-alias.h: New file.
27681         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
27682         (statement_sink_location): Likewise.
27683         * opts.c (decode_options): Do not adjust max-aliased-vops or
27684         avg-aliased-vops values.
27685         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
27686         (TV_CALL_CLOBBER): Likewise.
27687         (TV_FLOW_SENSITIVE): Likewise.
27688         (TV_FLOW_INSENSITIVE): Likewise.
27689         (TV_MEMORY_PARTITIONING): Likewise.
27690         (TV_ALIAS_STMT_WALK): New timevar.
27691         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
27692         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
27693         (get_address_description): Remove memory-tag related code.
27694         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
27695         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
27696         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
27697         and immediate uses in statements.  Document.
27698         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
27699         (dump_symbols): Remove.
27700         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
27701         * alias.c (get_deref_alias_set): New function split out from ...
27702         (get_alias_set): ... here.
27703         * alias.h (get_deref_alias_set): Declare.
27704         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
27705         type parameter.  Remove restrict pointer handling.  Create a
27706         ref-all pointer in case type-based alias sets do not conflict.
27707         (vect_analyze_data_refs): Remove SMT related code.
27708         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
27709         (vectorizable_load): Likewise.
27710         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
27711         (DR_SYMBOL_TAG, DR_VOPS): Remove.
27712         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
27713         Ignore vops and SMTs.
27714         (dr_analyze_alias): Likewise..
27715         (free_data_ref): Likewise.
27716         (create_data_ref): Likewise.
27717         (analyze_all_data_dependences): Likewise.
27718         (get_references_in_stmt): Adjust.
27719         * tree-flow-inline.h (gimple_aliases_computed_p,
27720         gimple_addressable_vars, gimple_call_clobbered_vars,
27721         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
27722         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
27723         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
27724         gimple_mem_ref_stats): Remove.
27725         (gimple_vop): New function.
27726         (op_iter_next_use): Remove vuses and mayuses cases.
27727         (op_iter_next_def): Remove vdefs case.
27728         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
27729         (clear_and_done_ssa_iter): Do not set removed fields.
27730         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
27731         Assert we are not iterating over vuses or vdefs if not also
27732         iterating over uses or defs.
27733         (op_iter_init_use): Likewise.
27734         (op_iter_init_def): Likewise.
27735         (op_iter_next_vdef): Remove.
27736         (op_iter_next_mustdef): Likewise.
27737         (op_iter_init_vdef): Likewise.
27738         (compare_ssa_operands_equal): Likewise.
27739         (link_use_stmts_after): Handle vuse operand.
27740         (is_call_used): Use is_call_clobbered.
27741         (is_call_clobbered): Global variables are always call clobbered,
27742         query the call-clobbers bitmap.
27743         (mark_call_clobbered): Ignore global variables.
27744         (clear_call_clobbered): Likewise.
27745         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
27746         virtual operands sanity check.
27747         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
27748         Remove.
27749         (TARGET_MEM_REF): Remove TMR_TAG operand.
27750         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
27751         Remove call-clobber related code.
27752         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
27753         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
27754         partitions or escape reason.
27755         (get_single_def_stmt, get_single_def_stmt_from_phi,
27756         get_single_def_stmt_with_phi): Remove.
27757         (dump_referenced_vars): Tidy.
27758         (get_ref_base_and_extent): Allow bare decls.
27759         (collect_dfa_stats): Adjust.
27760         * graphite.c (rename_variables_in_stmt): Adjust.
27761         (graphite_copy_stmts_from_block): Likewise.
27762         (translate_clast): Likewise.
27763         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
27764         (EXPR_DIES): New.
27765         (translate_vuse_through_block): Use the oracle.
27766         (phi_translate_1): Adjust.
27767         (value_dies_in_block_x): Use the oracle.  Cache the outcome
27768         in EXPR_DIES.
27769         (valid_in_sets): Check if the VUSE for
27770         a REFERENCE is available.
27771         (eliminate): Do not remove stmts during elimination,
27772         instead queue and remove them afterwards.
27773         (do_pre): Do not rebuild alias info.
27774         (pass_pre): Run TODO_rebuild_alias before PRE.
27775         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
27776         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
27777         (mark_all_v_defs_stmt): Remove.
27778         (mark_all_v_defs_seq): Adjust.
27779         (sra_replace): Likewise.
27780         (scalarize_use): Likewise.
27781         (scalarize_copy): Likewise.
27782         (scalarize_init): Likewise.
27783         (scalarize_ldst): Likewise.
27784         (todoflags): Remove.
27785         (tree_sra): Do not rebuild alias info.
27786         (tree_sra_early): Adjust.
27787         (pass_sra): Run TODO_update_address_taken before SRA.
27788         * tree-predcom.c (set_alias_info): Remove.
27789         (prepare_initializers_chain): Do not call it.
27790         (mark_virtual_ops_for_renaming): Adjust.
27791         (mark_virtual_ops_for_renaming_list): Remove.
27792         (initialize_root_vars): Adjust.
27793         (initialize_root_vars_lm): Likewise.
27794         (prepare_initializers_chain): Likewise.
27795         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
27796         (may_propagate_copy_into_stmt): Likewise.
27797         (merge_alias_info): Do nothing for now.
27798         (propagate_tree_value_into_stmt): Adjust.
27799         (stmt_may_generate_copy): Likewise.
27800         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
27801         not mark symbols for renaming.
27802         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
27803         with the same statement, make sure to update the new pointed-to one.
27804         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
27805         call statements, do not mark symbols for renaming.
27806         (mark_operand_necessary): Dump something.
27807         (ref_may_be_aliased): New function.
27808         (mark_aliased_reaching_defs_necessary_1): New helper function.
27809         (mark_aliased_reaching_defs_necessary): Likewise.
27810         (mark_all_reaching_defs_necessary_1): Likewise.
27811         (mark_all_reaching_defs_necessary): Likewise.
27812         (propagate_necessity): Do not process virtual PHIs.  For
27813         non-aliased loads mark all reaching definitions as necessary.
27814         For aliased loads and stores mark the immediate dominating
27815         aliased clobbers as necessary.
27816         (visited): New global static.
27817         (perform_tree_ssa_dce): Free visited bitmap after propagating
27818         necessity.
27819         (remove_dead_phis): Perform simple dead virtual PHI removal.
27820         (remove_dead_stmt): Properly unlink virtual operands when
27821         removing stores.
27822         (eliminate_unnecessary_stmts): Schedule PHI removal after
27823         stmt removal.
27824         * tree-ssa-ter.c (is_replaceable_p): Adjust.
27825         (process_replaceable): Likewise.
27826         (find_replaceable_in_bb): Likewise.
27827         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
27828         based on the single gimple vop.
27829         (verify_flow_insensitive_alias_info): Remove.
27830         (verify_flow_sensitive_alias_info): Likewise.
27831         (verify_call_clobbering): Likewise.
27832         (verify_memory_partitions): Likewise.
27833         (verify_alias_info): Likewise.
27834         (verify_ssa): Adjust..
27835         (execute_update_addresses_taken): Export.  Update SSA
27836         manually.  Optimize only when optimizing.  Use a local bitmap.
27837         (pass_update_address_taken): Remove TODO_update_ssa, add
27838         TODO_dump_func.
27839         (pass_update_address_taken): Just use TODO_update_address_taken.
27840         (init_tree_ssa): Do not initialize addressable_vars.
27841         (verify_ssa): Verify new VUSE / VDEF properties.
27842         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
27843         Do not call verify_alias_info.
27844         (delete_tree_ssa): Clear the VUSE, VDEF operands.
27845         Do not free the loaded and stored syms bitmaps.  Reset the escaped
27846         and callused solutions.  Do not free addressable_vars.
27847         Remove memory-tag related code.
27848         (warn_uninitialized_var): Aliases are always available.
27849         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
27850         * lambda-code.c (can_put_in_inner_loop): Adjust.
27851         (can_put_after_inner_loop): Likewise.
27852         (perfect_nestify): Likewise.
27853         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
27854         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
27855         (vectorizable_conversion): Do not mark symbols for renaming.
27856         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
27857         (expand_call_inline): Unlink the calls virtual operands before
27858         replacing it.
27859         (tree_function_versioning): Do not call update_ssa if we are not
27860         updating clones.  Simplify.
27861         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
27862         (propagate_with_phi): Likewise..
27863         * tree-outof-ssa.c (create_temp): Remove memory tag and call
27864         clobber code.  Assert we are not aliased or global.
27865         * tree-flow.h: Include tree-ssa-alias.h
27866         (enum escape_type): Remove.
27867         (struct mem_sym_stats_d): Likewise.
27868         (struct mem_ref_stats_d): Likewise.
27869         (struct gimple_df): Add vop member.  Remove global_var,
27870         call_clobbered_vars, call_used_vars, addressable_vars,
27871         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
27872         escaped and callused members.
27873         (struct ptr_info_def): Remove all members, add points-to solution
27874         member pt.
27875         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
27876         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
27877         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
27878         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
27879         (tree-ssa-alias.o): Likewise.
27880         (toplev.o): Add tree-ssa-alias.h
27881         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
27882         * gimple.c (gimple_set_bb): Fix off-by-one error.
27883         (is_gimple_reg): Do not handle memory tags.
27884         (gimple_copy): Also copy virtual operands.
27885         Delay updating the statement.  Do not reset loaded and stored syms.
27886         (gimple_set_stored_syms): Remove.
27887         (gimple_set_loaded_syms): Likewise.
27888         (gimple_call_copy_skip_args): Copy the virtual operands
27889         and mark the new statement modified.
27890         * tree-ssa-structalias.c (may_alias_p): Remove.
27891         (set_uids_in_ptset): Take the alias set to prune with as
27892         parameter.  Fold in the alias test of may_alias_p.
27893         (compute_points_to_sets): Compute whether a ptr is dereferenced
27894         in a local sbitmap.
27895         (process_constraint): Deal with &ANYTHING on the lhs, reject all
27896         other ADDRESSOF constraints on the lhs.
27897         (get_constraint_for_component_ref): Assert that we don't get
27898         ADDRESSOF constraints from the base of the reference.
27899         Properly generate UNKNOWN_OFFSET for DEREF if needed.
27900         (struct variable_info): Remove collapsed_to member.
27901         (get_varinfo_fc): Remove.
27902         (new_var_info): Do not set collapsed_to.
27903         (dump_constraint): Do not follow cycles.
27904         (dump_constraint_graph): Likewise.
27905         (build_pred_graph): Likewise.
27906         (build_succ_graph): Likewise.
27907         (rewrite_constraints): Likewise.
27908         (do_simple_structure_copy): Remove.
27909         (do_rhs_deref_structure_copy): Remove.
27910         (do_lhs_deref_structure_copy): Remove.
27911         (collapse_rest_of_var): Remove.
27912         (do_structure_copy): Re-implement.
27913         (pta_stats): New global variable.
27914         (dump_pta_stats): New function.
27915         (struct constraint_expr): Make offset signed.
27916         (UNKNOWN_OFFSET): Define special value.
27917         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
27918         (solution_set_expand): New helper function split out from ...
27919         (do_sd_constraint): ... here.
27920         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
27921         (do_ds_constraint): Likewise.
27922         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
27923         and CALLUSED = *CALLUSED.
27924         (set_union_with_increment): Make inc argument signed.
27925         (type_safe): Remove.
27926         (get_constraint_for_ptr_offset): Handle unknown and negative
27927         constant offsets.
27928         (first_vi_for_offset): Handle offsets before start.  Bail
27929         out early for offsets beyond the variable extent.
27930         (first_or_preceding_vi_for_offset): New function.
27931         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
27932         Together with ESCAPED = *ESCAPED this properly computes reachability.
27933         (find_what_var_points_to): New function.
27934         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
27935         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
27936         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
27937         pt_solutions_intersect): New functions.
27938         (compute_call_used_vars): Remove.
27939         (compute_may_aliases): New main entry into PTA computation.
27940         * gimple.h (gimple_p): New typedef.
27941         (struct gimple_statement_base): Remove references_memory_p.
27942         (struct gimple_statement_with_memory_ops_base): Remove
27943         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
27944         members.
27945         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
27946         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
27947         gimple_set_references_memory): Remove.
27948         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
27949         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
27950         New functions.
27951         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
27952         (verify_expr): Allow RESULT_DECL.
27953         (gimple_duplicate_bb): Do not copy virtual operands.
27954         (gimple_duplicate_sese_region): Adjust.
27955         (gimple_duplicate_sese_tail): Likewise.
27956         (mark_virtual_ops_in_region): Remove.
27957         (move_sese_region_to_fn): Do not call it.
27958         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
27959         and pass_simple_dse.
27960         (execute_function_todo): Handle TODO_update_address_taken,
27961         call execute_update_addresses_taken for TODO_rebuild_alias.
27962         (execute_todo): Adjust.
27963         (execute_one_pass): Init dump files early.
27964         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
27965         call-clobbered.
27966         (create_general_new_stmt): Clear vops.
27967         * tree-ssa-reassoc.c (get_rank): Adjust.
27968         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
27969         symbols for renaming.
27970         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
27971         (PARAM_AVG_ALIASED_VOPS): Likewise.
27972         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
27973         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
27974         * tree-ssa-operands.c: Simplify for new virtual operand representation.
27975         (operand_build_cmp, copy_virtual_operands,
27976         create_ssa_artificial_load_stmt, add_to_addressable_set,
27977         gimple_add_to_addresses_taken): Remove public functions.
27978         (unlink_stmt_vdef): New function.
27979
27980 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
27981
27982         * config.gcc (powerpc-*-linux*): Merge variants.
27983
27984 2009-04-02  Chao-ying Fu  <fu@mips.com>
27985             James Grosbach  <james.grosbach@microchip.com>
27986
27987         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
27988         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
27989         cop0_sp_offset.
27990         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
27991         keep_interrupts_masked_p, use_debug_exception_return_p.
27992         (mips_attribute_table): Add interrupt, use_shadow_register_set,
27993         keep_interrupts_masked, use_debug_exception_return.
27994         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
27995         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
27996         New functions.
27997         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
27998         (mips_print_operand): Process COP0 registers to print $0 .. $31
27999         correctly for GAS to process.
28000         (mips_interrupt_extra_call_saved_reg_p): New function.
28001         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
28002         extra registers.
28003         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
28004         (mips_compute_frame_info): Add supports for interrupt context that
28005         includes doubleword accumulators and COP0 registers.
28006         (mips_for_each_saved_acc): New function.
28007         (mips_for_each_saved_gpr_and_fpr): Change the function name from
28008         mips_for_each_saved_reg.
28009         (mips_save_reg): Save accumulators.
28010         (mips_kernel_reg_p): A new for_each_rtx callback.
28011         (mips_expand_prologue): Support interrupt handlers.
28012         (mips_restore_reg): Restore accumulators.
28013         (mips_expand_epilogue): Support interrupt handlers.
28014         (mips_can_use_return_insn): Return false for interrupt handlers.
28015         (mips_epilogue_uses): New function.
28016         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
28017         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
28018         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
28019         cop0_move): New instructions.
28020         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
28021         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
28022         defines.
28023         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
28024         New defines.
28025         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
28026         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
28027         interrupt handlers, we use K0 as the temporary register.
28028         (EPILOGUE_USES): Change to a function call.
28029         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
28030         handlers, we use K0 as the temporary register.
28031
28032         * doc/extend.texi (Function Attributes): Document interrupt,
28033         use_shadow_register_set, keep_interrupts_masked,
28034         use_debug_exception_return for MIPS attributes.
28035
28036 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
28037
28038         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
28039         Remove a number of t-files from tmake_file.
28040         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
28041         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
28042         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
28043         target_prototype, not TARGET_PROTOTYPE.
28044         (LINK_OS_GNU_SPEC): Define.
28045         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
28046         and darwin-ldoubdle.c.
28047
28048 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
28049
28050         PR driver/39293
28051         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
28052         (cpp_options): Ditto.
28053         (default_compilers): Ditto.
28054         (display_help): Ditto.
28055         (process_command): Ditto.
28056         (do_spec_1): Ditto.
28057         (set_input): Use lbasename instead of duplicate code.
28058         (save_temps_prefix): New static for -save-temps=obj.
28059         (save_temps_length): Ditto.
28060
28061         * doc/invoke.texi (-save-temps=obj): Document new variant to
28062         -save-temps switch.
28063
28064 2009-04-02  Jeff Law  <law@redhat.com>
28065
28066         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
28067         variable.
28068
28069 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
28070
28071         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
28072         * configure: Regenerated.
28073
28074 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28075
28076         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
28077         share the argument list.
28078
28079 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28080
28081         Merge
28082
28083         2009-02-12  Diego Novillo  <dnovillo@google.com>
28084
28085         * varpool.c (debug_varpool): New.
28086         * cgraph.h (debug_varpool): Declare.
28087
28088 2009-04-02  Jan Hubicka  <jh@suse.cz>
28089
28090         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
28091         pass.
28092
28093 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
28094
28095         * config/i386/i386.c (ix86_abi): Move initialization to ...
28096         (override_options): Here.
28097
28098 2009-04-02  Christian Bruel  <christian.bruel@st.com>
28099
28100         * config/sh/sh.c (sh_dwarf_register_span): New function.
28101         (TARGET_DWARF_REGISTER_SPAN): Define.
28102         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
28103
28104 2009-04-02  Ira Rosen  <irar@il.ibm.com>
28105
28106         PR tree-optimization/39595
28107         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
28108         interleaved loads group is not  greater than the SLP group size.
28109
28110 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28111
28112         * builtins.c (is_builtin_name): New.
28113         (called_as_built_in): Use is_builtin_name.
28114         * tree.h (is_builtin_name): New.
28115         * varasm.c (incorporeal_function_p): Use is_builtin_name
28116
28117 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
28118
28119         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
28120
28121 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
28122
28123         PR c++/26693
28124         * c-decl.c (clone_underlying_type): Move this ...
28125         * c-common.c (set_underlying_type): ... here.
28126         Also, make sure the function properly sets TYPE_STUB_DECL() on
28127         the newly created typedef variant type.
28128         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
28129         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
28130         points.
28131
28132 2009-04-02  Richard Guenther  <rguenther@suse.de>
28133
28134         PR tree-optimization/37221
28135         * tree-flow.h (degenerate_phi_result): Declare.
28136         * tree-ssa-dom.c (degenerate_phi_result): Export.
28137         * tree-scalar-evolution.c (analyze_initial_condition): If
28138         the initial condition is defined by a degenerate PHI node
28139         use the degenerate value.
28140
28141 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
28142
28143         PR rtl-optimization/39588
28144         * combine.c (merge_outer_ops): Do not set the constant when this
28145         is not necessary.
28146         (simplify_shift_const_1): Do not modify it either in this case.
28147
28148 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
28149
28150         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
28151         tuning is deprecated if -mtune value is set to an Itanium1 variant.
28152
28153 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
28154
28155         PR c/29027
28156         * c-lex.c (interpret_float): Default (no suffix) is double.
28157
28158 2009-04-1  Xinliang David Li  <davidxl@google.com>
28159
28160         * config/i386/i386.c (legitimate_constant_p): Recognize
28161         all one vector constant.
28162
28163 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28164
28165         * config/vax/vax.c: Add #includes to silence warnings.
28166         Change #include order to silence two warnings.
28167
28168 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28169
28170         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
28171         (ASM_SPEC): Pass -k to the assembler for PIC code.
28172
28173 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28174
28175         * config.gcc: Add vax-*-linux* to the switch.
28176         * config/vax/linux.h: New file. (TARGET_VERSION,
28177         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
28178
28179 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28180
28181         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
28182         Use predicate macros instead of GET_CODE() == foo.
28183         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
28184         ashlsi3, rotrsi3, <unnamed>): Likewise.
28185
28186 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28187
28188         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
28189         jbbccihi, jbbccisi): Remova trailing whitespace.
28190         * config/vax/constraints.md: Likewise.
28191         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
28192         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
28193         * config/vax/predicates.md: Likewise.
28194         * config/vax/vax.c (print_operand_address, vax_output_int_move,
28195         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
28196         * config/vax/vax.h: Likewise.
28197         * config/vax/vax.md (nonlocal_goto): Likewise.
28198
28199 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28200
28201         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
28202         (indirectable_address_p, adjacent_operands_p): Add spaces around
28203         braces.
28204         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
28205
28206 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28207
28208         * config/vax/vax.c (legitimate_constant_address_p,
28209         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
28210         index_term_p, reg_plus_index_p, legitimate_address_p,
28211         vax_mode_dependent_address_p): Update comments to match functions
28212         modified by the recent int->bool conversion.
28213
28214 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28215
28216         * config/vax/builtins.md: Update copyright message.
28217         * config/vax/constraints.md: Likewise.
28218         * config/vax/netbsd-elf.h: Likewise.
28219         * config/vax/predicates.md: Likewise.
28220         * config/vax/vax-protos.h: Likewise.
28221         * config/vax/vax.c: Likewise.
28222         * config/vax/vax.h: Likewise.
28223         * config/vax/vax.md: Likewise.
28224         * config/vax/vax.opt: Likewise.
28225
28226 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28227
28228         * config/vax/builtins.md (ffssi2, ffssi2_internal,
28229         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
28230         * config/vax/constraints.md (B, R): Likewise.
28231         * config/vax/predicates.md (external_memory_operand,
28232         nonimmediate_addsub_di_operand): Likewise.
28233         * config/vax/vax.c (vax_output_int_add): Likewise.
28234         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
28235         untyped_call): Likewise.
28236
28237 2009-04-01  Matt Thomas  <matt@3am-software.com>
28238
28239         * config/vax/predicates.md: New file.
28240         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
28241         external_const_operand, nonsymbolic_operand, external_memory_operand,
28242         indirect_memory_operand, indexed_memory_operand,
28243         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
28244         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
28245         predicate.
28246         * config/vax/constraints.md: New file.
28247         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
28248         New constraint.
28249         * config/vax/builtins.md: New file.
28250         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
28251         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
28252         jbbccisi): Define.
28253         * config/vax/vax.opt (mqmath): Add option.
28254         * config/vax/vax.md (isfx): Extend with DI.
28255         (VAXintQH, VAXintQHSD): Define.
28256         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
28257         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
28258         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
28259         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
28260         (movdi): Update constraints and use vax_output_int_move().
28261         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
28262         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
28263         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
28264         nonlocal_goto): New.
28265         (mov<mode>): Extend accepted operand types.
28266         (subdi3_old): Rename from subdi3, change update constraints and use
28267         a new implementation.
28268         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
28269         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
28270         MOVE_RATIO, CLEAR_RATIO): Define.
28271         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
28272         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
28273         (PRINT_OPERAND): Redefine using a function instead of inlined code.
28274         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
28275         (split_quadword_operands): Make static and really allow variable
28276         splitting.
28277         (print_operand_address): Update for PIC generation.
28278         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
28279         indexable_address_p, fixup_mathdi_operand,
28280         vax_expand_addsub_di_operands, adjacent_operands_p): New.
28281         (vax_float_literal, legitimate_constant_p,
28282         indirectable_constant_address_p, index_term_p,
28283         reg_plus_index_p): Return bool instead of int.
28284         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
28285         where needed.
28286         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
28287         generation.
28288         (vax_output_conditional_branch): Indent.
28289         (legitimate_constant_address_p, indirectable_constant_address_p,
28290         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
28291         vax_mode_dependent_address_p): Return bool instead of int, update for
28292         PIC generation.
28293         * config/vax/vax-protos.h (legitimate_constant_address_p,
28294         legitimate_constant_p, legitimate_address_p,
28295         vax_mode_dependent_address_p): Change declaration to bool.
28296         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
28297         vax_expand_addsub_di_operands, vax_output_int_subtract,
28298         vax_output_movmemsi): Declare.
28299         (split_quadword_operands, vax_float_literal): Delete declaration.
28300         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
28301         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
28302         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
28303         ASM_OUTPUT_DWARF_PCREL): Define.
28304         (ASM_SPEC): Change definition to allow PIC generation.
28305
28306 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
28307
28308         * doc/sourcebuild.texi: Update front-end requirements.
28309
28310 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28311
28312         PR target/39226
28313         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
28314         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
28315         (booldi3_internal3): Use boolean_or_operator instead of
28316         boolean_operator.
28317
28318 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
28319
28320         PR c/39605
28321         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
28322         declarator whose size is not an integer constant expression but
28323         folds to an integer constant, then treat it as a constant
28324         subsequently.
28325
28326 2009-04-01  Richard Guenther  <rguenther@suse.de>
28327
28328         * fold-const.c (fold_plusminus_mult_expr): Do not fold
28329         i * 4 + 2 to (i * 2 + 1) * 2.
28330
28331 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28332
28333         PR c/37772
28334         * c-parser.c (c_parser_asm_statement): Skip until close paren and
28335         return if c_parser_asm_string_literal returned NULL.
28336
28337 2009-04-01  Nick Clifton  <nickc@redhat.com>
28338
28339         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
28340         already defined.
28341         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
28342         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
28343         other typedefs to avoid conflicts with libgcc2.c.  Define labels
28344         to gain 16-bit bit-manipulation functions from libgcc2.c and then
28345         include it.
28346         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
28347         to gain 16-bit trapping arithmetic functions from libgcc2.c and
28348         then include it.
28349
28350 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
28351
28352         * varasm.c (default_function_rodata_section): Declare DOT as
28353         const char*.
28354
28355 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
28356             Andrey Galkin  <agalkin@hypercom.com>
28357
28358         PR/39492
28359         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
28360         Make object_name unique for each process.
28361
28362 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28363
28364         PR other/39591
28365         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
28366         addressable variables in the parallel that could go out of scope while
28367         running queued tasks.
28368
28369 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
28370
28371         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
28372         (CASE_VALUES_THRESHOLD): Redefine.
28373         * config/avr/avr.c (avr_override_options): Remove initialization of
28374         avr_case_values_threshold variable.
28375         (avr_case_values_threshold): Remove variable. Add new function.
28376         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
28377         * config/avr/avr.opt (mno-tablejump): Remove option.
28378         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
28379
28380 2009-04-01  DJ Delorie  <dj@redhat.com>
28381
28382         * varasm.c (default_function_rodata_section): Don't assume
28383         anything about where the first '.' in the section name is.
28384
28385 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
28386
28387         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
28388         rs6000_emit_stack_tie.
28389
28390 2009-03-31  Ian Lance Taylor  <iant@google.com>
28391
28392         * tree-eh.c (tree_remove_unreachable_handlers): Compare
28393         gimple_code with GIMPLE_RESX, not RESX.
28394
28395 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28396
28397         * c-common.c (c_get_ident): New.
28398         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
28399
28400 2009-04-01  Ben Elliston  <bje@au.ibm.com>
28401
28402         * config/rs6000/sysv4.opt (msdata): Improve option description.
28403
28404 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
28405
28406         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
28407         (divdf3_internal_lat): Remove.
28408         (divxf3_internal_lat): Remove.
28409         (divxf3_internal_thr): Remove.
28410         (divxf): Use divxf3_internal.
28411         * config/ia64/div.md (divsf3_internal_lat): New.
28412         (divdf3_internal_lat): New.
28413         (divxf3_internal): New.
28414
28415 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28416
28417         PR c/448
28418         * Makefile.in (USE_GCC_STDINT): Define.
28419         (stmp-int-hdrs): Install stdint.h if applicable.
28420         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
28421         if known.
28422         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
28423         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
28424         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
28425         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
28426         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
28427         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
28428         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
28429         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
28430         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
28431         (c_common_nodes_and_builtins): Initialize
28432         underlying_wchar_type_node.  Do not initialize
28433         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
28434         nodes for new types.
28435         (c_stddef_cpp_builtins): Define macros for new types.
28436         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
28437         Remove.
28438         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
28439         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
28440         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
28441         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
28442         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
28443         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
28444         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
28445         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
28446         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
28447         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
28448         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
28449         int16_type_node, int32_type_node, int64_type_node,
28450         uint8_type_node, uint16_type_node, c_uint32_type_node,
28451         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
28452         int_least32_type_node, int_least64_type_node,
28453         uint_least8_type_node, uint_least16_type_node,
28454         uint_least32_type_node, uint_least64_type_node,
28455         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
28456         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
28457         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
28458         uintptr_type_node): Define.
28459         * c-cppbuiltin.c (builtin_define_constants,
28460         builtin_define_type_minmax): New.
28461         (builtin_define_stdint_macros): Define more macros.
28462         (c_cpp_builtins): Define more limit macros.
28463         (type_suffix): New.
28464         (builtin_define_type_max): Define in terms of
28465         builtin_define_type_minmax.  Remove is_long parameter.  All
28466         callers changed.
28467         * config.gcc (use_gcc_stdint): Define.
28468         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
28469         Add newlib-stdint.h for generic targets.
28470         * config/glibc-stdint.h, config/newlib-stdint.h,
28471         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
28472         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
28473         * config/score/score.h (UINTPTR_TYPE): Define.
28474         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
28475         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
28476         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
28477         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
28478         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
28479         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
28480         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
28481         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
28482         * config/spu/spu.h (STDINT_LONG32): Define.
28483         * configure.ac (use_gcc_stdint): Substitute.
28484         * configure: Regenerate.
28485         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
28486         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
28487         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
28488         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
28489         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
28490         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
28491         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
28492         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
28493         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
28494         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
28495         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
28496         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
28497         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
28498         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
28499         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
28500         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
28501         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
28502         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
28503         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
28504         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
28505         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
28506         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
28507         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
28508         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
28509         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
28510         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
28511         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
28512         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
28513         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
28514
28515 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
28516
28517         * loop-iv.c (suitable_set_for_replacement): Renamed from
28518         simplify_using_assignment; changed to return bool and to accept new
28519         args DEST and SRC.  Return true iff we find a source/destination pair
28520         that can be used to make a replacement, and fill SRC and DEST if so.
28521         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
28522         changed.
28523         (simplify_using_initial_values): Deal with altered regs here and track
28524         more precisely the effect they have on the validity of our expression.
28525
28526         * loop-iv.c (simplify_using_condition): A condition of the form
28527         (EQ REG CONST) can be used to simply make a substitution.
28528         (simplify_using_initial_values): Keep track of conditions we have seen
28529         and keep using them to simplify new expressions, while applying the
28530         same substitutions to them as to the expression.
28531
28532         * simplify-rtx.c (simplify_relational_operation_1): Simplify
28533         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
28534         GEU/LTU reversed.
28535
28536         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
28537         changed.  Use this when trying to improve the upper bound.
28538         Generate the comparison by using simplify_gen_relational.
28539
28540         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
28541
28542         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
28543         functions.
28544         (simplify_using_assignment, simplify_using_initial_values): Call
28545         replace_in_expr to make replacements.  Call replace_single_def_regs
28546         once on the initial version of the expression.
28547
28548 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
28549
28550         PR target/27237
28551         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
28552
28553 2009-03-31  Richard Guenther  <rguenther@suse.de>
28554
28555         PR middle-end/31029
28556         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
28557         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
28558
28559 2009-03-31  Richard Guenther  <rguenther@suse.de>
28560
28561         * tree.h (div_if_zero_remainder): Declare.
28562         * fold-const.c (div_if_zero_remainder): Export.
28563         * tree-ssa-forwprop.c
28564         (forward_propagate_addr_into_variable_array_index): Handle
28565         constant array index addition outside of the variable index.
28566
28567 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28568
28569         PR target/39592
28570         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
28571         define_splits, floatunssi<mode>2): Require x87 conversions from
28572         DImode to be permitted.
28573
28574 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28575
28576         PR preprocessor/15638
28577         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
28578
28579 2009-03-31  Richard Guenther  <rguenther@suse.de>
28580
28581         PR middle-end/23401
28582         PR middle-end/27810
28583         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
28584         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
28585         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
28586         a separate statement.
28587         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
28588         (lookup_tmp_var): Likewise.
28589         (is_gimple_formal_tmp_or_call_rhs): Remove.
28590         (is_gimple_reg_or_call_rhs): Rename to ...
28591         (is_gimple_reg_rhs_or_call): ... this.
28592         (is_gimple_mem_or_call_rhs): Rename to ...
28593         (is_gimple_mem_rhs_or_call): ... this.
28594         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
28595         DECL_GIMPLE_REG_P only if is_formal is true.
28596         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
28597         for non-proper post-modify expression gimplification.
28598         (gimplify_self_mod_expr): For post-modify expressions gimplify
28599         the lvalue to a minimal lvalue.
28600         (rhs_predicate_for): Remove formal temp case.
28601         (gimplify_modify_expr_rhs): Likewise.
28602         (gimplify_addr_expr): Use is_gimple_reg.
28603         (gimplify_expr): Remove formal temp cases.
28604         (gimple_regimplify_operands): Likewise.
28605         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
28606         and FILTER_EXPR like constants.
28607         * gimple.c (walk_gimple_op): Fix val_only initialization, use
28608         is_gimple_reg.
28609         (is_gimple_formal_tmp_rhs): Remove.
28610         (is_gimple_reg_rhs): Remove special casing.
28611         (is_gimple_mem_rhs): Fix.
28612         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
28613         (is_gimple_formal_tmp_var): Remove.
28614         (is_gimple_formal_tmp_reg): Likewise.
28615         (is_gimple_min_lval): Allow invariant component ref parts.
28616         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
28617         is_gimple_formal_tmp_reg): Remove declarations.
28618         * tree-cfg.c (verify_expr): Verify that variables with address
28619         taken do not have DECL_GIMPLE_REG_P set.
28620         * tree-mudflap.c (mf_build_check_statement_for): Use
28621         force_gimple_operand instead of gimplify_expr.
28622
28623 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
28624
28625         * modulo-sched.c (sms_schedule_by_order): Pass the actual
28626         schedulable rows to compute_split_row.
28627
28628 2009-03-31  Ben Elliston  <bje@au.ibm.com>
28629
28630         PR target/31635
28631         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
28632         OPT_mvrsave.
28633
28634 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
28635
28636         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
28637         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
28638         * configure: Regenerate.
28639         * config.in: Regenerate.
28640         * config/rs6000/rs6000.opt (mtls-markers): Add.
28641         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
28642         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
28643         (tls_ld_aix, tls_ld_sysv): Likewise.
28644         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
28645         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
28646
28647 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
28648
28649         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
28650
28651 2009-03-30  Jan Hubicka  <jh@suse.cz>
28652
28653         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
28654         out of RESX.
28655         (tree_remove_unreachable_handlers): Cleanup EH predecestor
28656         detection and label handling.
28657
28658 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28659
28660         * ira-int.h (ira_allocno): Rename left_conflicts_num to
28661         left_conflicts_size.
28662         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
28663         ALLOCNO_LEFT_CONFLICTS_SIZE.
28664
28665         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
28666         remove_allocno_from_bucket_and_push,
28667         allocno_spill_priority_compare, push_allocnos_to_stack,
28668         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
28669         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
28670         (setup_allocno_left_conflicts_num): Ditto.  Rename to
28671         setup_allocno_left_conflicts_size.
28672         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
28673         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
28674         setup_allocno_left_conflicts_size instead of
28675         setup_allocno_left_conflicts_num.
28676
28677         * ira-build.c (ira_create_allocno): Use
28678         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
28679         ALLOCNO_LEFT_CONFLICTS_NUM.
28680
28681 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28682
28683         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
28684         instead of DF_LR_OUT.
28685
28686         * ira-lives.c (process_bb_node_lives): Ditto.
28687
28688         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
28689         instead of DF_LR_{OUT,IN}.
28690
28691         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
28692
28693         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
28694
28695 2009-03-30  Jan Hubicka  <jh@suse.cz>
28696
28697         * except.c (label_to_region_map): Fix thinko.
28698
28699 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
28700
28701         PR middle-end/38237
28702         * tree.h (tree_find_value): New declaration.
28703         * tree.c (tree_find_value): New function.
28704         * varasm.c (assemble_external): Avoid duplicate entries on lists.
28705
28706 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
28707
28708         PR debug/39563
28709         * c-decl.c (struct c_binding): Add locus field.
28710         (bind): Add locus argument, set locus field from it.
28711         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
28712         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
28713         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
28714         implicitly_declare, undeclared_variable, lookup_label,
28715         declare_label, c_make_fname_decl, c_builtin_function,
28716         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
28717         bind callers.
28718
28719 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
28720
28721         PR target/38781
28722         * config/i386/i386.c (classify_argument): Check total size of
28723         structure.
28724
28725 2009-03-30  Martin Jambor  <mjambor@suse.cz>
28726
28727         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
28728         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
28729         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
28730         respectively.
28731
28732         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
28733         seen_variable_array_ref while also traversing a union.
28734
28735         * tree-inline.c (optimize_inline_calls): Do not call
28736         cgraph_node_remove_callees.
28737         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
28738         (pass_remove_cgraph_callee_edges): New variable.
28739         * passes.c (init_optimization_passes): Add
28740         pass_remove_cgraph_callee_edges after early inlining and before all
28741         late intraprocedural passes.
28742
28743         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
28744
28745 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28746
28747         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
28748         Fix typos in names.
28749
28750 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28751
28752         * combine.c (simplify_comparison): Use have_insn_for.
28753         * dojump.c (do_jump): Likewise.
28754
28755 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28756
28757         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
28758         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
28759         sparc_compare_op0 like sparc_compare_emitted used to be handled.
28760         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
28761         instead of sparc_compare_emitted.
28762         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
28763         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
28764         instead of sparc_compare_emitted.
28765
28766 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28767
28768         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
28769         enter/exit cfglayout mode.
28770         (pass_partition_block): Require it.
28771         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
28772         (combine_instructions): Track basic blocks instead of labels.
28773         (update_cfg_for_uncondjump): New.
28774         (try_combine): Use it.  Update jumps after rescanning.
28775         (pass_combine): Require PROP_cfglayout.
28776         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
28777
28778 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28779
28780         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
28781         Provide/destroy PROP_cfglayout respectively.
28782         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
28783         * tree-pass.h (PROP_cfglayout): New.
28784
28785 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28786
28787         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
28788         fold_convert_const_fixed_from_fixed,
28789         fold_convert_const_fixed_from_int,
28790         fold_convert_const_fixed_from_real, fold_negate_const): Do not
28791         set TREE_CONSTANT_OVERFLOW.
28792         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
28793         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
28794
28795 2009-03-30  Ira Rosen  <irar@il.ibm.com>
28796
28797         * tree-vect-loop-manip.c: New file.
28798         * tree-vectorizer.c: Update documentation and included files.
28799         (vect_loop_location): Make extern.
28800         (rename_use_op): Move to tree-vect-loop-manip.c
28801         (rename_variables_in_bb, rename_variables_in_loop,
28802         slpeel_update_phis_for_duplicate_loop,
28803         slpeel_update_phi_nodes_for_guard1,
28804         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
28805         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
28806         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
28807         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
28808         find_loop_location): Likewise.
28809         (new_stmt_vec_info): Move to tree-vect-stmts.c.
28810         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
28811         get_vectype_for_scalar_type, vect_is_simple_use,
28812         supportable_widening_operation, supportable_narrowing_operation):
28813         Likewise.
28814         (bb_in_loop_p): Move to tree-vect-loop.c.
28815         (new_loop_vec_info, destroy_loop_vec_info,
28816         reduction_code_for_scalar_code, report_vect_op,
28817         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
28818         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
28819         (vect_supportable_dr_alignment): Likewise.
28820         * tree-vectorizer.h (tree-data-ref.h): Include.
28821         (vect_loop_location): Declare.
28822         Reorganize function declarations according to the new file structure.
28823         * tree-vect-loop.c: New file.
28824         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
28825         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
28826         * tree-vect-data-refs.c: New file.
28827         * tree-vect-patterns.c (timevar.h): Don't include.
28828         * tree-vect-stmts.c: New file.
28829         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
28830         tree-vect-slp.c, tree-vect-loop.c.
28831         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
28832         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
28833         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
28834         (tree-vect-analyze.o): Remove.
28835         (tree-vect-transform.o): Likewise.
28836         (tree-vect-data-refs.o): Add rule.
28837         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
28838         tree-vect-slp.o): Likewise.
28839         (tree-vect-patterns.o): Remove redundant dependencies.
28840         (tree-vectorizer.o): Likewise.
28841         * tree-vect-slp.c: New file.
28842
28843 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28844
28845         * optc-gen.awk: Warn if an option flag has multiple different
28846         help strings.
28847
28848 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
28849
28850         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
28851         -floop-block): Document dependences on PPL, CLooG and Graphite.
28852
28853 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
28854
28855         PR rtl-optimization/323
28856         * c-common.c (c_fully_fold, convert_and_check,
28857         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
28858         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
28859         * c-common.def (EXCESS_PRECISION_EXPR): New.
28860         * c-cppbuiltin.c (builtin_define_float_constants): Define
28861         constants with enough digits for long double.
28862         * c-lex.c (interpret_float): Interpret constant with excess
28863         precision where appropriate.
28864         * c-opts.c (c_common_post_options): Set
28865         flag_excess_precision_cmdline.  Give an error for
28866         -fexcess-precision=standard for C++ for processors where the
28867         option is significant.
28868         * c-parser.c (c_parser_conditional_expression): Handle excess
28869         precision in condition.
28870         * c-typeck.c (convert_arguments): Handle arguments with excess
28871         precision.
28872         (build_unary_op): Move excess precision outside operation.
28873         (build_conditional_expr): Likewise.
28874         (build_compound_expr): Likewise.
28875         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
28876         (build_modify_expr): Handle excess precision in RHS.
28877         (convert_for_assignment): Handle excess precision in converted
28878         value.
28879         (digest_init, output_init_element, process_init_element): Handle
28880         excess precision in initializer.
28881         (c_finish_return): Handle excess precision in return value.
28882         (build_binary_op): Handle excess precision in operands and add
28883         excess precision as needed for operation.
28884         * common.opt (-fexcess-precision=): New option.
28885         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
28886         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
28887         For standard excess precision, output explicit conversion to and
28888         truncation from XFmode.
28889         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
28890         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
28891         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
28892         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
28893         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
28894         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
28895         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
28896         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
28897         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
28898         define_splits, sqrt<mode>2): Disable where appropriate for
28899         standard excess precision.
28900         * convert.c (convert_to_real): Do not shorten arithmetic to type
28901         for which excess precision would be used.
28902         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
28903         * doc/invoke.texi (-fexcess-precision=): Document option.
28904         (-mfpmath=): Correct index entry.
28905         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
28906         flag_excess_precision): New.
28907         * langhooks.c (lhd_post_options): Set
28908         flag_excess_precision_cmdline.
28909         * opts.c (common_handle_option): Handle -fexcess-precision=.
28910         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
28911         init_excess_precision): New.
28912         (lang_dependent_init_target): Call init_excess_precision.
28913         * tree.c (excess_precision_type): New.
28914         * tree.h (excess_precision_type): Declare.
28915
28916 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
28917
28918         PR c/35235
28919         * c-typeck.c (build_component_ref): Do not copy qualifiers from
28920         non-lvalue to component.
28921
28922 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
28923
28924         PR preprocessor/34695
28925         * Makefile.in (c-opts.o): Depend on c-tree.h.
28926         * c-common.c: Move down include of diagnostic.h.
28927         (done_lexing, c_cpp_error): New.
28928         * c-common.h (done_lexing): Declare.
28929         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
28930         (parse_in).
28931         * c-opts.c: Include c-tree.h.
28932         (c_common_init_options): Set preprocessor error callback.
28933         (c_common_handle_option): Do not set preprocessor
28934         inhibit_warnings, warnings_are_errors, warn_system_headers,
28935         pedantic_errors or inhibit_warnings flags.
28936         (c_common_post_options): Do not check cpp_errors (parse_in).
28937         (c_common_finish): Do not output dependencies if there were
28938         errors.  Do not check return value of cpp_finish.
28939         * c-ppoutput.c (pp_file_change): Set input_location.
28940         * c-tree.h (c_cpp_error): Declare.
28941         * diagnostic.c (diagnostic_set_info_translated): Also initialize
28942         override_column.
28943         (diagnostic_build_prefix): Check override_column.
28944         * diagnostic.h (diagnostic_info): Add override_column field.
28945         (diagnostic_override_column): Define.
28946
28947 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
28948
28949         * c-common.c (c_expand_expr, c_staticp): Remove.
28950         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
28951         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
28952         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
28953         * c-gimplify.c (gimplify_compound_literal_expr,
28954         optimize_compound_literals_in_ctor): Remove.
28955         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
28956         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
28957         * c-semantics.c (emit_local_var): Remove.
28958
28959         * langhooks-def.h (lhd_expand_expr): Remove.
28960         * langhooks.c (lhd_expand_expr): Remove.
28961         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
28962
28963         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
28964         handling from c-semantics.c; don't call into langhook.
28965         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
28966         * gimplify.c (gimplify_compound_literal_expr,
28967         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
28968         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
28969         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
28970         as was done in c-gimplify.c.
28971         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
28972         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
28973         Move from c-common.h.
28974         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
28975
28976         * tree.c (staticp): Do not call langhook.
28977         * langhooks.c (lhd_staticp): Delete.
28978         * langhooks-def.h (lhd_staticp): Delete prototype.
28979         (LANG_HOOKS_STATICP): Delete.
28980         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
28981
28982         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
28983         instead of DECL_STMTs.
28984
28985 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
28986
28987         PR c/456
28988         PR c/5675
28989         PR c/19976
28990         PR c/29116
28991         PR c/31871
28992         PR c/35198
28993         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
28994         void_type_node.
28995         (fold_call_expr): Return a NOP_EXPR from folding rather than the
28996         contained expression.
28997         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
28998         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
28999         conditional expressions for C.
29000         (decl_constant_value_for_optimization): Move from
29001         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
29002         whether optimizing and that the expression is a VAR_DECL not of
29003         array type instead of doing such checks in the caller.  Do not
29004         check pedantic.  Call gcc_unreachable for C++.
29005         * c-common.def (C_MAYBE_CONST_EXPR): New.
29006         * c-common.h (c_fully_fold, c_save_expr,
29007         decl_constant_value_for_optimization): New prototypes.
29008         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
29009         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
29010         EXPR_INT_CONST_OPERANDS): Define.
29011         * c-convert.c (convert): Strip nops from expression.
29012         * c-decl.c (groktypename): Take extra parameters expr and
29013         expr_const_operands.  Update call to grokdeclarator.
29014         (start_decl): Update call to grokdeclarator.  Add statement for
29015         expressions used in type of decl.
29016         (grokparm): Update call to grokdeclarator.
29017         (push_parm_decl): Update call to grokdeclarator.
29018         (build_compound_literal): Add parameter non_const and build a
29019         C_MAYBE_COSNT_EXPR if applicable.
29020         (grokdeclarator): Take extra parameters expr and
29021         expr_const_operands.  Track expressions used in declaration
29022         specifiers and declarators.  Fold array sizes and track whether
29023         they are constant expressions and whether they are integer
29024         constant expressions.
29025         (parser_xref_tag): Set expr and expr_const_operands fields in
29026         return value.
29027         (grokfield): Update call to grokdeclarator.
29028         (start_function): Update call to grokdeclarator.
29029         (build_null_declspecs): Set expr and expr_const_operands fields in
29030         return value.
29031         (declspecs_add_type): Handle expressions in typeof specifiers.
29032         * c-parser.c (c_parser_declspecs): Set expr and
29033         expr_const_operands fields for declaration specifiers.
29034         (c_parser_enum_specifier): Likewise.
29035         (c_parser_struct_or_union_specifier): Likewise.
29036         (c_parser_typeof_specifier): Likewise.  Update call to
29037         groktypename.  Fold expression as needed.  Return expressions with
29038         type instead of adding statements.
29039         (c_parser_attributes): Update calls to c_parser_expr_list.
29040         (c_parser_statement_after_labels): Fold expression before passing
29041         to objc_build_throw_stmt.
29042         (c_parser_condition): Fold expression.
29043         (c_parser_asm_operands): Fold expression.
29044         (c_parser_conditional_expression): Use c_save_expr.  Update call
29045         to build_conditional_expr.
29046         (c_parser_alignof_expression): Update call to groktypename.
29047         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
29048         original_code.  Fold expression argument of va_arg.  Create
29049         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
29050         argument to va_arg.  Update calls to groktypename.  Fold array
29051         index for offsetof.  Verify that first argument to
29052         __builtin_choose_expr has integer type.
29053         (c_parser_postfix_expression_after_paren_type): Update calls to
29054         groktypename and build_compound_literal.  Handle expressions with
29055         side effects in type name.
29056         (c_parser_postfix_expression_after_primary): Update call to
29057         c_parser_expr_list.  Set original_code for calls to
29058         __builtin_constant_p.
29059         (c_parser_expr_list): Take extra parameter fold_p.  Fold
29060         expressions if requested.
29061         (c_parser_objc_type_name): Update call to groktypename.
29062         (c_parser_objc_synchronized_statement): Fold expression.
29063         (c_parser_objc_receiver): Fold expression.
29064         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
29065         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
29066         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
29067         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
29068         (struct c_typespec): Add elements expr and expr_const_operands.
29069         (struct c_declspecs): Add elements expr and expr_const_operands.
29070         (groktypename, build_conditional_expr, build_compound_literal):
29071         Update prototypes.
29072         (in_late_binary_op): Declare.
29073         * c-typeck.c (note_integer_operands): New function.
29074         (in_late_binary_op): New variable.
29075         (decl_constant_value_for_broken_optimization): Move to c-common.c
29076         and rename to decl_constant_value_for_optimization.
29077         (default_function_array_conversion): Do not strip nops.
29078         (default_conversion): Do not call
29079         decl_constant_value_for_broken_optimization.
29080         (build_array_ref): Do not fold result.
29081         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
29082         result when operand is a VLA.
29083         (c_expr_sizeof_type): Update call to groktypename.  Handle
29084         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
29085         result when operand names a VLA type.
29086         (build_function_call): Update call to build_compound_literal.
29087         Only fold result for calls to __builtin_* functions.  Strip
29088         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
29089         the function designator.
29090         (convert_arguments): Fold arguments.  Update call to
29091         convert_for_assignment.
29092         (build_unary_op): Handle increment and decrement of
29093         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
29094         decrement earlier.  Fold operand of increment and decrement.
29095         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
29096         built for integer operand.  Wrap returns that are INTEGER_CSTs
29097         without being integer constant expressions or that have integer
29098         constant operands without being INTEGER_CSTs.
29099         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
29100         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
29101         result is an integer constant expression or can be used in
29102         unevaluated parts of one and avoid folding and wrap as
29103         appropriate.  Fold operands before possibly doing -Wsign-compare
29104         warnings.
29105         (build_compound_expr): Wrap result for C99 if operands can be used
29106         in integer constant expressions.
29107         (build_c_cast): Update call to digest_init.  Do not ignore
29108         overflow from casting floating-point constants to integers.  Wrap
29109         results that could be confused with integer constant expressions,
29110         null pointer constants or floating-point constants.
29111         (c_cast_expr): Update call to groktypename.  Handle expressions
29112         included in type name.
29113         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
29114         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
29115         Update calls to convert_for_assignment.
29116         (convert_for_assignment): Take new parameter
29117         null_pointer_constant.  Do not strip nops or call
29118         decl_constant_value_for_broken_optimization.  Set
29119         in_late_binary_op for conversions to boolean.
29120         (store_init_value): Update call to digest_init.
29121         (digest_init): Take new parameter null_pointer_constant.  Do not
29122         call decl_constant_value_for_broken_optimization.  pedwarn for
29123         initializers not constant expressions.  Update calls to
29124         convert_for_assignment.
29125         (constructor_nonconst): New.
29126         (struct constructor_stack): Add nonconst element.
29127         (really_start_incremental_init, push_init_level, pop_init_level):
29128         Handle constructor_nonconst and nonconst element.
29129         (set_init_index): Call constant_expression_warning for array
29130         designators.
29131         (output_init_element): Fold value.  Set constructor_nonconst as
29132         applicable.  pedwarn for initializers not constant expressions.
29133         Update call to digest_init.  Call constant_expression_warning
29134         where constant initializers are required.
29135         (process_init_element): Use c_save_expr.
29136         (c_finish_goto_ptr): Fold expression.
29137         (c_finish_return): Fold return value.  Update call to
29138         convert_for_assignment.
29139         (c_start_case): Fold switch expression.
29140         (c_process_expr_stmt): Fold expression.
29141         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
29142         ensure statement expression is not evaluated in constant expression.
29143         (build_binary_op): Track whether results are integer constant
29144         expressions or may occur in such, disable folding and wrap results
29145         as applicable.  Fold operands for -Wsign-compare warnings unless
29146         in_late_binary_op.
29147         (c_objc_common_truthvalue_conversion): Handle results folded to
29148         integer constants that are not integer constant expressions.
29149         * doc/extend.texi: Document when typeof operands are evaluated,
29150         that condition of __builtin_choose_expr is an integer constant
29151         expression, and more about use of __builtin_constant_p in
29152         initializers.
29153
29154 2009-03-29  Richard Guenther  <rguenther@suse.de>
29155
29156         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
29157         propagate addresses of array references.
29158
29159 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
29160
29161         * regmove.c (perhaps_ends_bb_p): Remove.
29162         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
29163         from INSN and check that the main loop stays within that basic block.
29164         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
29165         (regmove_forward_pass): Split out from regmove_optimize.  Use
29166         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
29167         (regmove_backward_pass): Split out from regmove_optimize.  Use
29168         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
29169         (regmove_optimize): Simplify.
29170
29171 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
29172
29173         PR target/39545
29174         * config/i386/i386.c (classify_argument): Ignore flexible array
29175         member in struct and warn ABI change.
29176
29177 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
29178
29179         * config/i386/i386-protos.h (ix86_agi_dependent): New.
29180
29181         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
29182         (ix86_adjust_cost): Updated.
29183
29184 2009-03-29  Jan Hubicka  <jh@suse.cz>
29185
29186         PR middle-end/28850
29187         * tree-pass.h (pass_cleanup_eh): New function.
29188         (remove_unreachable_regions): Break code handling RTL
29189         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
29190         that can not be reached by runtime.
29191         (can_be_reached_by_runtime): New function.
29192         (label_to_region_map): New function.
29193         (num_eh_regions): New function.
29194         (rtl_remove_unreachable_regions): New function.
29195         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
29196         (remove_eh_region): New function.
29197         * except.h: Include sbitmap and vecprim.
29198         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
29199         num_eh_regions): Declare.
29200         * passes.c (init_optimization_passes): Schedule cleanup_eh.
29201         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
29202         * tree-eh.c (tree_remove_unreachable_handlers): New function.
29203         (tree_empty_eh_handler_p): New function.
29204         (cleanup_empty_eh): New function.
29205         (cleanup_eh): New function.
29206         (pass_cleanup_eh): New function.
29207
29208 2009-03-29  Jan Hubicka  <jh@suse.cz>
29209
29210         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
29211         for removed regions.
29212
29213 2009-03-29  Jan Hubicka  <jh@suse.cz>
29214
29215         * except.c (dump_eh_tree): Dump all datastructures.
29216
29217 2009-03-29  Jan Hubicka  <jh@suse.cz>
29218
29219         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
29220         (duplicate_eh_regions_1): Likewise.
29221         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
29222         vector; call EH verification.
29223         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
29224         Be ready for region being removed.
29225
29226 2009-03-29  Jan Hubicka  <jh@suse.cz>
29227
29228         * bitmap.c (bitmap_last_set_bit): New function.
29229         * bitmap.h (bitmap_last_set_bit): Declare.
29230
29231 2009-03-29  David Ayers  <ayers@fsfe.org>
29232
29233         PR objc/27377
29234         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
29235         by calling objc_compare_types and surpress warnings about
29236         incompatible C pointers that are compatible ObjC pointers.
29237
29238 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
29239
29240         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
29241         call initialize_inline_failed.
29242         (initialize_inline_failed): Move it from here ...
29243         * cgraph.c (initialize_inline_failed): ... to here.
29244         (cgraph_create_edge): Call initialize_inline_failed rather than
29245         setting inline_failed directly.
29246
29247 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29248
29249         PR target/32542
29250         * sysv4.opt (msdata): Improve comment.
29251         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
29252         * sysv4.h (SVR4_ASM_SPEC): Likewise.
29253
29254 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29255
29256         PR target/30451
29257         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
29258         load and store attributes.
29259
29260 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29261
29262         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
29263         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
29264         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
29265         * doc/extend.texi (X86 Built-in Functions): Add index entries for
29266         __builtin_infq and __builtin_huge_valq.
29267
29268 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
29269
29270         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
29271         atmega8m1 devices.
29272         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
29273         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
29274
29275 2009-03-28  Xinliang David Li  <davidxl@google.com>
29276
29277         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
29278         (do_dbg_cnt): New function.
29279
29280 2009-03-28  Jan Hubicka  <jh@suse.cz>
29281
29282         Merge from pretty-ipa:
29283
29284         2009-03-27  Jan Hubicka  <jh@suse.cz>
29285
29286         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
29287         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
29288         * passes.c (function_called_by_processed_nodes_p): New.
29289         * ipa-pure-const.c (check_call): Fix handling of operands.
29290         (analyze_function): Dump debug output for skipped bodies.
29291         (local_pure_const): Use function_called_by_processed_nodes_p.
29292         * dwarf2out.c (reference_to_unused): Use output.
29293         * passes.c (do_per_function_toporder): Likewise.
29294
29295         2008-11-12  Jan Hubicka  <jh@suse.cz>
29296
29297         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
29298         * ipa-pure-const.c (funct_state_d): Add can throw field; make
29299         state_set_in_source enum
29300         (check_decl): Ignore memory tags; do not set fake looping flags;
29301         dump diagnostics.
29302         (check_operand, check_tree, check_rhs_var, check_lhs_var,
29303         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
29304         (check_call, analyze_function): Rewrite.
29305         (check_stmt): New.
29306         (add_new_function): Update call of analyze_function.
29307         (generate_summary): Add call of analyze_function.
29308         (propagate): Propagate can_throw; handle state_set_in_source correctly.
29309         (local_pure_const): New function.
29310         (pass_local_pure_const): New pass.
29311         * ipa-inline.c (inline_transform): Set after_inlining.
29312         * tree-eh.c (stmt_can_throw_external): New.
29313         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
29314         work with aliasing built.
29315         * tree-flow.h (stmt_can_throw_external): New.
29316         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
29317         and local pure/const pass in early and late optimization queue.
29318
29319 2009-03-28  Martin Jambor  <mjambor@suse.cz>
29320
29321         * fold-const.c (get_pointer_modulus_and_residue): New parameter
29322         allow_func_align.
29323         (fold_binary): Allow function decl aligment consideration is the
29324         second argument is integer constant one.
29325         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
29326         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
29327         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
29328
29329 2009-03-28  Jan Hubicka  <jh@suse.cz>
29330
29331         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
29332         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
29333         * function.h (rtl_data): Add nothrow flag.
29334         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
29335         set DECL_NOTHROW for AVAILABLE functions.
29336
29337 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
29338
29339         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
29340         following vector keyword has expansion starting with pixel or bool
29341         keyword, expand vector to __vector and pixel or bool to __pixel or
29342         __bool.
29343
29344         PR c++/39554
29345         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
29346         warn_if_disallowed_function_p): Removed.
29347         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
29348         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
29349         warning_if_disallowed_function_p.
29350         * flags.h (warn_if_disallowed_function_p,
29351         warn_disallowed_functions): Removed.
29352         * common.opt (Wdisallowed-function-list=): Removed.
29353         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
29354
29355 2009-03-28  Richard Guenther  <rguenther@suse.de>
29356
29357         PR tree-optimization/38723
29358         * tree-ssa-pre.c (compute_avail): Add all default definitions to
29359         the entry block.
29360
29361 2009-03-28  Jan Hubicka  <jh@suse.cz>
29362
29363         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
29364         test introduced by my previous patch.
29365
29366 2009-03-28  Richard Guenther  <rguenther@suse.de>
29367
29368         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
29369         the PHIs value undefined.
29370
29371 2009-03-28  Jan Hubicka  <jh@suse.cz>
29372
29373         * tree-pass.h (pass_fixup_cfg): New pass.
29374         * ipa-inline.c (inline_transform): Set
29375         always_inline_functions_inlined/after_inlining.
29376         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
29377         (pass_fixup_cfg): New pass.
29378         * passes.c (init_optimization_passes): Add fixup_cfg.
29379
29380 2009-03-28  Richard Guenther  <rguenther@suse.de>
29381
29382         PR tree-optimization/38458
29383         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
29384         argument use the arguments copy-of value.
29385
29386 2009-03-28  Richard Guenther  <rguenther@suse.de>
29387
29388         PR tree-optimization/38180
29389         * tree-ssa-ccp.c (get_default_value): Simplify.
29390         (likely_value): Likewise.
29391         (surely_varying_stmt_p): Properly handle VOP case.
29392         (ccp_initialize): Likewise.
29393         (ccp_fold): Handle propagating through *&.
29394         (fold_const_aggregate_ref): Also handle decls.
29395
29396 2009-03-28  Jan Hubicka  <jh@suse.cz>
29397
29398         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
29399         * cgraph.h (cgraph_node): Likewise.
29400         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
29401         (cgraph_reset_node): Use process flag.
29402         (cgraph_mark_functions_to_output): Likewise.
29403         (cgraph_expand_function): Likewise.
29404         (cgraph_expand_all_functions): Likewise.
29405         (cgraph_output_in_order): Likewise.
29406         * dwarf2out.c (reference_to_unused): Likewise.
29407         * passes.c do_per_function_toporder): Likewise.
29408
29409 2009-03-28  Jan Hubicka  <jh@suse.cz>
29410
29411         Bring from lto-branch:
29412
29413         2008-09-03  Doug Kwan  <dougkwan@google.com>
29414
29415         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
29416         enums instead of reason strings.
29417         * cgraph.c (cgraph_create_edge): Same.
29418         (cgraph_inline_failed_string): New function.
29419         * cgraph.h (cgraph_inline_failed_t): New enum type.
29420         (cgraph_inline_failed_string): New prototype.
29421         (struct cgraph_edge): Change type of INLINED_FAILED from constant
29422         char pointer to cgraph_inline_failed_t.
29423         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
29424         (cgraph_default_inline_p): Ditto.
29425         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
29426         to cgraph_inline_failed_t pointer.
29427         * cif-code.def: New file.
29428         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
29429         reason string.
29430         (cgraph_check_inline_limits): Change type of REASON to pointer to
29431         cgraph_inline_failed_t.  Replace reason strings with enums.
29432         (cgraph_default_inline_p): Ditto.
29433         (cgraph_recursive_inlining_p): Ditto.
29434         (update_caller_keys): Change type of FAILED_REASON to
29435         cgraph_inline_failed_t.
29436         (cgraph_set_inline_failed): Change type of REASON to pointer to
29437         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
29438         convert enums to strings for text output.
29439         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
29440         to be of type cgraph_inline_failed_t.  Replace reason strings with
29441         enums.  Call cgraph_inline_failed_string to covert enums
29442         to strings for text output.
29443         (cgraph_decide_inlining): Replace reason strings with enums.
29444         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
29445         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
29446         for text output.
29447         * tree-inline.c (expand_call_inline): Change type of REASON
29448         to cgraph_inline_failed_t.  Replace reason strings with enums.
29449         Call cgraph_inline_failed_string for text output.
29450         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
29451         (cgraph.o): Ditto.
29452
29453 2009-03-28  Jan Hubicka  <jh@suse.cz>
29454
29455         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
29456         cgraph_clone_node): Remove master clone handling.
29457         (cgraph_is_master_clone, cgraph_master_clone): Remove.
29458         * cgraph.h (master_clone): Remove.
29459         (cgraph_is_master_clone, cgraph_master_clone): Remove.
29460         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
29461         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
29462
29463 2009-03-28  Jan Hubicka  <jh@suse.cz>
29464
29465         * cgraph.c (cgraph_function_body_availability): Functions declared
29466         inline are always safe to assume that it is not going to be replaced.
29467
29468 2009-03-28  Richard Guenther  <rguenther@suse.de>
29469
29470         PR tree-optimization/38513
29471         * tree-ssa-pre.c (eliminate): Remove redundant stores.
29472         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
29473         EXC_PTR_EXPR and FILTER_EXPR.
29474         (get_ref_from_reference_ops): Likewise.
29475
29476 2009-03-28  Richard Guenther  <rguenther@suse.de>
29477
29478         PR tree-optimization/38968
29479         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
29480         Use FLOOR_MOD_EXPR to compute misalignment.
29481
29482 2009-03-28  Richard Guenther  <rguenther@suse.de>
29483
29484         PR tree-optimization/37795
29485         * tree.h (combine_comparisons): Declare.
29486         * fold-const.c (combine_comparisons): Export.
29487         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
29488         comparisons.
29489         (ifcombine_iforif): Use combine_comparisons.
29490
29491 2009-03-28  Jan Hubicka  <jh@suse.cz>
29492
29493         * tree-eh.c (inlinable_call_p): New function.
29494         (make_eh_edges): Use it.
29495         (verify_eh_edges): Use it.
29496         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
29497         * except.c (reachable_next_level): Add inlinable_function argument
29498         (sjlj_find_directly_reachable_regions): Update.
29499         (add_reachable_handler): Do not set saw_any_handlers.
29500         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
29501         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
29502         Add new inlinable call parameter.
29503         (can_throw_internal, can_throw_external): Update.
29504         * except.h (can_throw_internal_1, can_throw_external_1,
29505         foreach_reachable_handler): Update declaration.
29506
29507 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
29508
29509         * config/arm/t-arm-coff, config/h8300/coff.h,
29510         config/i386/i386-aout.h, config/i386/i386-coff.h,
29511         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
29512         config/pdp11/2bsd.h, config/rs6000/aix41.h,
29513         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
29514         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
29515         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
29516         sys-types.h: Remove.
29517         * Makefile.in: Remove protoize and fixproto support and references
29518         in comments.
29519         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
29520         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
29521         Remove.
29522         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
29523         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
29524         unprotoize$(exeext).
29525         (rest.encap): Don't depend on $(STMP_FIXPROTO)
29526         (.PHONY): Don't depend on proto.
29527         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
29528         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
29529         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
29530         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
29531         build/gen-protos.o, build/scan.o, xsys-protos.h,
29532         build/fix-header$(build_exeext), build/fix-header.o,
29533         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
29534         stmp-install-fixproto): Remove.
29535         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
29536         SYSCALLS.c or fixproto files.
29537         (install-common): Don't install protoize.
29538         (install-headers-tar, install-headers-cpio, install-headers-cp):
29539         Don't depend on $(STMP_FIXPROTO).
29540         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
29541         install fixproto files or write out fixproto settings.
29542         (uninstall): Don't uninstall protoize.
29543         * config.gcc (use_fixproto): Remove.
29544         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
29545         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
29546         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
29547         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
29548         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
29549         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
29550         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
29551         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
29552         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
29553         * config/t-vxworks (STMP_FIXPROTO): Remove.
29554         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
29555         STMP_FIXPROTO): Remove.
29556         * config.in, configure: Regenerate.
29557         * crtstuff.c (gid_t, uid_t): Don't undefine.
29558         * doc/install.texi: Change m68k-coff to m68k-elf in example.
29559         (arm-*-coff, arm-*-aout: Remove target entries.
29560         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
29561         Remove mention of AIX 4.1.
29562         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
29563         * doc/invoke.texi (Running Protoize): Remove.
29564         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
29565         (Protoize Caveats): Remove.
29566         * tsystem.h: Update comments on headers assumed to exist.
29567
29568 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
29569
29570         * genautomata.c: Add a new year to the copyright.  Add a new
29571         reference.
29572         (struct insn_reserv_decl): Add comments for member bypass_list.
29573         (find_bypass): Remove.
29574         (insert_bypass): New.
29575         (process_decls): Use insert_bypass.
29576         (output_internal_insn_latency_func): Output all bypasses with the
29577         same input insn in one switch case.
29578
29579         * rtl.def (define_bypass): Describe bypass choice.
29580         * doc/md.texi (define_bypass): Ditto.
29581
29582 2009-03-27  Richard Guenther  <rguenther@suse.de>
29583
29584         * gimplify.c (mark_addressable): Export.
29585         * tree-flow.h (mark_addressable): Declare.
29586         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
29587         * tree-ssa.c (verify_phi_args): Verify that address taken
29588         variables have TREE_ADDRESSABLE set.
29589
29590 2009-03-27  Richard Guenther  <rguenther@suse.de>
29591
29592         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
29593         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
29594         Do not mark decls TREE_ADDRESSABLE.
29595         (build_fold_addr_expr): Adjust.
29596         (fold_addr_expr): Remove.
29597         (fold_unary): Use build_fold_addr_expr.
29598         (fold_comparison): Likewise.
29599         (split_address_to_core_and_offset): Likewise.
29600         * coverage.c (tree_coverage_counter_addr): Mark the array decl
29601         TREE_ADDRESSABLE.
29602         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
29603         (gimplify_modify_expr_to_memcpy): Mark source and destination
29604         addressable.
29605         * omp-low.c (create_omp_child_function): Mark the object decl
29606         TREE_ADDRESSABLE.
29607         (lower_rec_input_clauses): Mark the var we take the address of
29608         TREE_ADDRESSABLE.
29609         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
29610
29611 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29612
29613         PR middle-end/39315
29614         * cfgexpand.c (expand_one_stack_var_at): Change alignment
29615         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
29616
29617 2009-03-27  Richard Guenther  <rguenther@suse.de>
29618
29619         PR tree-optimization/39120
29620         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
29621         constraints.
29622         (handle_lhs_call): Process return constraints.  Add escape
29623         constraints if necessary.
29624         (handle_const_call): Fill out return constraints.  Make nested
29625         case more precise.  Avoid consttmp if possible.
29626         (handle_pure_call): Fill out return constraints.  Avoid
29627         callused if possible.
29628         (find_func_aliases): Simplify call handling.
29629
29630 2009-03-27  Richard Guenther  <rguenther@suse.de>
29631
29632         PR tree-optimization/39120
29633         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
29634         as a representative.
29635         (solve_graph): Do propagate CALLUSED.
29636         (handle_pure_call): Use a scalar constraint from CALLUSED for
29637         the return value.
29638         (find_what_p_points_to): CALLUSED shall not appear in poins-to
29639         solutions.
29640
29641 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29642
29643         PR c/39323
29644         * c-common.c (handle_aligned_attribute): Properly check alignment
29645         overflow.  Use (1U << i) instead of (1 << i).
29646
29647         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
29648
29649         * expr.h (get_mem_align_offset): Updated.
29650
29651         * tree.h (tree_decl_common): Change align to "unsigned int" and
29652         move it before pointer_alias_set.
29653
29654 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29655             Jakub Jelinek  <jakub@redhat.com>
29656
29657         PR target/38034
29658         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
29659         gr_register_operand with gr_reg_or_0_operand.
29660         (cmpxchg_rel_di): Likewise.
29661         (sync_lock_test_and_set<mode>): Likewise.
29662
29663 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29664
29665         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
29666         (true_regnum): Likewise.
29667
29668         * rtlanal.c (subreg_info): Moved to ...
29669         * rtl.h (subreg_info): Here.  New.
29670         (subreg_get_info): New.
29671
29672         * rtlanal.c (subreg_get_info): Make it extern.
29673
29674 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29675
29676         PR target/39472
29677         * config/i386/i386.c (ix86_abi): New.
29678         (override_options): Handle -mabi=.
29679         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
29680         (ix86_call_abi_override): Likewise.
29681         (init_cumulative_args): Likewise.
29682         (function_arg_advance): Likewise.
29683         (function_arg_64): Likewise.
29684         (function_arg): Likewise.
29685         (ix86_pass_by_reference): Likewise.
29686         (ix86_function_value_regno_p): Likewise.
29687         (ix86_build_builtin_va_list_abi): Likewise.
29688         (setup_incoming_varargs_64): Likewise.
29689         (is_va_list_char_pointer): Likewise.
29690         (ix86_init_machine_status): Likewise.
29691         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
29692         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
29693         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
29694         (ix86_function_abi): Make it static and return enum calling_abi.
29695         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
29696         with ix86_abi.
29697         (ix86_fn_abi_va_list): Updated.
29698
29699         * config/i386/i386.h (ix86_abi): New.
29700         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
29701         (CONDITIONAL_REGISTER_USAGE): Likewise.
29702         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
29703         (machine_function): Likewise.
29704
29705         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
29706         with ix86_abi.
29707         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
29708         (STACK_BOUNDARY): Likewise.
29709         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
29710
29711         * config/i386/i386.opt (mabi=): New.
29712
29713         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
29714         return enum calling_abi.
29715         (ix86_function_type_abi): Likewise.
29716         (ix86_function_abi): Removed.
29717
29718         * doc/invoke.texi: Document -mabi= option for x86.
29719
29720 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29721
29722         * builtins.c (real_dconstp): Delete.
29723         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
29724
29725 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
29726             Jakub Jelinek  <jakub@redhat.com>
29727
29728         PR debug/37959
29729         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
29730         (gen_subprogram_die): When a function is explicit, generate the
29731         DW_AT_explicit attribute.
29732         * langhooks.h (struct lang_hooks_for_decls): Add
29733         function_decl_explicit_p langhook.
29734         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
29735         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
29736
29737 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
29738
29739         * builtins.c (fold_builtin_memory_op): Optimize memmove
29740         into memcpy if we can prove source and destination don't overlap.
29741
29742         * tree-inline.c: Include gt-tree-inline.h.
29743         (clone_fn_id_num): New variable.
29744         (clone_function_name): New function.
29745         (tree_function_versioning): Use it.
29746         * Makefile.in (GTFILES): Add tree-inline.c.
29747
29748 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
29749
29750         * BASE-VER: Change to 4.5.0.
29751
29752 2009-03-27  Xinliang David Li  <davidxl@google.com>
29753
29754         PR tree-optimization/39557
29755         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
29756
29757 2009-03-27  Xinliang David Li  <davidxl@google.com>
29758
29759         PR tree-optimization/39548
29760         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
29761         candidate check.
29762
29763 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29764
29765         * c-common.c (pointer_int_sum): Use %wd on return from
29766         tree_low_cst.
29767
29768 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29769
29770         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
29771         on return from tree_low_cst.
29772
29773 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
29774
29775         PR c++/36799
29776         * ginclude/stdarg.h (va_copy): Define also for
29777         __GXX_EXPERIMENTAL_CXX0X__.
29778
29779 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29780
29781         PR c++/35652
29782         * builtins.h (c_strlen): Do not warn here.
29783         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
29784         * c-common.c (pointer_int_sum): Take an explicit location.
29785         Warn about offsets out of bounds.
29786         * c-common.h (pointer_int_sum): Adjust declaration.
29787
29788 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29789
29790         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
29791         markup glitch.
29792
29793 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
29794
29795         PR c++/39554
29796         * opts.c (warn_if_disallowed_function_p): Don't assume
29797         get_callee_fndecl must return non-NULL.
29798
29799 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
29800
29801         PR rtl-optimization/39522
29802         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
29803         when reg_reloaded_valid is set.
29804
29805 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29806
29807         * config/spu/divv2df3.c: New file.
29808         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
29809         (DPBIT_FUNCS): Filter out _div_df.
29810
29811 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
29812
29813         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
29814         a jump insn, count that jump in the distance to the loop start.
29815
29816 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
29817
29818         PR target/39523
29819         * config/sh/sh.c (calc_live_regs): Fix condition for global
29820         registers except PIC_OFFSET_TABLE_REGNUM.
29821
29822 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
29823
29824         PR/39518
29825         * doc/invoke.texi (-mconsole): New.
29826         (-mcygwin): New.
29827         (-mno-cygwin): New.
29828         (-mdll): New.
29829         (-mnop-fun-dllimport): New.
29830         (-mthread): New.
29831         (-mwin32): New.
29832         (-mwindows): New.
29833         (sub section "i386 and x86-64 Windows Options"): New.
29834
29835 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
29836
29837         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
29838         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
29839
29840 2009-03-25  Richard Guenther  <rguenther@suse.de>
29841
29842         PR middle-end/39497
29843         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
29844         of -Wno-error.
29845
29846 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
29847
29848         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
29849         neither of haifa/selective schedulers are working.
29850
29851 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29852
29853         * doc/invoke.texi (Debugging Options): Fix description of
29854         -fno-merge-debug-strings.
29855
29856 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
29857
29858         * config/cris/libgcc.ver: New version-script.
29859         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
29860
29861         * configure.ac <GAS features, nop mnemonic>: Add pattern
29862         crisv32-*-* for "nop".
29863         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
29864         * configure: Regenerate.
29865
29866 2009-03-24  Ira Rosen  <irar@il.ibm.com>
29867
29868         PR tree-optimization/39529
29869         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
29870         mark_sym_for_renaming for the tag copied to the new vector
29871         pointer.
29872
29873 2009-03-24  Arthur Loiret  <aloiret@debian.org>
29874
29875         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
29876         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
29877         EXTRA_SPEC_FUNCTIONS.
29878         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
29879         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
29880         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
29881         -march and -mtune options.
29882
29883 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
29884
29885         * config/m68k/t-rtems: Add m5329 multilib.
29886
29887 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
29888             Jakub Jelinek  <jakub@redhat.com>
29889
29890         PR debug/39524
29891         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
29892         nodes.
29893
29894 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
29895
29896         PR c/39495
29897         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
29898         instead of c_parser_expression_conv, if original_code isn't one of the
29899         4 allowed comparison codes, fail.
29900
29901 2009-03-23  Richard Guenther  <rguenther@suse.de>
29902
29903         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
29904         * tree.h (struct tree_type): Likewise.
29905         * reload.h (struct insn_chain): Likewise.
29906         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
29907         * function.h (struct function): Likewise.
29908         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
29909
29910 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
29911
29912         PR tree-optimization/39516
29913         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
29914
29915 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
29916
29917         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
29918         should be set true if BITS_PER_WORD of target is bigger than 32
29919
29920 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
29921
29922         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
29923         Translate -B-options to -rpath-link.  Correct existing
29924         rpath-link and conditionalize on !nostdlib.
29925
29926 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29927
29928         * doc/extend.texi (Function Attributes, Variable Attributes):
29929         Fix typos.
29930         * doc/invoke.texi (Debugging Options, Optimize Options)
29931         (i386 and x86-64 Options, MCore Options): Likewise.
29932
29933 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
29934
29935         PR debug/37890
29936         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
29937         it for block local namespace aliases.
29938         (gen_decl_die): Pass context_die to gen_namespace_die.
29939
29940 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
29941
29942         PR c/39495
29943         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
29944         minimum or maximum value.
29945
29946 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
29947
29948         * reginfo.c (globalize_reg): Recompute derived reg sets.
29949
29950 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
29951
29952         PR target/39063
29953         * libgcc2.c (mprotect): Do not use signed arguments for
29954         VirtualProtect, use DWORD arguments.  Also fix the 'may
29955         be used uninitialized' warning for the np variable.
29956
29957 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
29958
29959         PR target/39496
29960         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
29961         functions using regparm calling conventions when not optimizing.
29962         (ix86_function_sseregparm): Similarly for sseregparm calling
29963         conventions.
29964
29965 2009-03-19  Li Feng  <nemokingdom@gmail.com>
29966
29967         PR middle-end/39500
29968         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
29969         dependence if the first conflict is after niter iterations.
29970
29971 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
29972
29973         PR middle-end/38609
29974         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
29975         functions with dynamic stack-pointer adjustments.
29976
29977 2009-03-19  Ben Elliston  <bje@au.ibm.com>
29978
29979         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
29980         option; change to -msdata=data.
29981
29982 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29983
29984         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
29985         and -fopenmp.
29986
29987 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
29988
29989         PR target/35180
29990         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
29991
29992 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
29993
29994         * doc/invoke.texi (Code Gen Options): Expand discussion of
29995         -fno-common.
29996
29997 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
29998
29999         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
30000         * matrix-reorg.c (struct matrix_info): Likewise.
30001         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
30002         * rtl.h (struct mem_attrs): Likewise.
30003         * df.h (struct df): Likewise.
30004         * tree-data-ref.h (struct data_dependence_relation): Likewise.
30005         * ira-int.h (struct ira_allocno): Likewise.
30006         * df-scan.c (struct df_collection_rec): Likewise.
30007         * ira.c (struct equivalence): Likewise.
30008         * function.c (struct temp_slot): Likewise.
30009         * cfgloop.h (struct loop): Likewise.
30010
30011         PR debug/39485
30012         * function.c (use_register_for_decl): When not optimizing, disregard
30013         register keyword for variables with types containing methods.
30014
30015 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
30016
30017         PR middle-end/39447
30018         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
30019         (is_simple_operand): Call contains_component_ref_p before calling data
30020         reference analysis that would fail on COMPONENT_REFs.
30021
30022         * tree-vrp.c (search_for_addr_array): Fix formatting.
30023
30024 2009-03-18  Richard Guenther  <rguenther@suse.de>
30025
30026         * tree-vect-transform.c (vect_loop_versioning): Fold the
30027         generated comparisons.
30028         * tree-vectorizer.c (set_prologue_iterations): Likewise.
30029         (slpeel_tree_peel_loop_to_edge): Likewise.
30030
30031 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30032
30033         PR middle-end/37805
30034         * opts.c (print_specific_help): In addition to `undocumented',
30035         accept `separate' and `joined' flags if passed alone.  Describe
30036         output by the first matched one of those.
30037         (common_handle_option): Skip over empty strings.
30038         * gcc.c (display_help): Fix help string for `--help='.
30039         * doc/invoke.texi (Option Summary, Overall Options): With
30040         `--help=', classes and qualifiers can both be repeated, but
30041         only the latter can be negated.  One should not pass only
30042         negated qualifiers.  Fix markup and examples.
30043
30044         Revert
30045         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
30046         PR middle-end/37805
30047         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
30048         and -fhelp=separate.
30049
30050 2009-03-17  Jing Yu  <jingyu@google.com>
30051
30052         PR middle-end/39378
30053         * function.h (struct rtl_data): Move is_thunk from here...
30054         (struct function): ...to here.
30055         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
30056         * varasm.c (assemble_start_function): Change is_thunk from crtl to
30057         cfun.
30058         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
30059         cfun.
30060         (alpha_does_function_need_gp, alpha_start_function): Likewise.
30061         (alpha_output_function_end_prologue): Likewise.
30062         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
30063         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
30064         (rs6000_output_function_epilogue): Likewise.
30065         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
30066
30067 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
30068
30069         PR target/39482
30070         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
30071         from different units in a single alternative.
30072         (*truncdfsf_i387): Ditto.
30073         (*truncxfsf2_mixed): Ditto.
30074         (*truncxfdf2_mixed): Ditto.
30075
30076 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
30077
30078         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
30079         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
30080
30081         PR debug/39474
30082         * tree-ssa-live.c (remove_unused_locals): Don't remove local
30083         unused non-artificial variables when not optimizing.
30084
30085         PR debug/39471
30086         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
30087         DW_TAG_imported_module even if decl is IMPORTED_DECL with
30088         NAMESPACE_DECL in its DECL_INITIAL.
30089
30090         PR middle-end/39443
30091         * optabs.c (set_user_assembler_libfunc): New function.
30092         * expr.h (set_user_assembler_libfunc): New prototype.
30093         * c-common.c: Include libfuncs.h.
30094         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
30095         for memcmp, memset, memcpy, memmove and abort.
30096         * Makefile.in (c-common.o): Depend on libfuncs.h.
30097
30098         PR debug/39412
30099         * dwarf2out.c (gen_inlined_enumeration_type_die,
30100         gen_inlined_structure_type_die, gen_inlined_union_type_die,
30101         gen_tagged_type_instantiation_die): Removed.
30102         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
30103         do nothing.
30104
30105 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
30106
30107         PR testsuite/38526
30108         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
30109         its use.
30110         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
30111         (check-parallel-%): Ditto.
30112         (check-consistency): Ditto.
30113
30114 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
30115
30116         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
30117         local variable rhs by NULL_TREE.
30118
30119 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30120
30121         PR target/39477
30122         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
30123
30124 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30125
30126         PR target/39476
30127         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
30128
30129 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30130
30131         PR target/39473
30132         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
30133         for ms->sysv ABI calls only in 64bit mode.
30134
30135         * config/i386/i386.md (untyped_call): Support 32bit.
30136
30137 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
30138
30139         * doc/extend.texi: Replace x86_65 with x86_64.
30140
30141 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
30142
30143         PR tree-optimization/39455
30144         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
30145         mismatches for POINTER_TYPE_P (type).
30146         (number_of_iterations_le): Likewise.
30147
30148 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
30149
30150         * config/picochip/picochip.c: Removed profiling support.
30151         * config/picochip/picochip.md: Removed profiling instruction.
30152         * config/picochip/picochip.h: Removed profiling builtin.
30153
30154 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
30155
30156         * doc/install.texi (--with-host-libstdcxx): Document.
30157
30158 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
30159
30160         PR target/34299
30161         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
30162         generate a warning if the function name does not begin with
30163         "__vector" and the function has either the 'signal' or 'interrupt'
30164         attribute, from here to ...
30165         (avr_declare_function_name): ...here. New function.
30166         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
30167         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
30168
30169 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
30170
30171         PR bootstrap/39454
30172         * cse.c (fold_rtx): Don't modify original const_arg1 when
30173         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
30174         separate variable instead.
30175         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
30176         from out of range shift counts.
30177         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
30178
30179 2009-03-13  Catherine Moore  <clm@codesourcery.com>
30180
30181         * config/i386/x-mingw32 (host-mingw32.o): Replace
30182         diagnostic.h with $(DIAGNOSTIC_H).
30183
30184 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
30185
30186         PR target/39431
30187         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
30188         predicate.
30189         * config/i386/sync.md (sync_compare_and_swap<mode>,
30190         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
30191         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
30192         into a register.
30193         (sync_double_compare_and_swapdi_pic,
30194         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
30195         cmpxchg8b_pic_memory_operand instead of just memory_operand.
30196
30197 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30198
30199         PR target/39445
30200         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
30201
30202 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30203
30204         PR target/39327
30205         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
30206         (avx_addsubv4df3): Likewise.
30207         (*avx_addsubv4sf3): Likewise.
30208         (sse3_addsubv4sf3): Likewise.
30209
30210 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30211
30212         PR target/38824
30213         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
30214
30215 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
30216
30217         PR debug/39432
30218         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
30219         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
30220         registers for allocnos created from user-defined variables.
30221
30222 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30223
30224         PR target/39181
30225         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
30226         of non-integer mode as well.
30227
30228 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
30229
30230         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
30231         for functions for which the parameter types are unknown.
30232
30233 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
30234
30235         PR target/39137
30236         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
30237         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
30238         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
30239         * config/i386/i386.c (ix86_local_alignment): For
30240         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
30241         long long variables on the stack to avoid dynamic realignment.
30242         Allow the first argument to be a decl rather than type.
30243         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
30244
30245 2009-03-11  Nick Clifton  <nickc@redhat.com>
30246
30247         PR target/5362
30248         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
30249         options.
30250         Add description to mno-lsim option.
30251         * config/mcore/mcore.h: Remove comment about deprecated m4align
30252         option.
30253         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
30254         * doc/invoke.texi: Add description of mno-lsim and
30255         mstack-increment options.
30256
30257         * config/fr30/fr30.opt: Document the -mno-lsim option.
30258         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
30259         and -mno-lsim options.
30260
30261 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30262
30263         * fold-const.c (fold_comparison): Only call fold_inf_compare
30264         if the mode supports infinities.
30265
30266 2009-03-11  Jason Merrill  <jason@redhat.com>
30267
30268         PR debug/39086
30269         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
30270         end already did.  Notice GIMPLE_CALL modifications of the result.
30271         Don't copy debug information from an ignored decl or a decl from
30272         another function.
30273
30274 2009-03-10  Richard Guenther  <rguenther@suse.de>
30275             Nathan Froyd  <froydnj@codesourcery.com>
30276
30277         PR middle-end/37850
30278         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
30279         (__divMODE3): Likewise.
30280
30281 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
30282
30283         PR tree-optimization/39394
30284         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
30285         DECL_SIZE_UNIT of variable length FIELD_DECLs.
30286
30287 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
30288
30289         * recog.c (verfiy_changes): Disallow renaming of hard regs in
30290         inline asms for register asm ("") declarations.
30291
30292 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
30293
30294         * fold-const.c (fold_unary): Fix comment.
30295
30296 2009-03-07  Jan Hubicka  <jh@suse.cz>
30297
30298         PR target/39361
30299         * tree-inline.c (setup_one_parameter): Do replacement of const
30300         argument by constant in SSA form.
30301
30302 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30303
30304         PR middle-end/38028
30305         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
30306         determine alignment passed to assign_stack_local.
30307         (assign_parms_unsplit_complex): Likewise.
30308         * except.c (sjlj_build_landing_pads): Likewise.
30309
30310 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
30311
30312         PR middle-end/39360
30313         * tree-flow.h (add_referenced_var): Return bool instead of void.
30314         * tree-dfa.c (add_referenced_var): Return result of
30315         referenced_var_check_and_insert call.
30316         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
30317         of referenced_var_check_and_insert.
30318
30319         PR debug/39372
30320         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
30321         (gen_variable_die): Emit DW_AT_location on abstract static variable's
30322         DIE, don't emit it if abstract origin already has it.
30323         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
30324         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
30325
30326 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
30327
30328         * genpreds.c (needs_variable): Fix parentheses at variable name
30329         detection.
30330         (write_tm_constrs_h): Indent generated code.
30331
30332 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
30333
30334         * doc/extend.texi (Function Attributes): Add documentation
30335         for isr attributes.
30336
30337 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
30338
30339         PR debug/39387
30340         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
30341         take locus from its DECL_SOURCE_LOCATION instead of input_location.
30342
30343 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
30344
30345         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
30346         the loop as bad.
30347
30348 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
30349
30350         PR debug/39379
30351         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
30352         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
30353
30354 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
30355
30356         * config/i386/i386.md (R8_REG, R9_REG): New constants.
30357         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
30358         constants instead of magic numbers.
30359         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
30360         (QI_REG_P): Ditto.
30361         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
30362         (x86_64_ms_abi_int_parameter_registers): Ditto.
30363         (x86_64_int_return_registers): Ditto.
30364         (ix86_maybe_switch_abi): Ditto.
30365         (ix86_expand_call): Ditto for clobbered_registers array.
30366         (ix86_hard_regno_mode_ok): Ditto.
30367         (x86_extended_QIreg_mentioned_p): Ditto.
30368
30369 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
30370
30371         PR tree-optimization/39349
30372         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
30373
30374         * combine.c (gen_lowpart_for_combine): Use omode when generating
30375         clobber.
30376
30377 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
30378
30379         PR rtl-optimization/39235
30380         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
30381
30382 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
30383
30384         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
30385
30386 2009-03-04  Richard Guenther  <rguenther@suse.de>
30387
30388         PR tree-optimization/39362
30389         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
30390         that occur in abnormal PHIs should be varying.
30391
30392 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
30393
30394         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
30395         Extend comments.
30396         (simple_iv):  Take loop as an argument instead of statement.
30397         * tree-scalar-evolution.h (simple_iv): Declaration changed.
30398         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
30399         to simple_iv.
30400         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
30401         Ditto.
30402         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
30403         * matrix-reorg.c (analyze_transpose): Ditto.
30404         * tree-data-ref.c (dr_analyze_innermost): Ditto.
30405         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
30406         * tree-predcom.c (ref_at_iteration): Ditto.
30407         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
30408
30409 2009-03-04  Richard Guenther  <rguenther@suse.de>
30410
30411         PR tree-optimization/39358
30412         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
30413         escaped_id and callused_id.
30414         (solve_graph): Likewise.
30415
30416 2009-03-04  Richard Guenther  <rguenther@suse.de>
30417
30418         PR tree-optimization/39339
30419         * tree-sra.c (try_instantiate_multiple_fields): Make it
30420         no longer ICE on the above.
30421
30422 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
30423
30424         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
30425         that fits within Pmode.
30426
30427 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
30428
30429         PR middle-end/10109
30430         * tm.texi (LIBCALL_VALUE): Update description.
30431
30432 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
30433
30434         PR middle-end/34443
30435         * doc/extend.texi (section): Update description.
30436
30437 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
30438
30439         PR middle-end/39345
30440         * tree-inline.c (remapped_type): New.
30441         (can_be_nonlocal): Call remapped_type instead of remap_type.
30442
30443 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
30444
30445         PR fortran/39354
30446         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
30447         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
30448
30449 2009-03-03  Richard Guenther  <rguenther@suse.de>
30450
30451         PR middle-end/39272
30452         * tree.c (tree_nonartificial_location): New function.
30453         * tree.h (tree_nonartificial_location): Declare.
30454         * builtins.c (expand_builtin_memory_chk): Provide location
30455         of the call location for artificial function pieces.
30456         (maybe_emit_chk_warning): Likewise.
30457         (maybe_emit_sprintf_chk_warning): Likewise.
30458         (maybe_emit_free_warning): Likewise.
30459         * expr.c (expand_expr_real_1): Likewise.
30460
30461 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
30462
30463         PR tree-optimization/39343
30464         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
30465         COMPONENT_REF t has ARRAY_TYPE.
30466
30467 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
30468
30469         PR middle-end/39335
30470         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
30471         when the type precision of the induction variable should be
30472         larger than the type precision of nit.
30473         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
30474         * graphite.c (graphite_loop_normal_form): Same.
30475         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
30476
30477 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
30478
30479         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
30480         (*call_1_rex64_ms_sysv): Use named constants instead of magic
30481         numbers to describe clobbered registers.
30482         (*call_value_0_rex64_ms_sysv): Ditto.
30483         * config/i386/mmx.md (mmx_emms): Ditto.
30484         (mmx_femms): Ditto.
30485
30486 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
30487
30488         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
30489         of ABI_64.
30490
30491 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30492
30493         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
30494         (spu_section_type_flags): New function.
30495
30496 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
30497
30498         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
30499         reg_class_contents of FLOAT_REGS into a temporary.
30500
30501 2009-03-02  Richard Guenther  <rguenther@suse.de>
30502             Ira Rosen  <irar@il.ibm.com>
30503
30504         PR tree-optimization/39318
30505         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
30506         information to the vectorized statement.
30507
30508 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
30509
30510         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
30511         variable.  Use defined names instead of magic constants for REX SSE
30512         registers.
30513
30514 2009-03-01  Richard Guenther  <rguenther@suse.de>
30515
30516         PR tree-optimization/39331
30517         * omp-low.c (lower_send_shared_vars): Do not receive new
30518         values for the reference of DECL_BY_REFERENCE parms or results.
30519
30520 2009-03-01  Jan Hubicka  <jh@suse.cz>
30521
30522         PR debug/39267
30523         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
30524         BLOCK_NONLOCALIZED_VAR): New macros.
30525         (tree_block): Add nonlocalized_vars.
30526         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
30527         gen_decl_die): Add origin argument.  Allow generation of die with
30528         origin at hand only.
30529         (gen_member_die, gen_type_die_with_usage, force_decl_die,
30530         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
30531         of gen_*.
30532         (gen_block_die): Fix checking for unused blocks.
30533         (process_scope_var): Break out from .... ; work with origins only.
30534         (decls_for_scope) ... here; process nonlocalized list.
30535         (dwarf2out_ignore_block): Look for nonlocalized vars.
30536         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
30537         vars.
30538         (dump_scope_block): Dump them.
30539         * tree-inline.c (remap_decls): Handle nonlocalized vars.
30540         (remap_block): Likewise.
30541         (can_be_nonlocal): New predicate.
30542         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
30543
30544 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30545
30546         * configure: Regenerate.
30547
30548 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30549
30550         * optc-gen.awk: No need to duplicate option flags twice.
30551         Reuse help texts for duplicate options which do not have any.
30552
30553         * gcc.c (display_help): Document --version.
30554
30555         * gcc.c (main): If print_help_list and verbose_flag, ensure
30556         driver output comes before subprocess output.
30557
30558         * optc-gen.awk: Assign all remaining fields to help string,
30559         space-separated, for multi-line help in *.opt.
30560
30561         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
30562         -Wno-pedantic-ms-format is for MinGW targets only.
30563
30564         * doc/options.texi (Option file format): Fix bad indentation,
30565         restoring dropped sentence.
30566
30567 2009-02-28  Jan Hubicka  <jh@suse.cz>
30568
30569         * tree-inline.c (tree_function_versioning): Output debug info.
30570
30571 2009-02-28  Jan Hubicka  <jh@suse.cz>
30572
30573         PR debug/39267
30574         * tree-inline.c (setup_one_parameter): Do not copy propagate
30575         arguments when not optimizing.
30576
30577 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
30578
30579         PR target/39327
30580         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
30581         (avx_addsubv4df3): Likewise.
30582         (*avx_addsubv4sf3): Likewise.
30583         (sse3_addsubv4sf3): Likewise.
30584         (*avx_addsubv2df3): Likewise.
30585         (sse3_addsubv2df3): Likewise.
30586         (avx_unpckhps256): Correct item selectors.
30587         (avx_unpcklps256): Likewise.
30588         (avx_unpckhpd256): Likewise.
30589         (avx_unpcklpd256): Likewise.
30590
30591 2009-02-28  Jan Hubicka  <jh@suse.cz>
30592
30593         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
30594         static vars.
30595         (copy_arguments_for_versioning): If var is declared don't declare it.
30596         (tree_function_versioning): First setup substitutions and then copy
30597         args.
30598
30599 2009-02-27  Jan Hubicka  <jh@suse.cz>
30600
30601         PR debug/39267
30602         * cgraph.h (varpool_output_debug_info): Remove.
30603         * cgraphunit.c (varpool_output_debug_info): Remove.
30604         * dwarf2out.c (deferred_locations_struct): New struct
30605         (deferred_locations): New type.
30606         (deferred_locations_list): New static var.
30607         (deffer_location): New function.
30608         (gen_variable_die): Use it.
30609         (decls_for_scope): Output info on local static vars.
30610         (dwarf2out_finish): Process deferred locations.
30611         * varpool.c (varpool_output_debug_info): Remove.
30612
30613 2009-02-27  Jan Hubicka  <jh@suse.cz>
30614
30615         PR debug/39267
30616         * tree.h (TREE_PROTECTED): Fix comment.
30617         (BLOCK_HANDLER_BLOCK): Remove.
30618         (struct tree_block): Remove handler_block add body_block.
30619         (inlined_function_outer_scope_p): New.
30620         (is_body_block): Remove.
30621         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
30622         * dwarf2out.c (is_inlined_entry_point): Remove.
30623         (add_high_low_attributes): Use inlined_function_outer_scope_p.
30624         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
30625         code.
30626         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
30627         * gimplify.c (gimplify_expr): Gimplify body blocks.
30628         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
30629         block with multiple subblocks.
30630         (dump_scope_block): Prettier output; dump more flags and info.
30631         (dump_scope_blocks): New.
30632         (remove_unused_locals): Use dump_scope_blocks.
30633         * tree-flow.h (dump_scope_blocks): Declare.
30634         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
30635         * stmt.c (is_body_block): Remove.
30636         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
30637         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
30638
30639 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
30640
30641         PR middle-end/39308
30642         * graphite.c (graphite_loop_normal_form): Do not call
30643         number_of_iterations_exit from a gcc_assert.
30644
30645 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
30646
30647         * config/s390/s390.c (s390_swap_cmp): Look for conditional
30648         jumps if COND is NULL.
30649         (find_cond_jump): New function.
30650         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
30651         * config/s390/s390.md: Remove z10_cobra attribute value.
30652
30653 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
30654
30655         * config/alpha/alpha.h (alpha_expand_mov): Return false if
30656         force_const_mem returns NULL_RTX.
30657
30658 2009-02-26  Jan Hubicka  <jh@suse.cz>
30659
30660         PR debug/39267
30661         * cgraph.h (varpool_output_debug_info): Remove.
30662         * cgraphunit.c (varpool_output_debug_info): Remove.
30663         * dwarf2out.c (deferred_locations_struct): New struct
30664         (deferred_locations): New type.
30665         (deferred_locations_list): New static var.
30666         (deffer_location): New function.
30667         (gen_variable_die): Use it.
30668         (decls_for_scope): Output info on local static vars.
30669         (dwarf2out_finish): Process deferred locations.
30670         * varpool.c (varpool_output_debug_info): Remove.
30671
30672 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
30673
30674         PR rtl-optimization/39241
30675         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
30676         to subreg_offset_representable_p.
30677
30678 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
30679
30680         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
30681         execute function prototype.  Get f and nregs from max_reg_num
30682         and get_insns.  Remove the first backward pass as it's dead,
30683         guard the forward pass by flag_expensive_optimizations.
30684         (rest_of_handle_regmove): Delete.
30685         (pass_regmove): Replace it with regmove_optimize.
30686
30687 2009-02-25  Martin Jambor  <mjambor@suse.cz>
30688
30689         PR tree-optimization/39259
30690         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
30691         calls_alloca function flags.
30692         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
30693         calls are detected.
30694
30695 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
30696
30697         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
30698         flags_set_1_rtx, flags_set_1_set): Delete.
30699         (regmove_optimize): Do not call mark_flags_life_zones.
30700
30701 2009-02-24  Julian Brown  <julian@codesourcery.com>
30702
30703         PR target/35965
30704         * config/arm/arm.c (require_pic_register): Only set
30705         cfun->machine->pic_reg once per function.
30706
30707 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
30708
30709         * doc/invoke.texi (Link Options): Document an easier way to pass
30710         options that take arguments to the GNU linker using -Xlinker and -Wl.
30711
30712 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
30713
30714         PR target/33785
30715         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
30716
30717 2009-02-24  Richard Guenther  <rguenther@suse.de>
30718
30719         PR debug/39285
30720         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
30721
30722 2009-02-24  Richard Guenther  <rguenther@suse.de>
30723             Zdenek Dvorak  <ook@ucw.cz>
30724
30725         PR tree-optimization/39233
30726         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
30727         from converting them to a generic type.
30728
30729 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
30730
30731         PR tree-optimization/39260
30732         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
30733         contains a condition with a real type.
30734         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
30735
30736 2009-02-23  Jason Merrill  <jason@redhat.com>
30737
30738         PR c++/38880
30739         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
30740         narrowing_initializer_constant_valid_p.
30741         (narrowing_initializer_constant_valid_p): Don't return
30742         null_pointer_node for adding a pointer to itself.
30743
30744 2009-02-23  Jan Hubicka  <jh@suse.cz>
30745
30746         PR c/12245
30747         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
30748         resizing.
30749
30750 2009-02-23  Jan Hubicka  <jh@suse.cz>
30751
30752         PR tree-optimization/37709
30753         * tree.c (block_ultimate_origin): Move here from dwarf2out.
30754         * tree.h (block_ultimate_origin): Declare.
30755         * dwarf2out.c (block_ultimate_origin): Move to tree.c
30756         * tree-ssa-live.c (remove_unused_scope_block_p):
30757         Eliminate blocks containig no instructions nor live variables nor
30758         nested blocks.
30759         (dump_scope_block): New function.
30760         (remove_unused_locals): Enable removal of dead blocks by default;
30761         enable dumping at TDF_DETAILS.
30762
30763 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30764
30765         * config/i386/i386.c (classify_argument): Don't allow COImode
30766         and OImode.
30767         (function_arg_advance_32): Don't allow OImode.
30768         (function_arg_32): Likewise.
30769         (function_value_32): Likewise.
30770         (return_in_memory_32): Likewise.
30771         (function_arg_64): Remove OImode comment.
30772
30773 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30774
30775         PR target/39261
30776         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
30777         ix86_expand_vector_set for V4DImode in 64bit mode only.
30778         (ix86_expand_vector_init_one_var): Likewise.
30779
30780 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
30781
30782         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
30783
30784 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
30785
30786         PR bootstrap/39257
30787         * loop-iv.c: Revert last change.
30788         * emit-rtl.c: Likewise.
30789
30790 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30791
30792         PR target/39256
30793         * config/i386/i386.c (type_natural_mode): Remove an extra
30794         space in the warning message.
30795         (function_value_32): Handle 32-byte vector modes.
30796         (return_in_memory_32): Likewise.
30797
30798 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
30799
30800         * loop-iv.c (truncate_value): New function.
30801         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
30802         of lowpart_subreg.
30803         (lowpart_subreg): Move to...
30804         * emit-rtl.c: ...here.
30805
30806 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
30807
30808         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
30809         accidental and undocumented change at revision 140860.
30810
30811 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
30812
30813         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
30814         take gimple_seq * arguments.
30815         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
30816         types_compatible_p langhook.
30817
30818 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
30819             Joseph Myers  <joseph@codesourcery.com>
30820
30821         * config/arm/arm.c (arm_builtin_va_list): New function.
30822         (arm_expand_builtin_va_start): Likewise.
30823         (arm_gimplify_va_arg_expr): Likewise.
30824         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
30825         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
30826         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
30827         (va_list_type): New variable.
30828         (arm_mangle_type): Mangle va_list_type appropriately.
30829
30830 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
30831
30832         PR middle-end/39157
30833         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
30834         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
30835         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
30836         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
30837         parameter to 1000 for -O1 by default.
30838         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
30839         parameter.
30840         * loop-invariant.c: Include params.h.
30841         (move_loop_invariants): Don't call move_single_loop_invariants on
30842         very large loops.
30843
30844 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
30845
30846         * calls.c (emit_library_call_value_1): Use slot_offset instead of
30847         offset when calculating bounds for indexing stack_usage_map.  Fixes
30848         a buffer overflow with certain target setups.
30849
30850 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
30851
30852         PR target/39240
30853         * calls.c (expand_call): Clear try_tail_call if caller and callee
30854         disagree in promotion of function return value.
30855
30856 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
30857
30858         PR target/39175
30859         * c-common.c (c_determine_visibility): If visibility changed and
30860         DECL_RTL has been already set, call make_decl_rtl to update symbol
30861         flags.
30862
30863 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
30864
30865         PR c++/39188
30866         * varasm.c (assemble_variable): Don't check DECL_NAME when
30867         globalizing a variable.
30868
30869 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
30870
30871         PR c/38483
30872         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
30873         expression before any __builtin_trap call.
30874         * c-typeck.c (build_function_call): Convert and check function
30875         arguments before generating a call to a trap.  Evaluate the
30876         function arguments before the trap.
30877
30878 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
30879
30880         PR target/39228
30881         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
30882         (UNSPEC_FXAM_MEM): New unspec.
30883         (fxam<mode>2_i387_with_temp): New insn and split pattern.
30884         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
30885         memory using fxam<mode>2_i387_with_temp to remove excess precision.
30886
30887 2009-02-19  Richard Guenther  <rguenther@suse.de>
30888
30889         PR tree-optimization/39207
30890         PR tree-optimization/39074
30891         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
30892         storedanything_tree): New.
30893         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
30894         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
30895         (build_succ_graph): Add edges from STOREDANYTHING to all
30896         non-direct nodes.
30897         (init_base_vars): Initialize STOREDANYTHING.
30898         (compute_points_to_sets): Free substitution info after
30899         building the succ graph.
30900         (ipa_pta_execute): Likewise.
30901
30902         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
30903         field.
30904         (do_ds_constraint): Do not add to special var or non-pointer
30905         field solutions.
30906         (type_could_have_pointers): Split out from ...
30907         (could_have_pointers): ... here.  For arrays use the element type.
30908         (create_variable_info_for): Initialize may_have_pointers.
30909         (new_var_info): Likewise.
30910         (handle_lhs_call): Make the HEAP variable unknown-sized.
30911         (intra_create_variable_infos): Use a type with pointers for
30912         PARM_NOALIAS, make it unknown-sized.
30913
30914 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
30915
30916         PR target/39224
30917         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
30918
30919 2009-02-18  Jason Merrill  <jason@redhat.com>
30920
30921         PR target/39179
30922         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
30923         value if DECL_EXTERNAL.
30924         * tree-sra.c (sra_walk_gimple_assign): Likewise.
30925         * target.h (gcc_target::binds_local_p): Clarify "module".
30926         * tree.h (TREE_PUBLIC): Clarify "module".
30927
30928 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
30929
30930         PR target/38891
30931         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
30932         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
30933
30934 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
30935
30936         PR target/39082
30937         * c.opt (Wabi): Support C and ObjC.
30938         (Wpsabi): New.
30939
30940         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
30941
30942         * config/i386/i386.c (classify_argument): Warn once about the ABI
30943         change when passing union with long double.
30944
30945         * doc/invoke.texi: Update -Wabi for warning psABI changes.
30946
30947 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
30948
30949         PR c/35447
30950         * c-parser.c (c_parser_compound_statement): Always enter and leave
30951         a scope.
30952
30953 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30954
30955         PR target/34587
30956         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
30957
30958 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
30959
30960         PR tree-optimization/36922
30961         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
30962         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
30963         Likewise.
30964
30965 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30966
30967         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
30968         to 0 for EABI64.
30969
30970 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30971
30972         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
30973
30974 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30975
30976         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
30977         tree sharing.
30978
30979 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
30980             Richard Sandiford  <rdsandiford@googlemail.com>
30981
30982         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
30983         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
30984         (loongson_biadd): ...this.
30985
30986 2009-02-17  Richard Guenther  <rguenther@suse.de>
30987
30988         PR tree-optimization/39202
30989         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
30990         a var make sure to follow existing collapses.
30991
30992 2009-02-17  Richard Guenther  <rguenther@suse.de>
30993
30994         PR middle-end/39214
30995         * langhooks.c (lhd_print_error_function): Check for NULL block.
30996
30997 2009-02-17  Richard Guenther  <rguenther@suse.de>
30998
30999         PR tree-optimization/39204
31000         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
31001         of the PHI arg.
31002
31003 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
31004
31005         * config/soft-fp/double.h: Update from glibc CVS.
31006
31007 2009-02-17  Richard Guenther  <rguenther@suse.de>
31008
31009         PR tree-optimization/39207
31010         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
31011         strict-aliasing warnings for pointers pointing to NULL.
31012
31013 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
31014
31015         PR c/35446
31016         * c-parser.c (c_parser_braced_init): Call pop_init_level when
31017         skipping until next close brace.
31018
31019 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
31020
31021         PR target/37049
31022         * config/i386/i386.c (ix86_expand_push): Set memory alignment
31023         to function argument boundary.
31024
31025 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31026
31027         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
31028         in the lea_add. Reload eventually constraints it properly.
31029         * config/picochip/constraints.md: Remove the target constraint
31030         "b", since it is not needed anymore.
31031
31032 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
31033
31034         * gthr-dce.h: Uglify function parameter and local variable names.
31035         * gthr-gnat.h: Likewise.
31036         * gthr-mipssde.h: Likewise.
31037         * gthr-nks.h: Likewise.
31038         * gthr-posix95.h: Likewise.
31039         * gthr-posix.h: Likewise.
31040         * gthr-rtems.h: Likewise.
31041         * gthr-single.h: Likewise.
31042         * gthr-solaris.h: Likewise.
31043         * gthr-tpf.h: Likewise.
31044         * gthr-vxworks.h: Likewise.
31045         * gthr-win32.h: Likewise.
31046
31047 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
31048
31049         PR target/39196
31050         * config/i386/i386.md: Restrict the new peephole2 to move
31051         between MMX/SSE registers.
31052
31053 2009-02-15  Richard Guenther  <rguenther@suse.de>
31054
31055         Revert
31056         2009-02-13  Richard Guenther  <rguenther@suse.de>
31057
31058         * configure.ac: Enable LFS.
31059         * configure: Re-generate.
31060         * config.in: Likewise.
31061
31062 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31063
31064         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
31065         spu_srqwbyte, spu_srqwbytebc): Define.
31066         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
31067         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
31068         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
31069         "shrqby_<mode>"): New insn-and-split patterns.
31070         * config/spu/spu.c (expand_builtin_args): Determine and return
31071         number of operands using spu_builtin_description data.
31072         (spu_expand_builtin_1): Use it.
31073
31074 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
31075
31076         PR target/38056
31077         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
31078         TARGET_CONST_GP.
31079
31080 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31081
31082         PR target/39149
31083         * config/i386/i386.c (override_options): Correct warning
31084         messages for -malign-loops, -malign-jumps and -malign-functions.
31085
31086 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31087
31088         PR target/39152
31089         * config/i386/i386.md: Restrict the new peephole2 to move
31090         between the general purpose registers.
31091
31092 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31093
31094         PR target/39162
31095         * config/i386/i386.c (type_natural_mode): Add a new argument.
31096         Return the original mode and warn ABI change if vector size is 32byte.
31097         (function_arg_advance): Updated.
31098         (function_arg): Likewise.
31099         (ix86_function_value): Likewise.
31100         (ix86_return_in_memory): Likewise.
31101         (ix86_sol10_return_in_memory): Likewise.
31102         (ix86_gimplify_va_arg): Likewise.
31103         (function_arg_32): Don't warn ABX ABI change here.
31104         (function_arg_64): Likewise.
31105
31106 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
31107
31108         * loop-iv.c (implies_p): In the final case, test that operands 0
31109         of the two comparisons match.
31110
31111         * config/bfin/bfin.c (find_prev_insn_start): New function.
31112         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
31113         (find_next_insn_start): Move.
31114
31115 2009-02-13  Richard Guenther  <rguenther@suse.de>
31116
31117         * configure.ac: Enable LFS.
31118         * configure: Re-generate.
31119         * config.in: Likewise.
31120
31121 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
31122
31123         PR c/35444
31124         * c-parser.c (c_parser_parms_list_declarator): Discard pending
31125         sizes on syntax error after some arguments have been parsed.
31126
31127 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
31128
31129         * doc/invoke.texi (-fira): Remove.
31130
31131 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31132
31133         * caller-save.c: Replace regclass.c with reginfo.c in comments.
31134         * recog.c: Likewise.
31135         * rtl.h: Likewise.
31136
31137 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
31138
31139         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
31140         (umul_ppmm): Likewise.
31141         (count_leading_zeros): Likewise.
31142         (count_trailing_zeros): Likewise.
31143         (UMUL_TIME): Likewise.
31144
31145 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31146
31147         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
31148         soft-fp/t-softfp to tmake_file.
31149
31150         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
31151         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
31152         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
31153         IA64_BUILTIN_INFQ]: New.
31154         (ia64_init_builtins): Initialize __builtin_infq,
31155         __builtin_fabsq and __builtin_copysignq if not HPUX.
31156         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
31157         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
31158
31159         * config/ia64/lib1funcs.asm (__divtf3): Define only if
31160         SHARED is defined.
31161         (__fixtfti): Likewise.
31162         (__fixunstfti): Likewise.
31163         (__floattitf): Likewise.
31164
31165         * config/ia64/libgcc-glibc.ver: New.
31166         * config/ia64/t-fprules-softfp: Likewise.
31167         * config/ia64/sfp-machine.h: Likewise.
31168
31169         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
31170         (LIBGCC2_TF_CEXT): Likewise.
31171         (TF_SIZE): Likewise.
31172         (TARGET_INIT_LIBFUNCS): Likewise.
31173
31174         * config/ia64/t-glibc (SHLINB_MAPFILES):
31175         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
31176
31177 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31178
31179         * config/i386/i386.c (construct_container): Rewrite processing
31180         BLKmode with X86_64_SSE_CLASS.
31181
31182 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
31183
31184         PR target/39152
31185         * config/i386/i386.md: Replace simplify_replace_rtx with
31186         replace_rtx in the new peephole2.
31187
31188 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
31189
31190         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
31191         loop unrolling do not happen at -O2.
31192
31193 2009-02-12  Michael Matz  <matz@suse.de>
31194
31195         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
31196
31197 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
31198
31199         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
31200         for -g3.
31201
31202 2009-02-12  Ben Elliston  <bje@au.ibm.com>
31203
31204         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
31205         patterns when updating the back chain.  Missed in the 2009-02-10
31206         change.
31207
31208 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
31209
31210         * doc/extend.texi (Decimal Floating Types): Update identifier of
31211         draft TR and list of missing support.
31212
31213 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
31214
31215         PR middle-end/39154
31216         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
31217         bit to variable length decl's flags, add it also to its
31218         pointer replacement variable.
31219
31220 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
31221             Jakub Jelinek  <jakub@redhat.com>
31222
31223         PR target/39118
31224         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
31225         (memory_blockage): New expander.
31226         (*memory_blockage): New insn pattern.
31227         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
31228         instead of general blockage at the end of function prologue when
31229         frame pointer is used to access red zone area.  Do not emit blockage
31230         when profiling, it is emitted in generic code.
31231         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
31232         function epilogue when frame pointer is used to access red zone area.
31233
31234 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
31235
31236         PR target/38824
31237         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
31238         by arithmetic with memory operands.
31239         * config/i386/predicates.md (commutative_operator): New.
31240
31241 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
31242
31243         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
31244         bulleted lists.
31245
31246 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
31247
31248         * alias.h (record_alias_subset): Declare.
31249         * alias.c (record_alias_subset): Make global.
31250
31251 2009-02-10  Nick Clifton  <nickc@redhat.com>
31252
31253         * tree-parloops.c: Change license to GPLv3.
31254         * ipa-struct-reorg.c: Change license to GPLv3.
31255         * ipa-struct-reorg.h: Change license to GPLv3.
31256
31257 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
31258
31259         PR c/39084
31260         * c-decl.c (start_struct): Return NULL on error.
31261
31262 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
31263
31264         PR middle-end/39124
31265         * cfgloopmanip.c (remove_path): Call remove_bbs after
31266         cancel_loop_tree, not before it.
31267
31268         PR target/39139
31269         * function.h (struct function): Add has_local_explicit_reg_vars bit.
31270         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
31271         VAR_DECLs were seen.
31272         * tree-ssa-live.c (remove_unused_locals): Recompute
31273         cfun->has_local_explicit_reg_vars.
31274         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
31275         copies or clearings if cfun->has_local_explicit_reg_vars.
31276
31277 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
31278
31279         PR target/39118
31280         * config/i386/i386.c (expand_prologue): Emit blockage at the end
31281         of function prologue when frame pointer is used to access
31282         red zone area.
31283
31284 2009-02-10  Richard Guenther  <rguenther@suse.de>
31285
31286         PR middle-end/39127
31287         * gimplify.c (gimple_regimplify_operands): Always look if
31288         we need to create a temporary.
31289
31290 2009-02-10  Richard Guenther  <rguenther@suse.de>
31291
31292         PR tree-optimization/39132
31293         * tree-loop-distribution.c (todo): New global var.
31294         (generate_memset_zero): Trigger TODO_rebuild_alias.
31295         (tree_loop_distribution): Return todo.
31296
31297 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
31298
31299         PR target/39119
31300         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
31301         (x86_64_reg_class_name): Removed.
31302         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
31303         first one isn't X86_64_SSE_CLASS or any other ones aren't
31304         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
31305         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
31306         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
31307         and 3 X86_64_SSEUP_CLASS.
31308         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
31309         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
31310
31311 2009-02-10  Ben Elliston  <bje@au.ibm.com>
31312
31313         * config/rs6000/rs6000.md (allocate_stack): Always use an update
31314         form instruction to update the stack back chain word, even if the
31315         user has disabled the generation of update instructions.
31316         (movdi_<mode>_update_stack): New.
31317         (movsi_update_stack): Likewise.
31318         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
31319         always use an update form instruction to update the stack back
31320         chain word.
31321
31322 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
31323
31324         PR middle-end/38953
31325         * graphite.c (if_region_set_false_region): After moving a region in
31326         the false branch of a condition, remove the empty dummy basic block.
31327         (gloog): Remove wrong fix for PR38953.
31328
31329 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31330
31331         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
31332         generation due to implicit sign extension.
31333
31334 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
31335
31336         PR middle-end/38981
31337         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
31338         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
31339
31340 2009-02-09  Richard Guenther  <rguenther@suse.de>
31341
31342         PR middle-end/35202
31343         * convert.c (convert_to_real): Disable (float)fn((double)x)
31344         to fnf(x) conversion if errno differences may occur and
31345         -fmath-errno is set.
31346
31347 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
31348
31349         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
31350         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
31351         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
31352
31353 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
31354
31355         PR c/35434
31356         * c-common.c (handle_alias_attribute): Disallow attribute for
31357         anything not a FUNCTION_DECL or VAR_DECL.
31358
31359 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
31360
31361         PR c/39035
31362         * real.c (do_compare): Special-case compare of zero against
31363         decimal float value.
31364
31365 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
31366
31367         PR c/36432
31368         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
31369         as indicating flexible array members unless the field itself is
31370         being declarared as the incomplete array.
31371
31372 2009-02-06  Jan Hubicka  <jh@suse.cz>
31373
31374         PR tree-optimization/38844
31375         * ipa-inline.c (try_inline): Stop inlining recursion when edge
31376         is already inlined.
31377
31378 2009-02-06  Richard Guenther  <rguenther@suse.de>
31379
31380         PR middle-end/38977
31381         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
31382         fork because we may expand it as __gcov_fork.
31383
31384 2009-02-06  Nick Clifton  <nickc@redhat.com>
31385
31386         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
31387
31388 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
31389
31390         PR tree-optimization/35659
31391         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
31392         vn_phi_eq): Shortcut if hashcode does not match.
31393         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
31394         NULL operands.
31395         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
31396         and avoid iterative_hash_expr.
31397         (FOR_EACH_VALUE_ID_IN_SET): New.
31398         (value_id_compare): Remove.
31399         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
31400         sort expressions by value id.
31401
31402 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
31403
31404         PR target/38991
31405         * config/sh/predicates.md (general_movsrc_operand): Don't check
31406         the subreg of system registers here.
31407
31408 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
31409
31410         PR c++/39106
31411         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
31412         on the copied decl.
31413
31414 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
31415
31416         PR rtl-optimization/39110
31417         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
31418         addresses, not aligned ones.
31419
31420 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
31421             Richard Guenther  <rguenther@suse.de>
31422
31423         PR tree-optimization/39100
31424         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
31425         comment says and add edges.
31426
31427 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
31428
31429         PR c/35435
31430         * c-common.c (handle_tls_model_attribute): Ignore attribute for
31431         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
31432
31433 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
31434
31435         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
31436         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
31437         register_bb_in_sese, new_sese, free_sese): Moved.
31438         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
31439         outermost_loop_in_scop, build_scop_iteration_domain,
31440         expand_scalar_variables_ssa_name, get_vdef_before_scop,
31441         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
31442         Use loop_in_sese_p instead of loop_in_scop_p.
31443         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
31444         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
31445         (scopdet_basic_block_info): Fix bug in scop detection.
31446         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
31447         eq_loop_to_cloog_loop): Remove.
31448         (nb_loops_around_loop_in_scop, nb_loop
31449         ref_nb_loops): Moved here...
31450         * graphite.h (ref_nb_loops): ... from here.
31451         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
31452         (loop_domain_dim, loop_iteration_vector_dim): Remove.
31453         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
31454
31455 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
31456             Hans-Peter Nilsson  <hp@axis.com>
31457
31458         PR rtl-optimization/37889
31459         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
31460         Move offset handling from PLUS to before the switch.  Use new
31461         arguments when considering SYMBOL_REFs too.
31462         (rtx_addr_can_trap_p): Pass dummy offset and size.
31463         (enum may_trap_p_flags): Remove.
31464         (may_trap_p_1): Pass size from MEM_SIZE.
31465
31466         PR rtl-optimization/38921
31467         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
31468         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
31469         * rtlanal.c (may_trap_after_code_motion_p): Delete.
31470         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
31471
31472 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
31473
31474         AVX Programming Reference (January, 2009)
31475         * config/i386/sse.md (*vpclmulqdq): New.
31476
31477 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
31478
31479         PR tree-optimization/38977
31480         PR gcov-profile/38292
31481         * calls.c (special_function_p): Disregard __builtin_ prefix.
31482
31483 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
31484
31485         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
31486         non-indexable addresses even before reload.
31487
31488 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
31489
31490         PR c/29129
31491         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
31492         as having variable size.  Do not give an error for unnamed
31493         parameters with [*] declarators.  Give a warning for type names
31494         with [*] declarators and mark them as variable size.
31495         * c-parser.c (c_parser_sizeof_expression): Do not give an error
31496         for sizeof applied to [*] type names.
31497
31498 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31499
31500         PR C++/36607
31501         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
31502
31503 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
31504
31505         * gcc.c (process_command): Update copyright notice dates.
31506         * gcov.c (print_version): Likewise.
31507         * gcov-dump.c (print_version): Likewise.
31508         * mips-tfile.c (main): Likewise.
31509         * mips-tdump.c (main): Likewise.
31510
31511 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
31512
31513         PR c/35433
31514         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
31515         for composite type involving a zero-length array type.
31516
31517 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
31518
31519         PR target/35318
31520         * function.c (match_asm_constraints_1): Skip over
31521         initial optional % in the constraint.
31522
31523         PR inline-asm/39059
31524         * c-parser.c (c_parser_postfix_expression): If fixed point is not
31525         supported, don't accept FIXED_CSTs.
31526         * c-decl.c (finish_declspecs): Error if fixed point is not supported
31527         and _Sat is used without _Fract/_Accum.  Set specs->type to
31528         integer_type_node for cts_fract/cts_accum if fixed point is not
31529         supported.
31530
31531 2009-02-02  Catherine Moore  <clm@codesourcery.com>
31532
31533         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
31534
31535 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
31536
31537         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
31538         (ABI_HAS_64BIT_SYMBOLS): Use it.
31539         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
31540
31541 2009-02-02  Paul Brook  <paul@codesourcery.com>
31542
31543         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
31544
31545 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
31546
31547         PR inline-asm/39058
31548         * recog.h (asm_operand_ok): Add constraints argument.
31549         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
31550         recurse on matching constraint.
31551         (check_asm_operands): Pass constraints as 3rd argument to
31552         asm_operand_ok.  Don't look up matching constraint here.
31553         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
31554         to asm_operand_ok.
31555
31556 2009-02-02  Ben Elliston  <bje@au.ibm.com>
31557
31558         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
31559         TARGET_NARROW_VOLATILE_BITFIELD macro names.
31560
31561 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31562
31563         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
31564         information.  Remove some obsolete information.  Reorganize.
31565
31566         * config/pa/fptr.c: Revert license to GPL 2.
31567         * config/pa/milli64.S: Likewise.
31568
31569 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
31570
31571         PR target/38904
31572         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
31573         LIBRARY name in, instead of hard-coding it.
31574         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
31575         extra target make frag to tmake_files according to EH model.
31576         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
31577         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
31578         frags that define makefile variable EH_MODEL appropriately.
31579         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
31580         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
31581         to "-sjlj" according to type of EH configured.
31582         (LIBGCC_SONAME):  Concatenate it to shared library base name.
31583         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
31584         to "_sjlj" according to type of EH configured.
31585         (LIBGCC_SONAME):  Concatenate it to shared library base name.
31586         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
31587         (SHLIB_LINK):  Add missing semicolon to if-else construct.
31588         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
31589         string value of "pe_dll" command-line option.
31590         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
31591         (SHLIB_SONAME):  Use it when overriding t-cygming default.
31592         (SHLIB_IMPLIB):  Override t-cygming default.
31593         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
31594         string value of "pe_dll" command-line option.
31595
31596 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
31597
31598         PR target/38952
31599         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
31600         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
31601
31602 2009-01-31  Richard Guenther  <rguenther@suse.de>
31603
31604         PR tree-optimization/38937
31605         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
31606         computing the transitive closure.
31607
31608 2009-01-30  Richard Guenther  <rguenther@suse.de>
31609
31610         PR tree-optimization/39041
31611         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
31612         Propagate variable indices only if the types match for this stmt.
31613
31614 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
31615
31616         PR target/39013
31617         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
31618         inline but never defined.
31619
31620 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
31621
31622         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
31623         (*insv_h_di_reg_extimm): New insn.
31624         (*insv_l<mode>_reg_extimm): New insn.
31625
31626 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
31627
31628         * config/picochip/picochip.c (flag_conserve_stack): set
31629         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
31630         fconserve-stack. Reduce call-overhead used by inliner.
31631
31632 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
31633
31634         PR/38157
31635         * common.opt (flag_conserve_stack): Initialised to zero.
31636
31637 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
31638
31639         PR/39002
31640         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
31641         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
31642         method.
31643
31644 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
31645
31646         * ira-color.c (allocno_reload_assign): Update comments.
31647         * regmove.c (regmove_optimize): Likewise.
31648
31649         * ra.h: Removed.
31650
31651 2009-01-29  Robert Millan  <rmh@aybabtu.com>
31652
31653         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
31654         * config/i386/kopensolaris-gnu.h: New file.  Undefine
31655         `MD_UNWIND_SUPPORT'.
31656         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
31657
31658 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
31659
31660         PR tree-optimization/39007
31661         * tree-loop-distribution.c (generate_builtin): Use
31662         recompute_dominator to compute the immediate dominator of the
31663         basic block just after the loop.
31664
31665 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
31666
31667         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
31668         (ASM_OUTPUT_DWARF_PCREL): Define.
31669
31670 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
31671
31672         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
31673         * doc/passes.texi: Remove entries about regclass, local-alloc, and
31674         global.  Modify entries about regmove and IRA.
31675
31676         * ra-conflict.c: Remove the file.
31677
31678         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
31679
31680         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
31681         (pass_regclass_init): Rename to pass_reginfo_init.
31682
31683         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
31684
31685         * toplev.h (flag_ira): Remove.
31686
31687         * caller-save.c (setup_save_areas): Remove flag_ira.
31688
31689         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
31690
31691         * global.c: Remove the file.
31692
31693         * opts.c (decode_options): Remove flag_ira.
31694
31695         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
31696
31697         * regmove.c: Modify file description.
31698         (find_use_as_address, try_auto_increment): Define them only if
31699         AUTO_INC_DEC is defined.
31700         (replacement_quality, replace_in_call_usage, fixup_match_1,
31701         stable_and_no_regs_but_for_p): Remove.
31702         (reg_set_in_bb): Make it static.
31703         (regmove_optimize): Remove flag_ira and code which worked for
31704         !flag_ira.
31705
31706         * local-alloc.c: Remove the file.
31707
31708         * common.opt (fira): Remove.
31709
31710         * ira.c: Include except.h.
31711         (eliminable_regset): Move from global.c.
31712         (mark_elimination): Ditto.  Remove flag_ira.
31713         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
31714         equiv_mem_modified, validate_equiv_mem_from_store,
31715         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
31716         contains_replace_regs, memref_referenced_p, memref_used_between_p,
31717         no_equiv, recorded_label_ref): Move from local-alloc.c.
31718         (update_equiv_regs): Ditto.  Make it static.
31719         (print_insn_chain, print_insn_chains): Move it from global.c.
31720         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
31721         (build_insn_chain): Ditto.  Make it static.
31722         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
31723         Rename to init_live_subregs.
31724         (gate_ira): Remove flag_ira.
31725
31726         * regclass.c: Rename reginfo.c.  Change file description.
31727         (FORBIDDEN_INC_DEC_CLASSES): Remove.
31728         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
31729         (init_reg_sets_1): Remove code for evaluation of
31730         reg_class_superclasses and losing_caller_save_reg_set.
31731         (init_regs): Remove init_reg_autoinc.
31732         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
31733         ok_for_base_p_nonstrict): Remove.
31734         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
31735         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
31736         corresponding entries.
31737         (dump_regclass, record_operand_costs, scan_one_insn,
31738         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
31739         record_address_regs, auto_inc_dec_reg_p): Remove.
31740         (gt-regclass.h): Rename to gt-reginfo.h.
31741
31742         * rtl.h (dump_global_regs, retry_global_alloc,
31743         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
31744
31745         * Makefile.in (RA_H): Remove.
31746         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
31747         Rename regclass.o to reginfo.o.
31748         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
31749         gt-reginfo.h.
31750         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
31751         (GTFILES): Rename regclass.c to reginfo.c.
31752
31753         * passes.c (init_optimization_passes): Remove pass_local_alloc and
31754         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
31755
31756         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
31757         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
31758         Remove flag_ira.
31759         (finish_spills): Ditto.  Remove code for !flag_ira.
31760
31761 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
31762
31763         PR middle-end/35854
31764         * doc/invoke.texi (rtl debug options): Complete rewrite.
31765         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
31766         to auto_inc_dec".
31767         * mode-switching.c (pass_mode_switching): Rename pass from
31768         "mode-sw" to "mode_sw".
31769         * except.c (pass_convert_to_eh_ranges): Rename pass from
31770         "eh-ranges" to "eh_ranges".
31771         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
31772         to "subreg1".
31773
31774
31775 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
31776             Alexander Monakov  <amonakov@ispras.ru>
31777
31778         PR middle-end/38857
31779         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
31780         register.
31781         (move_exprs_to_boundary): Change return type and pass through
31782         should_move from move_op.  Relax assert.  Update usage ...
31783         (schedule_expr_on_boundary): ... here.  Use should_move instead of
31784         cant_move.
31785         (move_op_orig_expr_found): Indicate that insn was disconnected from
31786         stream.
31787         (code_motion_process_successors): Do not call after_merge_succs
31788         callback if original expression was not found when traversing any of
31789         the branches.
31790         (code_motion_path_driver): Change return type.  Update prototype.
31791         (move_op): Update comment.  Add a new parameter (should_move).  Update
31792         prototype.  Set *should_move based on indication provided by
31793         move_op_orig_expr_found.
31794
31795 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
31796
31797         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
31798         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
31799         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
31800         * config/rs6000/rs6000.c (rs6000_override_options): Default
31801         avoid-indexed-addresses on for Power6, off for everything else.
31802         (avoiding_indexed_address_p): New function.
31803         (rs6000_legitimize_address): Use it.
31804         (rs6000_legitimate_address): Likewise.
31805         * config/rs6000/rs6000.md (movXX_updateX): Likewise
31806
31807 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
31808
31809         PR tree-optimization/38997
31810         * tree-loop-distribution.c (generate_memset_zero): Use
31811         POINTER_PLUS_EXPR for a pointer addition.
31812
31813 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
31814
31815         * config/s390/s390.md (bswap<mode>2): New pattern added.
31816
31817 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31818
31819         * config/s390/s390.md (*tls_load_31): Added type attribute.
31820
31821 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31822
31823         * config/s390/s390.md: Fix a few comments.
31824
31825 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31826
31827         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
31828         (*tm<mode>_full): Fixed z10prop attribute.
31829         (*tst<mode>_extimm): Fixed z10prop attribute.
31830         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
31831         (*tstqiCCT_cconly): Fixed z10prop attribute.
31832         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
31833         (*movsi_larl): Fixed z10prop attribute.
31834         (*movsi_zarch): Fixed z10prop attribute.
31835         (*movsi_eas): Fixed z10prop attribute.
31836         (*movhi): Fixed z10prop attribute.
31837         (*movqi): Fixed z10prop attribute.
31838         (*movstrictqi): Fixed z10prop attribute.
31839         (*mov<mode>): Fixed z10prop attribute.
31840         (*movcc): Fixed z10prop attribute.
31841         (*sethighpartdi_64): Fixed z10prop attribute.
31842         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
31843         (*negdi2_sign_cc): Fixed z10prop attribute.
31844         (*negdi2_sign): Fixed z10prop attribute.
31845         (*absdi2_sign_cc): Fixed z10prop attribute.
31846         (*absdi2_sign): Fixed z10prop attribute.
31847         (*negabsdi2_sign_cc): Fixed z10prop attribute.
31848         (*negabsdi2_sign): Fixed z10prop attribute.
31849         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
31850         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
31851         (doloop_si64): Fixed z10prop attribute.
31852         (doloop_si31): Fixed z10prop attribute.
31853         (doloop_long): Fixed z10prop attribute.
31854         (indirect_jump): Fixed z10prop attribute.
31855         (nop): Fixed z10prop attribute.
31856         (main_base_64): Fixed z10prop attribute.
31857         (reload_base_64): Fixed z10prop attribute.
31858
31859 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
31860
31861         PR rtl-optimization/38740
31862         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
31863         if !optimize.
31864         * config/mips/mips.c (mips_reorg): Likewise.
31865
31866 2009-01-28  Richard Guenther  <rguenther@suse.de>
31867
31868         PR tree-optimization/38926
31869         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
31870         with the correct value id to a value.
31871         (do_regular_insertion): Use the value number of edoubleprime
31872         for the value number of the expr.
31873
31874         Revert
31875         2008-08-21  Richard Guenther  <rguenther@suse.de>
31876
31877         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
31878         a PHI ask VN if it is already available.
31879         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
31880         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
31881
31882 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
31883
31884         PR middle-end/38934
31885         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
31886         set to varying whenever max has TREE_OVERFLOW set, similarly
31887         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
31888
31889 2009-01-28  Richard Guenther  <rguenther@suse.de>
31890
31891         PR middle-end/38908
31892         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
31893         uninitialized aggregate uses in call arguments.
31894
31895 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
31896
31897         PR tree-optimization/38984
31898         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
31899         the nothing_id variable if -fno-delete-null-pointer-checks.
31900
31901 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
31902
31903         PR target/38988
31904         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
31905         (set_got_offset_rex64): Ditto.
31906
31907 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
31908
31909         PR target/38941
31910         * doc/extend.texi: Improve local variable with asm reg.
31911
31912 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
31913
31914         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
31915         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
31916         was not supplied then set warn_packed_bitfield_compat to the
31917         default value of 1.
31918         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
31919         against 1.
31920
31921 2009-01-27  Richard Guenther  <rguenther@suse.de>
31922
31923         PR tree-optimization/38503
31924         * cfgexpand.c (expand_gimple_basic_block): Ignore
31925         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
31926         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
31927         variables that cannot have TBAA applied.
31928         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
31929         statements.
31930
31931 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
31932
31933         PR middle-end/38969
31934         * calls.c (initialize_argument_information): Do not wrap complex
31935         arguments in SAVE_EXPR.
31936
31937 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
31938
31939         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
31940         (INSTALL_LIBGCC): Revert typo commit.
31941
31942 2009-01-26  Richard Guenther  <rguenther@suse.de>
31943
31944         PR tree-optimization/38745
31945         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
31946         from special handling.
31947
31948 2009-01-26  Richard Guenther  <rguenther@suse.de>
31949
31950         PR tree-optimization/38745
31951         * tree-ssa.c (execute_update_addresses_taken): Do not include
31952         variables that cannot possibly be a register in not_reg_needs.
31953         Do not clear TREE_ADDRESSABLE on vars that may not become
31954         registers.
31955         * tree-ssa.c (update_alias_info_1): Include those in the set
31956         of addressable vars.
31957
31958 2009-01-26  Richard Guenther  <rguenther@suse.de>
31959
31960         PR middle-end/38851
31961         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
31962         * tree-ssa-dse.c: Include langhooks.h
31963         (execute_simple_dse): Remove stores with zero size.
31964
31965 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
31966
31967         PR c/38957
31968         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
31969         as PLUS_EXPR.
31970
31971 2009-01-24  Julian Brown  <julian@codesourcery.com>
31972
31973         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
31974         config/arm/linux-atomic.c.
31975         * config/arm/linux-atomic.c: New.
31976
31977 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
31978
31979         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
31980         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
31981         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
31982
31983 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
31984
31985         PR c/38938
31986         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
31987         properly.
31988
31989 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
31990
31991         PR tree-optimization/38953
31992         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
31993         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
31994         (gloog): Split the exit of the scop when the scop exit is a loop exit.
31995         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
31996         changed the CFG.
31997
31998 2009-01-24  Paul Brook  <paul@codesourcery.com>
31999
32000         * config/arm/neon.md (neon_type): Move to arm.md.
32001         (neon_mov<VSTRUCT>): Add neon_type attribute.
32002         * config/arm/arm.md (neon_type): Move to here.
32003         (conds): Add "unconditioal" and use as default for NEON insns.
32004
32005 2009-01-24  Ben Elliston  <bje@au.ibm.com>
32006
32007         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
32008         void *' warning from -Wc++-compat.
32009         * Makefile.in (dominance.o-warn): Remove.
32010
32011 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
32012
32013         PR tree-optimization/38932
32014         * fold-const.c (fold_unary_ignore_overflow): New.
32015         * tree.h (fold_unary_ignore_overflow): Declare.
32016         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
32017         * tree-ssa-sccvn.c (visit_reference_op_load,
32018         simplify_unary_expression): Likewise.
32019
32020 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
32021
32022         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
32023         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
32024         regardless of their type.
32025         * c-common.c (handle_packed_attribute): Don't ignore packed on
32026         bitfields.
32027         * c.opt (Wpacked-bitfield-compat): New warning option.
32028         * stor-layout.c (place_field): Warn if offset of a field changed.
32029         * doc/extend.texi (packed): Mention the ABI change.
32030         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
32031         (Warning Options): Add it to the list.
32032
32033 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
32034
32035         * c-opts.c (c_common_post_options): Fix a typo in comments.
32036
32037 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
32038
32039         PR middle-end/38615
32040         * gimplify.c (gimplify_init_constructor): Fix promotion of const
32041         variables to static.
32042         * doc/invoke.texi (-fmerge-all-constants): Update description.
32043
32044 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
32045
32046         PR target/38931
32047         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
32048         (*movdi_1_rex64): Use type "mmx" for alternative 5.
32049
32050 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
32051
32052         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
32053         a word boundary.
32054         (LOCAL_ALIGNMENT): Similarly.
32055
32056 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
32057             Joseph Myers  <joseph@codesourcery.com>
32058
32059         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
32060         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
32061         * config/arm/arm-tune.md: Regenerate.
32062         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
32063         -march=iwmmxt2.
32064
32065 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
32066
32067         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
32068         version number to five.
32069
32070 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
32071
32072         PR c++/38930
32073         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
32074         * c-common.c (set_underlying_type): Likewise.
32075         (is_typedef_decl ): Likewise
32076         * tree.h: Likewise
32077         (set_underlying_type): Likewise.
32078         (is_typedef_type): Likewise.
32079
32080 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
32081
32082         PR middle-end/38587
32083         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
32084         crossing setjmps.
32085
32086 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
32087
32088         PR bootstrap/37660
32089         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
32090         (LIBGCC_SPEC):  Don't define.
32091         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
32092
32093 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
32094
32095         PR rtl-optimization/38879
32096         * alias.c (base_alias_check): Unaligned access via AND address can
32097         alias all surrounding object types except those with sizes equal
32098         or wider than the size of unaligned access.
32099
32100 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
32101
32102         PR c++/26693
32103         * c-decl.c (clone_underlying_type): Move this ...
32104         * c-common.c (set_underlying_type): ... here.
32105         Also, make sure the function properly sets TYPE_STUB_DECL() on
32106         the newly created typedef variant type.
32107         (is_typedef_decl ): New entry point.
32108         * tree.h: Added a new member member_types_needing_access_check to
32109         struct tree_decl_non_common.
32110         (set_underlying_type): New entry point.
32111         (is_typedef_type): Likewise.
32112
32113 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
32114
32115         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
32116         Check whether two instructions have memory references that
32117         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
32118         are helper functions for traversing.
32119         * alias.h (insn_alias_sets_confilict_p): New prototypes.
32120         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
32121         not to draw dependency edge for instructions with non-conflicting
32122         alias sets.
32123
32124 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
32125
32126         PR other/38758
32127         * longlong.h: Update copyright years.  Use soft-fp license notice.
32128         Sync __clz_tab declaration with glibc.
32129
32130 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
32131
32132         PR target/30687
32133         * doc/extend.texi (syscall_linkage): New.
32134         (version_id): Modify.
32135
32136 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32137             Richard Guenther  <rguenther@suse.de>
32138
32139         PR tree-optimization/38747
32140         PR tree-optimization/38748
32141         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
32142         conversion if the base address is an indirect reference and the
32143         aliasing sets could cause issues.
32144
32145 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
32146
32147         * common.opt (fgraphite, fgraphite-identity): Add comment for
32148         explaining why these options are not documented.
32149
32150 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
32151
32152         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
32153         gimple_call_lhs is NULL.
32154
32155 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
32156
32157         PR target/38868
32158         * emit-rtl.c (adjust_address_1): Make sure memref is never
32159         overwritten.
32160
32161 2009-01-20  Ben Elliston  <bje@au.ibm.com>
32162
32163         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
32164         const qualifier from arg parameter. Remove unnecessary cast to char *.
32165         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
32166         const qualifier from arg 2.
32167
32168 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
32169
32170         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
32171
32172 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
32173
32174         PR c/38869
32175         * rtl.h (reinit_regs): New prototype.
32176         * regclass.c: Include ira.h.
32177         (reinit_regs): New.
32178         * Makefile.in (regclass.o): Add ira.h.
32179         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
32180
32181 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
32182
32183         PR target/38736
32184         * c-common.c (handle_aligned_attribute): Use
32185         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
32186         default alignment value.
32187
32188         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
32189
32190         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
32191         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
32192
32193         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
32194         __BIGGEST_ALIGNMENT__.
32195
32196         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
32197
32198 2009-01-18  Richard Guenther  <rguenther@suse.de>
32199
32200         PR tree-optimization/38819
32201         * tree-flow.h (operation_could_trap_helper_p): Declare.
32202         * tree-eh.c (operation_could_trap_helper_p): Export.
32203         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
32204         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
32205         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
32206         are about to insert a possibly trapping instruction and fail
32207         in this case.
32208
32209 2009-01-18  Andreas Schwab  <schwab@suse.de>
32210
32211         * doc/install.texi (Configuration): Remove obsolete paragraph
32212         about use of --with-gnu-ld with --with-gnu-as.
32213
32214 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
32215
32216         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
32217         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
32218         Follow spelling conventions.
32219
32220 2009-01-18  Ben Elliston  <bje@au.ibm.com>
32221
32222         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
32223         C++ warning about implicit conversion from void * to struct
32224         bitmap_head_def *.
32225         (bitmap_obstack_free): Likewise for bitmap_element *.
32226         * Makefile.in (bitmap.o-warn): Remove.
32227
32228 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
32229
32230         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
32231
32232 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
32233             Tobias Grosser  <tobi.grosser@amd.com>
32234
32235         * graphite.c (graphite_trans_scop_block): Do not block single
32236         nested loops.
32237
32238 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
32239
32240         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
32241         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
32242         test with assertion.
32243
32244 2009-01-16  Richard Guenther  <rguenther@suse.de>
32245
32246         PR tree-optimization/38835
32247         PR middle-end/36227
32248         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
32249         and INT + PTR -> (INT)(PTR p+ INT) folding.
32250         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
32251
32252 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
32253
32254         PR target/38554
32255         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
32256         the subreg from a lowpart subreg if it is also casting the value.
32257
32258 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
32259             Tobias Grosser  <tobi.grosser@amd.com>
32260
32261         * graphite.c (compare_prefix_loops): New.
32262         (build_scop_canonical_schedules): Rewritten.
32263         (graphite_transform_loops): Move build_scop_canonical_schedules
32264         after build_scop_iteration_domain.
32265
32266 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
32267             Tobias Grosser  <tobi.grosser@amd.com>
32268
32269         * graphite.c (add_conditions_to_domain): Add the loops to
32270         the dimension of the iteration domain.  Do copy the domain
32271         only when it exists.
32272         (build_scop_conditions_1): Do not call add_conditions_to_domain.
32273         (add_conditions_to_constraints): New.
32274         (can_generate_code_stmt, can_generate_code): Removed.
32275         (gloog): Do not call can_generate_code.
32276         (graphite_transform_loops): Call add_conditions_to_constraints
32277         after building the iteration domain.
32278
32279 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
32280
32281         PR tree-optimization/38789
32282         * tree-ssa-threadedge.c
32283         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
32284         __builtin_constant_p.
32285
32286 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
32287
32288         * dce.c (delete_unmarked_insns): Reversed the order that insns are
32289         examined before deleting them.
32290
32291 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
32292
32293         * function.c (aggregate_value_p): Correctly extract the function
32294         type from CALL_EXPR_FN lookup.
32295
32296 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
32297
32298         * config/picochip/picochip.c (picochip_override_options): Revert
32299         CFI asm flag disable commited previously.
32300
32301 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
32302             Tobias Grosser  <tobi.grosser@amd.com>
32303             Jan Sjodin  <jan.sjodin@amd.com>
32304
32305         * graphite.c (scan_tree_for_params): On substractions negate
32306         all the coefficients of the term.
32307         (clast_to_gcc_expression_red): New.  Handle reduction expressions
32308         of more than two operands.
32309         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
32310         (get_vdef_before_scop): Handle also the case of default definitions.
32311
32312 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
32313
32314         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
32315         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
32316         Also use them when walking CALL_INSN_FUNCTION_USAGE.
32317
32318 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
32319             Joey Ye  <joey.ye@intel.com>
32320
32321         PR middle-end/37843
32322         * cfgexpand.c (expand_stack_alignment): Don't update stack
32323         boundary nor check incoming stack boundary here.
32324         (gimple_expand_cfg): Update stack boundary and check incoming
32325         stack boundary here.
32326
32327 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
32328
32329         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
32330
32331 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
32332
32333         PR rtl-optimization/38245
32334         * calls.c (expand_call): Add stack arguments to
32335         CALL_INSN_FUNCTION_USAGE even for pure calls (when
32336         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
32337         in regs and partially in memory or BLKmode arguments.
32338         (emit_library_call_value_1): Add stack arguments to
32339         CALL_INSN_FUNCTION_USAGE even for pure calls (when
32340         ACCUMULATE_OUTGOING_ARGS).
32341         * dce.c: Include tm_p.h.
32342         (find_call_stack_args): New function.
32343         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
32344         argument.
32345         (mark_insn): Call find_call_stack_args for CALL_Ps.
32346         (prescan_insns_for_dce): Walk insns backwards in bb rather than
32347         forwards.  Allocate and free arg_stores bitmap if needed, pass it
32348         down to deletable_insn_p, don't mark stores set in arg_stores
32349         bitmap, clear the bitmap at the beginning of each bb.
32350         * Makefile.in (dce.o): Depend on $(TM_P_H).
32351
32352 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
32353
32354         PR target/22599
32355         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
32356         to make sure the insn is a conditional test (bug 22599).  Reformat a
32357         few long lines.
32358
32359 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
32360
32361         PR middle-end/38431
32362         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
32363         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
32364         (gloog): Do not call cleanup_tree_cfg.
32365         (graphite_transform_loops): Call cleanup_tree_cfg after all
32366         scops have been code generated.
32367
32368 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
32369         * doc/gty.texi (Invoking the garbage collector): Added new node
32370         and section documenting ggc_collect.
32371
32372 2009-01-14  Richard Guenther  <rguenther@suse.de>
32373
32374         PR tree-optimization/38826
32375         PR middle-end/38477
32376         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
32377         initialization notes only if we actually emitted a warning.
32378         (intra_create_variable_infos): Add constraints for a result decl
32379         that is passed by hidden reference.
32380         (build_pred_graph): Mark all related variables non-direct on
32381         address-taking.
32382
32383 2009-01-14  Nick Clifton  <nickc@redhat.com>
32384
32385         * ira-conflicts.c: Include addresses.h for the definition of
32386         base_reg_class.
32387         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
32388         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
32389
32390 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
32391
32392         PR target/38811
32393         * Makefile.in (ira-lives.o): Add except.h.
32394
32395         * ira-lives.c: Include except.h.
32396         (process_bb_node_lives): Process can_throw_internal.
32397
32398 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
32399
32400         PR rtl-optimization/38774
32401         * combine.c (simplify_set): When undoing cc_use change, don't do
32402         PUT_CODE on the newly created comparison, but instead put back the
32403         old comparison.
32404
32405 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
32406
32407         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
32408         values.  Remove duplicate arm8 entry.
32409
32410 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
32411
32412         PR tree-optimization/38786
32413         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
32414         the SSA_NAME case of expand_scalar_variables_expr.
32415         Set the type of an expression to the type of its assign statement.
32416         (expand_scalar_variables_expr): Also gather the scalar computation
32417         used to index the memory access.  Do not pass loop_p.
32418         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
32419         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
32420         the gimple_stmt_iterator where it inserts new code.
32421         Do not pass loop_p.
32422         (copy_bb_and_scalar_dependences): Do not pass loop_p.
32423         (translate_clast): Update call to copy_bb_and_scalar_dependences.
32424
32425 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
32426
32427         * graphite.h (debug_value): Removed.
32428         * graphite.c (debug_value): Removed.
32429
32430 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
32431
32432         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
32433         ldrd/strd with two 32-bit instructions.
32434
32435 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
32436
32437         * config/arm/arm.c (struct processors): Pass for speed down into
32438         cost helper functions.
32439         (const_ok_for_op): Handle COMPARE and inequality nodes.
32440         (arm_rtx_costs_1): Rewrite.
32441         (arm_size_rtx_costs): Update prototype.
32442         (arm_rtx_costs): Pass speed down to helper functions.
32443         (arm_slowmul_rtx_costs): Rework cost calculations.
32444         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
32445         (arm_9e_rtx_costs): Likewise.
32446
32447 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
32448
32449         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
32450         relocations of local symbols wider than UNITS_PER_WORD are not valid.
32451         (alpha_legitimize_address): Do not split local symbols wider than
32452         UNITS_PER_WORD into HIGH/LO_SUM parts.
32453
32454 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
32455
32456         PR bootstrap/38580
32457         * gcc.c (process_command): Replace call to execvp with calls
32458         to pex_one and exit.
32459
32460 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
32461
32462         PR target/29141
32463         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
32464         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
32465         variant for devices with 3-byte PC.
32466         (__tablejump_elpm__): New.
32467
32468 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
32469
32470         PR c/32041
32471         * c-parser.c (c_parser_postfix_expression): Allow `->' in
32472         offsetof member-designator, handle it as `[0].'.
32473
32474 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32475
32476         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
32477         function when not using named sections on targets with named sections
32478         if branch distance is less than 262132.
32479
32480 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
32481
32482         * combine.c (combine_instructions):  Recompute
32483         optimize_this_for_speed_p  for each BB in the main combine loop.
32484
32485 2009-01-12  Tomas Bily  <tbily@suse.cz>
32486
32487         PR middlend/38385
32488         * tree-loop-distribution.c (prop_phis): New function.
32489         (generate_builtin): Call prop_phis.
32490
32491 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
32492
32493         PR tree-optimization/38807
32494         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
32495         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
32496
32497 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
32498
32499         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
32500         subreg of op0 to the original op0.
32501
32502 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
32503
32504         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
32505
32506 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
32507
32508         PR debug/7055
32509         * mips-tfile.c (parse_def): Fix parsing of def strings
32510         starting with digits.
32511
32512 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
32513
32514         PR target/38695
32515         * config/arm/arm.c (arm_is_long_call_p): Don't call
32516         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
32517
32518 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
32519
32520         * regrename.c (regrename_optimize): Fix dumping.
32521         (find_oldest_value_reg): Preserve REG_POINTER.
32522         (copy_hardreg_forward_1): Likewise.
32523
32524 2009-01-09  Diego Novillo  <dnovillo@google.com>
32525
32526         * gimple.h (struct gimple_statement_base) <uid>: Document
32527         the restrictions on its use.
32528         (gimple_uid): Tidy.
32529         (gimple_set_uid): Tidy.
32530
32531 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
32532
32533         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
32534         zero guard even if align_bytes != 0 and count is smaller than
32535         size_needed.
32536
32537 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
32538
32539         PR rtl-optimization/38495
32540         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
32541         (add_range_and_copies_from_move_list): Print all added ranges.
32542         Add ranges to memory optimized destination.
32543
32544 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
32545
32546         PR target/38686
32547         PR target/38708
32548         * config/i386/i386.c (override_options): Reject
32549         -mstringop-strategy=rep_8byte with -m32.
32550         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
32551         to 1.  Do count comparison against epilogue_size_needed at compile
32552         time even when count_exp was constant forced into register.  For
32553         size_needed don't jump to epilogue, instead just avoid aligning
32554         and invoke the body algorithm.  If need_zero_guard, add zero guard
32555         even if count is non-zero, but smaller than size_needed + number of
32556         bytes that could be stored for alignment.
32557         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
32558         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
32559         but smaller than size_needed + number of bytes that could be stored
32560         for alignment.  Compare size_needed with epilogue_size_needed instead
32561         of desired_align - align, don't adjust size_needed, pass
32562         epilogue_size_needed to the epilogue expanders.
32563
32564         PR c/35742
32565         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
32566
32567 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32568
32569         * pa.c (last_address): Change to unsigned.
32570         (update_total_code_bytes): Change argument to unsigned.  Don't
32571         check if insn addresses are set.
32572         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
32573         addresses are not set.
32574         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
32575
32576 2009-01-09  Nick Clifton  <nickc@redhat.com>
32577
32578         * config/sh/symbian.c: Replace uses of DECL_INLINE with
32579         DECL_DECLARED_INLINE_P.
32580
32581 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
32582
32583         PR middle-end/38347
32584         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
32585         GET_MODE (op0) in operand_subword_force calls.
32586
32587         PR middle-end/38771
32588         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
32589         fold_convert arg0 operands to TREE_TYPE (op0) first.
32590
32591 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
32592
32593         * params.def (ira-max-conflict-table-size): Decrease default value
32594         to 1000.
32595
32596 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
32597
32598         PR tree-optimization/37031
32599         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
32600         on parameter_set.
32601         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
32602         allocate it using gc instead of heap, use VEC_quick_push instead of
32603         VEC_safe_push.
32604         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
32605         instead of heap, use VEC_quick_push instead of VEC_safe_push.
32606         * tree-data-ref.h (struct access_matrix): Change matrix to gc
32607         allocated vector from heap allocated.
32608         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
32609         * tree-loop-linear.c (linear_transform_loops): Allocate nest
32610         vector only after perfect_loop_nest_depth call.
32611
32612 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
32613             Jan Sjodin  <jan.sjodin@amd.com>
32614
32615         PR tree-optimization/38559
32616         * graphite.c (debug_value, copy_constraint,
32617         swap_constraint_variables, scale_constraint_variable, ): New.
32618         (get_lower_bound, get_upper_bound): Removed.
32619         (graphite_trans_bb_strip_mine): Clean up this code that works
32620         only for constant number of iterations.  Fully copy upper and
32621         lower bound constraints, not only the constant part of them.
32622         * graphite.h (debug_value): Declared.
32623
32624 2009-01-08  Ira Rosen  <irar@il.ibm.com>
32625
32626         PR tree-optimization/37194
32627         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
32628         Don't add the cost of cost model guard in prologue to scalar
32629         outside cost in case of known number of iterations.
32630
32631 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
32632             Alan Modra  <amodra@bigpond.net.au>
32633
32634         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
32635         non-word-aligned REG+CONST addressing.
32636
32637 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
32638
32639         PR target/38706
32640         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
32641         free_after_compilation when outputting a thunk.
32642         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
32643         Do not call free_after_compilation here.
32644
32645 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
32646
32647         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
32648         (ix86_valid_target_attribute_inner_p): Ditto.
32649
32650 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
32651
32652         PR tree-optimization/38492
32653         PR tree-optimization/38498
32654         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
32655         * tree-chrec.h (scev_is_linear_expression): Declared.
32656         * graphite.c (graphite_cannot_represent_loop_niter): New.
32657         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
32658         (graphite_loop_normal_form): Use gcc_assert.
32659         (scan_tree_for_params): Use CASE_CONVERT.
32660         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
32661         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
32662         Use gcc_assert.  Discard scops that contain unhandled cases.
32663         (build_scop_conditions): Return a boolean status for unhandled cases.
32664         (strip_mine_profitable_p): Print the loop number, not its depth.
32665         (is_interchange_valid): Pass the depth of the loop nest, don't
32666         recompute it wrongly.
32667         (graphite_trans_bb_block): Same.
32668         (graphite_trans_bb_block): Print tentative of loop blocking.
32669         (graphite_trans_scop_block): Do not print that the loop has been
32670         blocked.
32671         (graphite_transform_loops): Do not handle scops that contain condition
32672         scalar phi nodes.
32673
32674 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
32675
32676         AVX Programming Reference (December, 2008)
32677         * config/i386/avxintrin.h (_mm256_stream_si256): New.
32678         (_mm256_stream_pd): Likewise.
32679         (_mm256_stream_ps): Likewise.
32680
32681         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
32682         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
32683         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
32684         (bdesc_special_args): Add __builtin_ia32_movntdq256,
32685         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
32686         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
32687         (ix86_expand_special_args_builtin): Likewise.
32688
32689         * config/i386/sse.md (AVXMODEDI): New.
32690         (avx_movnt<mode>): Likewise.
32691         (avx_movnt<mode>): Likewise.
32692         (<sse>_movnt<mode>): Remove AVX support.
32693         (sse2_movntv2di): Likewise.
32694
32695 2009-01-07  Richard Guenther  <rguenther@suse.de>
32696
32697         PR middle-end/38751
32698         * fold-const.c (extract_muldiv): Remove obsolete comment.
32699         (fold_plusminus_mult_expr): Undo MINUS_EXPR
32700         to PLUS_EXPR canonicalization for the canonicalization.
32701
32702 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
32703
32704         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
32705         hosted cross-compilers generating less efficient code.
32706
32707 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
32708
32709         * function.h (rtl_data): Add a dbr_scheduled_p field.
32710         * reorg.c (dbr_schedule): Set it.
32711         (gate_handle_delay_slots): Check it.
32712         * config/mips/mips.c (mips_base_delayed_branch): Delete.
32713         (mips_reorg): Check flag_delayed_branch instead of
32714         mips_base_delayed_branch.
32715         (mips_override_options): Don't set mips_base_delayed_branch
32716         or flag_delayed_branch.
32717
32718 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
32719
32720         PR rtl-optimization/38426.
32721         * ira.c (ira): Set current_function_is_leaf earlier.
32722
32723 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
32724
32725         PR rtl-optimization/38722
32726         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
32727         too early, only set a flag and modify after last possible
32728         undo_all point.
32729
32730 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
32731
32732         PR c/34252
32733         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
32734         * real.c (decimal_single_format): Correct values of emin and emax.
32735         (decimal_double_format): Ditto.
32736         (decimal_quad_format): Ditto.
32737         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
32738         computation of DECnn_MIN and DECnn_MAX for corrected values of
32739         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
32740         __DECnn_MIN__, and adjust its computation for the corrected value
32741         of emin.
32742
32743 2009-01-06  Jan Hubicka  <jh@suse.cz>
32744
32745         PR target/38744
32746         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
32747
32748 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
32749
32750         * doc/contrib.texi (Contributors): Slightly adjust the end note.
32751         Add Robert Clark to the list of testers.
32752
32753 2009-01-06  Jan Hubicka  <jh@suse.cz>
32754             Kai Tietz  <kai.tietz@onevision.com>
32755
32756         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
32757         * config/i386/i386.c (ix86_expand_call): Add clobbers.
32758
32759 2009-01-06  Jan Hubicka  <jh@suse.cz>
32760             Kai Tietz  <kai.tietz@onevision.com>
32761
32762         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
32763         for w64 ABI.
32764         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
32765         (ix86_nsaved_regs): Count only general purpose regs.
32766         (ix86_nsaved_sseregs): New.
32767         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
32768         to 16 for w64; compute padding and size of sse reg save area.
32769         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
32770         general purpose regs.
32771         (ix86_emit_save_sse_regs_using_mov): New.
32772         (ix86_expand_prologue): Save SSE regs if needed.
32773         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
32774         (ix86_emit_restore_sse_regs_using_mov): New.
32775         (ix86_expand_epilogue): Save SSE regs if needed.
32776
32777 2009-01-06  Jan Hubicka  <jh@suse.cz>
32778             Kai Tietz  <kai.tietz@onevision.com>
32779
32780         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
32781         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
32782         functions when accumulate outgoing args is off.
32783
32784 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
32785
32786         PR bootstrap/38742
32787         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
32788         before using pseudos_have_intersected_live_ranges_p.
32789
32790         * ira-int.h (ira_assert): Always define.
32791
32792 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
32793
32794         AVX Programming Reference (December, 2008)
32795         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
32796         (_mm256_permute2_pd): Likewise.
32797         (_mm_permute2_ps): Likewise.
32798         (_mm256_permute2_ps): Likewise.
32799         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
32800         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
32801
32802         * config/i386/i386.c (ix86_builtins): Remove
32803         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
32804         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
32805         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
32806         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
32807         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
32808         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
32809         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
32810         __builtin_ia32_vpermil2ps256.
32811         (ix86_init_mmx_sse_builtins): Updated.
32812         (ix86_expand_args_builtin): Likewise.
32813
32814 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32815
32816         * pa.c (output_call): Relocate non-jump insns in the delay slot of
32817         long absolute calls when generating PA 2.0 code.
32818
32819 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
32820
32821         PR rtl-optimization/38583
32822         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
32823
32824         * params.def (ira-max-conflict-table-size): New.
32825
32826         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
32827
32828         * ira.h (ira_conflicts_p): New external definition.
32829
32830         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
32831         table.  Report this.  Return result of building.
32832         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
32833         building conflict table.
32834
32835         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
32836         (ira_color): Use ira_conflicts_p.
32837
32838         * global.c: Include ira.h.
32839         (pseudo_for_reload_consideration_p, build_insn_chain): Use
32840         ira_conflicts_p.
32841
32842         * Makefile.in (global.o): Add ira.h.
32843
32844         * ira-build.c (mark_all_loops_for_removal,
32845         propagate_some_info_from_allocno): New.
32846         (remove_unnecessary_allocnos): Call
32847         propagate_some_info_from_allocno.
32848         (remove_low_level_allocnos): New.
32849         (remove_unnecessary_regions): Add parameter.  Call
32850         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
32851         parameter to remove_unnecessary_regions.
32852         (ira_build): Remove all regions but root if the conflict table was
32853         not built.  Update conflict hard regs for allocnos crossing calls.
32854
32855         * ira.c (ira_conflicts_p): New global.
32856         (ira): Define and use ira_conflicts_p.
32857
32858         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
32859         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
32860         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
32861
32862 2009-01-06  Ben Elliston  <bje@au.ibm.com>
32863
32864         * gengtype-lex.l (YY_NO_INPUT): Define.
32865
32866 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32867
32868         PR c/34911
32869         * c-common.c (handle_vector_size_attribute): Also reject
32870         BOOLEAN_TYPE types.
32871
32872 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
32873
32874         PR tree-optimization/38492
32875         * graphite.c (rename_map_elt, debug_rename_elt,
32876         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
32877         rename_map_elt_info, eq_rename_map_elts,
32878         get_new_name_from_old_name, bb_in_sese_p): Moved around.
32879         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
32880         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
32881         (sese_build_livein_liveouts): New.
32882         (new_sese, free_sese): New.
32883         (new_scop): Call new_sese.
32884         (free_scop): Call free_sese.
32885         (rename_variables_from_edge, rename_phis_end_scop): Removed.
32886         (register_old_new_names): Renamed register_old_and_new_names.
32887         (register_scop_liveout_renames, add_loop_exit_phis,
32888         insert_loop_close_phis, struct igp,
32889         default_liveout_before_guard, add_guard_exit_phis,
32890         insert_guard_phis, copy_renames): New.
32891         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
32892         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
32893         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
32894         (scop_adjust_phis_for_liveouts): New.
32895         (gloog): Call scop_adjust_phis_for_liveouts.
32896
32897         * graphite.h (struct sese): Documented.  Added fields liveout,
32898         num_ver and livein.
32899         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
32900         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
32901         (struct scop): Added field liveout_renames.
32902         (SCOP_LIVEOUT_RENAMES): New.
32903
32904 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
32905
32906         PR tree-optimization/38510
32907         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
32908         (translate_clast): Call recompute_all_dominators before
32909         graphite_verify.
32910         (gloog): Call recompute_all_dominators before graphite_verify.
32911
32912 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
32913             Jan Sjodin  <jan.sjodin@amd.com>
32914
32915         PR tree-optimization/38500
32916         * graphite.c (create_sese_edges): Call fix_loop_structure after
32917         splitting blocks.
32918
32919 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
32920
32921         * config.gcc: Add m32r*-*-rtems*.
32922         * config/m32r/rtems.h: New file.
32923
32924 2009-01-05  Ben Elliston  <bje@au.ibm.com>
32925
32926         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
32927         (.po.pox): Likewise.
32928         (po/gcc.pot): Likewise.
32929
32930 2009-01-04  David S. Miller  <davem@davemloft.net>
32931
32932         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
32933         (STARTING_FRAME_OFFSET): Always set to zero.
32934
32935 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
32936
32937         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
32938         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
32939         fixed-point types, and vectors of the same.
32940
32941 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
32942
32943         * config/mips/sync.md (*mb_barrier): Rename to...
32944         (*memory_barrier): ...this.
32945
32946 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
32947
32948         * doc/extend.texi (Function Attributes): Move @cindex after @item
32949         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
32950         and put in alphabetical order. Fix 'target' name and put in order.
32951         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
32952         typos.
32953
32954 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
32955
32956         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
32957         (memory_barrier): Expand as unspec instead of unspec_volatile.
32958         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32959         (*memory_barrier): Define as unspec instead of unspec_volatile.
32960         Use (match_dup 0) as input operand.
32961
32962         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
32963         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
32964         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
32965         scratch register.  Remove operand 1.
32966         (*stbar): Define as unspec instead of unspec_volatile.
32967         Use (match_dup 0) as input operand, remove (const_int 8).
32968         (*membar): Define as unspec instead of unspec_volatile.
32969         Use (match_dup 0) as input operand, remove input operand 2.
32970
32971         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
32972         (memory_barrier): Expand as unspec instead of unspec_volatile.
32973         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32974         (*memory_barrier): Define as unspec instead of unspec_volatile.
32975         Use (match_dup 0) as input operand.
32976
32977         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
32978         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32979         Set volatile flag on operand 0.
32980         (*memory_barrier): New insn pattern.
32981
32982         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
32983         insn operands.
32984         (*memory_barrier): Use (match_dup 0) as input operand.
32985
32986         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
32987         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32988         Set volatile flag on operand 0.
32989         (*mb_internal): New insn pattern.
32990
32991         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
32992
32993 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
32994
32995         PR middle-end/38586
32996         * function.c (struct temp_slot): Move to the section of the file
32997         that deals with temp slots.  Remove field 'address'.
32998         (temp_slot_address_table): New hash table of address -> temp slot.
32999         (struct temp_slot_address_entry): New struct, items for the table.
33000         (temp_slot_address_compute_hash, temp_slot_address_hash,
33001         temp_slot_address_eq, insert_temp_slot_address): Support functions
33002         for the new table.
33003         (find_temp_slot_from_address): Rewrite to use the new hash table.
33004         (remove_unused_temp_slot_addresses): Remove addresses of temp
33005         slots that have been made available.
33006         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
33007         worker function for remove_unused_temp_slot_addresses.
33008         (assign_stack_temp_for_type): Don't clear the temp slot address list.
33009         Add the temp slot address to the address -> temp slot map.
33010         (update_temp_slot_address): Update via insert_temp_slot_address.
33011         (free_temp_slots): Call remove_unused_temp_slot_addresses.
33012         (pop_temp_slots): Likewise.
33013         (init_temp_slots): Allocate the address -> temp slot map, or empty
33014         the map if it is already allocated.
33015         (prepare_function_start): Initialize temp slot processing.
33016
33017 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
33018
33019         PR middle-end/38584
33020         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
33021         Calculate the size of all stack vars assuming no packing of stack
33022         vars will happen, replacing a quadratic algorithm with a linear one.
33023
33024 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
33025
33026         PR target/38707
33027         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
33028         can't be used.
33029
33030 2009-01-03  Diego Novillo  <dnovillo@google.com>
33031
33032         * doc/contrib.texi: Update contributions.
33033
33034 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
33035
33036         PR c++/38705
33037         * builtins.c (fold_builtin_memory_op): Give up if either operand
33038         is volatile.  Set srctype or desttype to non-qualified version
33039         of the other type.
33040
33041         PR c/38700
33042         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
33043         and FUNCTION_DECLs.
33044
33045 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
33046
33047         PR rtl-optimization/35805
33048         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
33049         problem if fast dce is able to remove any instructions.
33050         * dce.c (dce_process_block): Fix dump message.
33051
33052 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
33053
33054         PR 33649
33055         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
33056
33057 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
33058
33059         PR middle-end/38690
33060         * tree-flow.h (op_code_prio, op_prio): New prototypes.
33061         * tree-pretty-print.c (op_code_prio): New function.
33062         (op_prio): No longer static.  Use op_code_prio.
33063         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
33064         Use op_prio and op_code_prio to determine if () should be
33065         printed around operand(s) or not.
33066
33067         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
33068         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
33069         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
33070         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
33071         pp_character instead of pp_string for single letter printing.
33072
33073 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
33074
33075         * doc/extend.texi: Fix '#pragma GCC option' typo.
33076
33077 2009-01-02  Richard Guenther  <rguenther@suse.de>
33078
33079         * doc/install.texi (--enable-checking): Mention different
33080         default for stage1.
33081         (--enable-stage1-checking): Document.
33082
33083 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
33084
33085         PR middle-end/30142
33086         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
33087         case to be an error.
33088
33089 2009-01-02  Ben Elliston  <bje@au.ibm.com>
33090
33091         * config/fp-bit.h (pack_d): Constify argument.
33092         * config/fp-bit.c (makenan): Constify return type. Remove casts.
33093         (isnan): Constify argument.
33094         (isinf): Likewise.
33095         (iszero): Likewise.
33096         (pack_d): Likewise.
33097         (_fpadd_parts): Constify return type.
33098         (_fpmul_parts): Likewise.
33099         (_fpdiv_parts): Likewise.
33100
33101 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
33102
33103         PR c/36489
33104         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
33105         warn about overwriting initializer with side-effects or
33106         -Woverride-init if !IMPLICIT.
33107         (output_init_element): Likewise.  Pass IMPLICIT down to
33108         add_pending_init.
33109         (process_init_element): Add IMPLICIT argument.  Pass it down
33110         to output_init_element.
33111         (push_init_element, pop_init_level, set_designator): Adjust
33112         process_init_element callers.
33113         (set_nonincremental_init, set_nonincremental_init_from_string):
33114         Adjust add_pending_init callers.
33115         (output_pending_init_elements): Adjust output_init_element callers.
33116         * c-tree.h (process_init_element): Adjust prototype.
33117         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
33118         process_init_element callers.
33119
33120 \f
33121 Copyright (C) 2009 Free Software Foundation, Inc.
33122
33123 Copying and distribution of this file, with or without modification,
33124 are permitted in any medium without royalty provided the copyright
33125 notice and this notice are preserved.