OSDN Git Service

* config/i386/sse.md (vec_interleave_highv16qi,
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-11-27  Richard Henderson  <rth@redhat.com>
2
3         * config/i386/sse.md (vec_interleave_highv16qi,
4         vec_interleave_lowv16qi, vec_interleave_highv8hi,
5         vec_interleave_lowv8hi, vec_interleave_highv4si,
6         vec_interleave_lowv4si, vec_interleave_highv2di,
7         vec_interleave_lowv2di, vec_interleave_highv4sf,
8         vec_interleave_lowv4sf, vec_interleave_highv2df,
9         vec_interleave_lowv2df): Remove expanders.
10         (sse_unpcklps, sse_unpckhps, sse2_unpckhpd_exp, sse2_unpcklpd_exp,
11         sse2_punpckhqdq, sse2_punpcklqdq, sse2_punpckhbw, sse2_punpcklbw,
12         sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq):
13         Rename to their proper vec_interleave equivalent.  Update all users
14         to the new name.
15         * config/i386/i386.c, config/i386/i386.md: Update all users.
16
17 2009-11-27  Michael Matz  <matz@suse.de>
18
19         PR rtl-optimization/42084
20         * cfgexpand.c (maybe_cleanup_end_of_block): Add new parameter,
21         use it to stop walking.
22         (expand_gimple_cond): Adjust call to above.
23
24 2009-11-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
25
26         PR target/41810
27         * gthr-solaris.h (__gthread_mutex_destroy): Remove UNUSED.
28         [SUPPORTS_WEAK && GTHREAD_USE_WEAK] (__gthread_active_p): Use
29         __extension__ to allow cast from function pointer to object
30         pointer in C++.
31         * doc/install.texi (--enable-threads): Clarify use of Solaris
32         threads.
33
34 2009-11-27  Steven Bosscher  <steven@gcc.gnu.org>
35
36         * config/ia64/itanium1.md: Remove.
37         * config/ia64/ia64.md: Do not include it.
38         * config/ia64/ia64.c (ia64_handle_option): Remove "itanium",
39         "itanium1", and "merced" from the processor alias table.
40         (clocks, add_cycles): Remove global variables.
41         (ia64_sched_reorder2): Don't set/use them.
42         (ia64_dfa_new_cycle, ia64_h_i_d_extended, ia64_reorg): Likewise.
43         (bundling): Likewise. Remove extra pass for MMMUL/MMSHF.
44
45 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
46
47         * config/s390/s390.c (last_scheduled_insn): New variable.
48         (s390_fpload_toreg, s390_z10_prevent_earlyload_conflicts): New
49         functions.
50         (s390_sched_reorder, s390_sched_variable_issue): New functions.
51         (TARGET_SCHED_VARIABLE_ISSUE, TARGET_SCHED_REORDER): Target hooks
52         defined.
53
54 2009-11-27  Michael Matz  <matz@suse.de>
55
56         PR c++/41906
57         * tree-eh.c (lower_catch): Stop after expanding a catch-all.
58
59 2009-11-27  Richard Guenther  <rguenther@suse.de>
60
61         * timevar.def (TV_LOOP_MOVE_INVARIANTS, TV_LOOP_UNSWITCH,
62         TV_LOOP_UNROLL, TV_LOOP_DOLOOP): New timevars.
63         * loop-init.c (pass_rtl_move_loop_invariants): Use
64         TV_LOOP_MOVE_INVARIANTS.
65         (pass_rtl_unswitch): Use TV_LOOP_UNSWITCH.
66         (pass_rtl_unroll_and_peel): Use TV_LOOP_UNROLL.
67         (pass_rtl_doloop): Use TV_LOOP_DOLOOP.
68
69 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
70
71         * emit-rtl.c (next_active_insn, prev_active_insn): Correct
72         comment.
73
74 2009-11-27  Jakub Jelinek  <jakub@redhat.com>
75
76         * config/i386/i386.c (ix86_emit_restore_sse_regs_using_mov): Remove
77         unused insn variable.
78         * genemit.c (output_peephole2_scratches): Only declare and initialize
79         _regs_allocated if it will be ever used.
80         * cfgloopmanip.c (create_empty_if_region_on_edge): Remove unused
81         succ_bb variable.
82         (create_empty_loop_on_edge): Remove unused freq and cnt variables.
83         * unwind-c.c (PERSONALITY_FUNCTION): Remove unused action_record
84         variable.
85
86         * opts.c (decode_options): If optimize is bigger than 255,
87         set it to 255.
88
89 2009-11-26  Richard Henderson  <rth@redhat.com>
90
91         * config/i386/sse.md (mulv16qi3): Change back from an expander
92         to an insn-and-split.
93         (mulv4si): Mention AVX not XOP for AVX exception.
94         (*sse2_mulv4si3): Likewise.
95         (mulv2di3): Use vmulld not vpmacsdd for XOP expansion.  Tidy.
96
97 2009-11-26  Bernd Schmidt  <bernd.schmidt@analog.com>
98
99         * cfgexpand (n_stack_vars_conflict): New static variable.
100         (triangular_index): Reduce likelyhood of overflow by performing
101         the division before the multiplication.
102         (resize_stack_vars_conflict): Call fatal_error if overflow
103         occurred in triangular_index.  Update n_stack_vars_conflict.
104
105         PR rtl-opt/38582
106         * regrename.c (struct du_chain): Remove member earlyclobber.
107         (scan_rtx_reg): Don't set it.  Remove argument earlyclobber,
108         all callers changed.
109         (scan_rtx): Remove argument earlyclobber, all callers changed.
110         (hide_operands, restore_operands, record_out_operands): New functions,
111         broken out of build_def_use.
112         (build_def_use): Call them as necessary.
113
114         * regrename.c (struct du_head): New members id, conflicts,
115         hard_conflicts and cannot_rename.
116         (enum scan_actions): Remove terminate_all_read and
117         terminate_overlapping_read; add mark_all_read.
118         (scan_actions_name): Likewise.
119         (du_head_p): New typedef.  Define a vector type for it.
120         (id_to_chain): New static variable.
121         (note_sets, clear_dead_regs): Delete functions.
122         (free_chain_data): New function.
123         (merge_overlapping_regs): Simply walk the conflicts bitmap.
124         Remove argument B, all callers changed.
125         (regrename_optimize): Allocate id_to_chain.  Ignore chains that have
126         the cannot_rename bit set.  Update regno and nregs of a renamed chain.
127         Call free_chain_data when done.
128         (do_replace): Remove death notes when the renamed reg is set in the
129         last insn; add them if not.
130         (mark_conflict, note_sets_clobbers): New static function.
131         (fail_current_block, current_id, open_chains_set, live_hard_regs): New
132         static variables.
133         (scan_rtx_reg): Keep track of conflicts between chains, and between
134         chains and hard regs.  Don't terminate chains when we find a read we
135         can't handle, mark it unrenameable instead.  For terminate_write,
136         terminate chains that are written with an exact match or a superset
137         of registers.  Set fail_current_block if multi-word lifetimes are too
138         complex to handle.
139         (scan_rtx_address): Use mark_all_read instead of terminate_all_read.
140         (build_def_use): Initialize current_id, live_chains and live_hard_regs;
141         free memory for them when done.
142         Rearrange the steps so that earlyclobbers are noted before reads
143         are processed.  Add new steps to keep track of hard register lifetimes
144         outside insn operands.
145
146 2009-11-26  Richard Guenther  <rguenther@suse.de>
147
148         * tree-ssa-dce.c (nr_walks): New variable.
149         (mark_aliased_reaching_defs_necessary): Adjust oracle cut-off.
150         (perform_tree_ssa_dce): Init nr_walks.
151
152 2009-11-26  Michael Matz  <matz@suse.de>
153
154         PR tree-optimization/41905
155         * tree-eh.c (lower_eh_constructs_2): Don't add assignments
156         below statements that can't fall thru.
157
158 2009-11-26  Michael Matz  <matz@suse.de>
159
160         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
161         expand_builtin_sprintf): Remove.
162         (expand_builtin): Don't call them.
163
164 2009-11-26  Richard Guenther  <rguenther@suse.de>
165
166         * tree-ssa-dce.c (perform_tree_ssa_dce): Allocate visited bitmap.
167
168 2009-11-26  Nick Clifton  <nickc@redhat.com>
169
170         * config/rx/rx.c (rx_expand_epilogue): Add checks for sibcalls
171         being used incorrectly.
172         (rx_function_ok_for_sibcall): New function.  Do not allow indirect
173         sibcalls, or sibcalls from interrupt functions.
174         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
175         * config/rx/rx.md (sibcall): Convert to a define_expand.  Check
176         for a MEM inside a MEM.
177         (sibcall_value): Likewise.
178         (sibcall_internal): New pattern containing old sibcall pattern.
179         (sibcall_value_internal): Likewise.
180
181 2009-11-25  Richard Henderson  <rth@redhat.com>
182
183         * config/i386/i386-builtin-types.awk (DEF_VECTOR_TYPE): Allow an
184         optional 3rd argument to define the mode.
185         * config/i386/i386-builtin-types.def (UQI, UHI, USI, UDI): New.
186         (V2UDI, V4USI, V8UHI, V16UQI): New.
187         (V4SF_FTYPE_V4SF_V4SF_V4SI, V2UDI_FTYPE_V2UDI_V2UDI_V2UDI,
188         V4USI_FTYPE_V4USI_V4USI_V4USI, V8UHI_FTYPE_V8UHI_V8UHI_V8UHI,
189         V16UQI_FTYPE_V16UQI_V16UQI_V16UQI): New.
190         * config/i386/i386-modes.def: Rearrange for double-wide AVX.
191         * config/i386/i386-protos.h (ix86_expand_vec_extract_even_odd): New.
192         * config/i386/i386.c (IX86_BUILTIN_VEC_PERM_*): New.
193         (bdesc_args): Add the builtin definitions to match.
194         (ix86_expand_builtin): Expand them.
195         (ix86_builtin_vectorization_cost): Rename from
196         x86_builtin_vectorization_cost.
197         (ix86_vectorize_builtin_vec_perm, struct expand_vec_perm_d,
198         doublesize_vector_mode, expand_vselect, expand_vselect_vconcat,
199         expand_vec_perm_blend, expand_vec_perm_vpermil,
200         expand_vec_perm_pshufb, expand_vec_perm_1,
201         expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
202         expand_vec_perm_interleave2, expand_vec_perm_pshufb2,
203         expand_vec_perm_even_odd_1, expand_vec_perm_even_odd,
204         ix86_expand_vec_perm_builtin_1, extract_vec_perm_cst,
205         ix86_expand_vec_perm_builtin, ix86_vectorize_builtin_vec_perm_ok,
206         ix86_expand_vec_extract_even_odd, TARGET_VECTORIZE_BUILTIN_VEC_PERM,
207         TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
208         * sse.md (SSEMODE_EO): New.
209         (vec_extract_even<mode>): Use SSEMODE_EO and
210         ix86_expand_vec_extract_even_odd.
211         (vec_extract_odd<mode>): Likewise.
212         (mulv16qi3, vec_pack_trunc_v8hi, vec_pack_trunc_v4si,
213         vec_pack_trunc_v2di): Use ix86_expand_vec_extract_even_odd.
214
215 2009-11-25  Richard Henderson  <rth@redhat.com>
216
217         * target.h (targetm.vectorize.builtin_vec_perm_ok): New.
218         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
219         * hooks.h, hooks.c (hook_bool_tree_tree_true): New.
220         * tree-vect-slp.c (vect_create_mask_and_perm): Don't create
221         the vector constant here...
222         (vect_transform_slp_perm_load): ... do it here instead.  Validate
223         that the permutation vector is implementable by the target.
224
225 2009-11-25  Jakub Jelinek  <jakub@redhat.com>
226
227         * config/rs6000/sysv4.opt (mregnames): Change Var to rs6000_regnames.
228         * config/rs6000/sysv4.h (TARGET_REGNAMES): Define.
229
230         * print-rtl.c (print_rtx): When printing newline, append
231         print_rtx_head and indentation after the newline.
232
233         PR target/42165
234         * config/i386/i386.c (print_operand): For 32-byte memory use
235         YMMWORD in -masm=intel mode.  Use TBYTE instead of XWORD.
236         * config/i386/i386.md (crc32modesuffix): Expand to nothing
237         in -masm=intel mode.
238         (sse4_2_crc32di): Print just crc32 instead of crc32q in
239         -masm=intel mode.
240         * config/i386/mmx.md (*mmx_pinsrw): Print correct size of
241         memory operand in -masm=intel mode.
242         * config/i386/sse.md (*avx_pinsr<ssevecsize>, *sse4_1_pinsrb,
243         *sse2_pinsrw): Likewise.
244         (sse_cvtss2siq, sse_cvtss2siq_2, sse_cvttss2siq): Don't print
245         q suffix in -masm=intel mode.
246
247 2009-11-25  Eric Botcazou  <ebotcazou@adacore.com>
248
249         PR target/10127
250         PR ada/20548
251         PR middle-end/42004
252         * dwarf2out.c (dwarf2out_args_size_adjust): Rename to...
253         (dwarf2out_stack_adjust): ...this.  Do not adjust the arg size for
254         ACCUMULATE_OUTGOING_ARGS targets.  Rename former version to...
255         (dwarf2out_notice_stack_adjust): ...this.  Adjust for above renaming.
256         (dwarf2out_frame_debug_expr): Revert previous change and adjust for
257         above renaming.
258         (dwarf2out_frame_debug): Add ??? comment.  Adjust for above renaming.
259
260 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
261
262         * config/i386/predicates.md (emms_operation): New predicate.
263         (vzeroupper_operation): Ditto.
264         (vzeroall_operation): Improve pattern recognition.
265         * config/i386/sse.md (avx_vzeroupper_rex64): Remove insn pattern.
266         (avx_vzeroupper): Change insn pattern to expander.
267         (*avx_vzeroupper): New insn pattern.  Use vzeroupper_operation
268         predicate.
269         (*avx_vzeroall): Remove operands 1 and 2.
270         * config/i386/mmx.md (mmx_emms): Change insn pattern to expander.
271         (mmx_femms): Ditto.
272         (*mmx_emms): New insn pattern.  Use emms_operation predicate.
273         (*mmx_femms): Ditto.
274         * config/i386/i386.c (enum ix86_builtins)
275         <IX86_BUILTIN_VZEROUPPER_REX64>: Remove.
276         (struct builtin_description) <CODE_FOR_avx_vzeroupper_rex64>:
277         Remove initailization.
278         <CODE_FOR_avx_vzeroupper>: Unconditionally initialize here.
279         
280 2009-11-25  Paul Brook  <paul@codesourcery.com>
281
282         * config/arm/arm.md (consttable_4): Handle (high ...).
283
284 2009-11-25  Robert Nelson  <robert.nelson@digikey.com>
285             Richard Earnshaw  <rearnsha@arm.com>
286
287         * arm.h (enum vfp_reg_type): Add VFP_NONE.
288         * arm.c (all_fpus): Use it for floating point units that aren't based
289         on the VFP architecture.
290         (aapcs_vfp_is_call_or_return_candidate): Make base_mode a pointer to
291         enum machine_mode.
292
293 2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
294
295         * alias.c: Remove trailing white spaces.
296         * alloc-pool.c: Likewise.
297         * alloc-pool.h: Likewise.
298         * attribs.c: Likewise.
299         * auto-inc-dec.c: Likewise.
300         * basic-block.h: Likewise.
301         * bb-reorder.c: Likewise.
302         * bt-load.c: Likewise.
303         * builtins.c: Likewise.
304         * builtins.def: Likewise.
305         * c-common.c: Likewise.
306         * c-common.h: Likewise.
307         * c-cppbuiltin.c: Likewise.
308         * c-decl.c: Likewise.
309         * c-format.c: Likewise.
310         * c-lex.c: Likewise.
311         * c-omp.c: Likewise.
312         * c-opts.c: Likewise.
313         * c-parser.c: Likewise.
314         * c-pretty-print.c: Likewise.
315         * c-tree.h: Likewise.
316         * c-typeck.c: Likewise.
317         * caller-save.c: Likewise.
318         * calls.c: Likewise.
319         * cfg.c: Likewise.
320         * cfganal.c: Likewise.
321         * cfgexpand.c: Likewise.
322         * cfghooks.c: Likewise.
323         * cfghooks.h: Likewise.
324         * cfglayout.c: Likewise.
325         * cfgloop.c: Likewise.
326         * cfgloop.h: Likewise.
327         * cfgloopmanip.c: Likewise.
328         * cfgrtl.c: Likewise.
329         * cgraph.c: Likewise.
330         * cgraph.h: Likewise.
331         * cgraphbuild.c: Likewise.
332         * cgraphunit.c: Likewise.
333         * cif-code.def: Likewise.
334         * collect2.c: Likewise.
335         * combine.c: Likewise.
336         * convert.c: Likewise.
337         * coverage.c: Likewise.
338         * crtstuff.c: Likewise.
339         * cse.c: Likewise.
340         * cselib.c: Likewise.
341         * dbgcnt.c: Likewise.
342         * dbgcnt.def: Likewise.
343         * dbgcnt.h: Likewise.
344         * dbxout.c: Likewise.
345         * dce.c: Likewise.
346         * ddg.c: Likewise.
347         * ddg.h: Likewise.
348         * defaults.h: Likewise.
349         * df-byte-scan.c: Likewise.
350         * df-core.c: Likewise.
351         * df-problems.c: Likewise.
352         * df-scan.c: Likewise.
353         * df.h: Likewise.
354         * dfp.c: Likewise.
355         * diagnostic.c: Likewise.
356         * diagnostic.h: Likewise.
357         * dominance.c: Likewise.
358         * domwalk.c: Likewise.
359         * double-int.c: Likewise.
360         * double-int.h: Likewise.
361         * dse.c: Likewise.
362         * dwarf2asm.c: Likewise.
363         * dwarf2asm.h: Likewise.
364         * dwarf2out.c: Likewise.
365         * ebitmap.c: Likewise.
366         * ebitmap.h: Likewise.
367         * emit-rtl.c: Likewise.
368         * et-forest.c: Likewise.
369         * except.c: Likewise.
370         * except.h: Likewise.
371         * expmed.c: Likewise.
372         * expr.c: Likewise.
373         * expr.h: Likewise.
374         * final.c: Likewise.
375         * flags.h: Likewise.
376         * fold-const.c: Likewise.
377         * function.c: Likewise.
378         * function.h: Likewise.
379         * fwprop.c: Likewise.
380         * gcc.c: Likewise.
381         * gcov-dump.c: Likewise.
382         * gcov-io.c: Likewise.
383         * gcov-io.h: Likewise.
384         * gcov.c: Likewise.
385         * gcse.c: Likewise.
386         * genattr.c: Likewise.
387         * genattrtab.c: Likewise.
388         * genautomata.c: Likewise.
389         * genchecksum.c: Likewise.
390         * genconfig.c: Likewise.
391         * genflags.c: Likewise.
392         * gengtype-parse.c: Likewise.
393         * gengtype.c: Likewise.
394         * gengtype.h: Likewise.
395         * genmddeps.c: Likewise.
396         * genmodes.c: Likewise.
397         * genopinit.c: Likewise.
398         * genpreds.c: Likewise.
399         * gensupport.c: Likewise.
400         * ggc-common.c: Likewise.
401         * ggc-page.c: Likewise.
402         * ggc-zone.c: Likewise.
403         * ggc.h: Likewise.
404         * gimple-iterator.c: Likewise.
405         * gimple-low.c: Likewise.
406         * gimple-pretty-print.c: Likewise.
407         * gimple.c: Likewise.
408         * gimple.def: Likewise.
409         * gimple.h: Likewise.
410         * gimplify.c: Likewise.
411         * graphds.c: Likewise.
412         * graphite-clast-to-gimple.c: Likewise.
413         * gthr-nks.h: Likewise.
414         * gthr-posix.c: Likewise.
415         * gthr-posix.h: Likewise.
416         * gthr-posix95.h: Likewise.
417         * gthr-single.h: Likewise.
418         * gthr-tpf.h: Likewise.
419         * gthr-vxworks.h: Likewise.
420         * gthr.h: Likewise.
421         * haifa-sched.c: Likewise.
422         * hard-reg-set.h: Likewise.
423         * hooks.c: Likewise.
424         * hooks.h: Likewise.
425         * hosthooks.h: Likewise.
426         * hwint.h: Likewise.
427         * ifcvt.c: Likewise.
428         * incpath.c: Likewise.
429         * init-regs.c: Likewise.
430         * integrate.c: Likewise.
431         * ipa-cp.c: Likewise.
432         * ipa-inline.c: Likewise.
433         * ipa-prop.c: Likewise.
434         * ipa-pure-const.c: Likewise.
435         * ipa-reference.c: Likewise.
436         * ipa-struct-reorg.c: Likewise.
437         * ipa-struct-reorg.h: Likewise.
438         * ipa-type-escape.c: Likewise.
439         * ipa-type-escape.h: Likewise.
440         * ipa-utils.c: Likewise.
441         * ipa-utils.h: Likewise.
442         * ipa.c: Likewise.
443         * ira-build.c: Likewise.
444         * ira-color.c: Likewise.
445         * ira-conflicts.c: Likewise.
446         * ira-costs.c: Likewise.
447         * ira-emit.c: Likewise.
448         * ira-int.h: Likewise.
449         * ira-lives.c: Likewise.
450         * ira.c: Likewise.
451         * jump.c: Likewise.
452         * lambda-code.c: Likewise.
453         * lambda-mat.c: Likewise.
454         * lambda-trans.c: Likewise.
455         * lambda.h: Likewise.
456         * langhooks.c: Likewise.
457         * lcm.c: Likewise.
458         * libgcov.c: Likewise.
459         * lists.c: Likewise.
460         * loop-doloop.c: Likewise.
461         * loop-init.c: Likewise.
462         * loop-invariant.c: Likewise.
463         * loop-iv.c: Likewise.
464         * loop-unroll.c: Likewise.
465         * lower-subreg.c: Likewise.
466         * lto-cgraph.c: Likewise.
467         * lto-compress.c: Likewise.
468         * lto-opts.c: Likewise.
469         * lto-section-in.c: Likewise.
470         * lto-section-out.c: Likewise.
471         * lto-streamer-in.c: Likewise.
472         * lto-streamer-out.c: Likewise.
473         * lto-streamer.c: Likewise.
474         * lto-streamer.h: Likewise.
475         * lto-symtab.c: Likewise.
476         * lto-wpa-fixup.c: Likewise.
477         * matrix-reorg.c: Likewise.
478         * mcf.c: Likewise.
479         * mode-switching.c: Likewise.
480         * modulo-sched.c: Likewise.
481         * omega.c: Likewise.
482         * omega.h: Likewise.
483         * omp-low.c: Likewise.
484         * optabs.c: Likewise.
485         * optabs.h: Likewise.
486         * opts-common.c: Likewise.
487         * opts.c: Likewise.
488         * params.def: Likewise.
489         * params.h: Likewise.
490         * passes.c: Likewise.
491         * plugin.c: Likewise.
492         * postreload-gcse.c: Likewise.
493         * postreload.c: Likewise.
494         * predict.c: Likewise.
495         * predict.def: Likewise.
496         * pretty-print.c: Likewise.
497         * pretty-print.h: Likewise.
498         * print-rtl.c: Likewise.
499         * print-tree.c: Likewise.
500         * profile.c: Likewise.
501         * read-rtl.c: Likewise.
502         * real.c: Likewise.
503         * recog.c: Likewise.
504         * reg-stack.c: Likewise.
505         * regcprop.c: Likewise.
506         * reginfo.c: Likewise.
507         * regmove.c: Likewise.
508         * regrename.c: Likewise.
509         * regs.h: Likewise.
510         * regstat.c: Likewise.
511         * reload.c: Likewise.
512         * reload1.c: Likewise.
513         * resource.c: Likewise.
514         * rtl.c: Likewise.
515         * rtl.def: Likewise.
516         * rtl.h: Likewise.
517         * rtlanal.c: Likewise.
518         * sbitmap.c: Likewise.
519         * sched-deps.c: Likewise.
520         * sched-ebb.c: Likewise.
521         * sched-int.h: Likewise.
522         * sched-rgn.c: Likewise.
523         * sched-vis.c: Likewise.
524         * sdbout.c: Likewise.
525         * sel-sched-dump.c: Likewise.
526         * sel-sched-dump.h: Likewise.
527         * sel-sched-ir.c: Likewise.
528         * sel-sched-ir.h: Likewise.
529         * sel-sched.c: Likewise.
530         * sel-sched.h: Likewise.
531         * sese.c: Likewise.
532         * sese.h: Likewise.
533         * simplify-rtx.c: Likewise.
534         * stack-ptr-mod.c: Likewise.
535         * stmt.c: Likewise.
536         * stor-layout.c: Likewise.
537         * store-motion.c: Likewise.
538         * stringpool.c: Likewise.
539         * stub-objc.c: Likewise.
540         * sync-builtins.def: Likewise.
541         * target-def.h: Likewise.
542         * target.h: Likewise.
543         * targhooks.c: Likewise.
544         * targhooks.h: Likewise.
545         * timevar.c: Likewise.
546         * tlink.c: Likewise.
547         * toplev.c: Likewise.
548         * toplev.h: Likewise.
549         * tracer.c: Likewise.
550         * tree-affine.c: Likewise.
551         * tree-affine.h: Likewise.
552         * tree-browser.def: Likewise.
553         * tree-call-cdce.c: Likewise.
554         * tree-cfg.c: Likewise.
555         * tree-cfgcleanup.c: Likewise.
556         * tree-chrec.c: Likewise.
557         * tree-chrec.h: Likewise.
558         * tree-complex.c: Likewise.
559         * tree-data-ref.c: Likewise.
560         * tree-data-ref.h: Likewise.
561         * tree-dfa.c: Likewise.
562         * tree-dump.c: Likewise.
563         * tree-dump.h: Likewise.
564         * tree-eh.c: Likewise.
565         * tree-flow-inline.h: Likewise.
566         * tree-flow.h: Likewise.
567         * tree-if-conv.c: Likewise.
568         * tree-inline.c: Likewise.
569         * tree-into-ssa.c: Likewise.
570         * tree-loop-distribution.c: Likewise.
571         * tree-loop-linear.c: Likewise.
572         * tree-mudflap.c: Likewise.
573         * tree-nested.c: Likewise.
574         * tree-nomudflap.c: Likewise.
575         * tree-nrv.c: Likewise.
576         * tree-object-size.c: Likewise.
577         * tree-optimize.c: Likewise.
578         * tree-outof-ssa.c: Likewise.
579         * tree-parloops.c: Likewise.
580         * tree-pass.h: Likewise.
581         * tree-phinodes.c: Likewise.
582         * tree-predcom.c: Likewise.
583         * tree-pretty-print.c: Likewise.
584         * tree-profile.c: Likewise.
585         * tree-scalar-evolution.c: Likewise.
586         * tree-ssa-address.c: Likewise.
587         * tree-ssa-alias.c: Likewise.
588         * tree-ssa-ccp.c: Likewise.
589         * tree-ssa-coalesce.c: Likewise.
590         * tree-ssa-copy.c: Likewise.
591         * tree-ssa-copyrename.c: Likewise.
592         * tree-ssa-dce.c: Likewise.
593         * tree-ssa-dom.c: Likewise.
594         * tree-ssa-dse.c: Likewise.
595         * tree-ssa-forwprop.c: Likewise.
596         * tree-ssa-ifcombine.c: Likewise.
597         * tree-ssa-live.c: Likewise.
598         * tree-ssa-live.h: Likewise.
599         * tree-ssa-loop-ch.c: Likewise.
600         * tree-ssa-loop-im.c: Likewise.
601         * tree-ssa-loop-ivcanon.c: Likewise.
602         * tree-ssa-loop-ivopts.c: Likewise.
603         * tree-ssa-loop-manip.c: Likewise.
604         * tree-ssa-loop-niter.c: Likewise.
605         * tree-ssa-loop-prefetch.c: Likewise.
606         * tree-ssa-loop-unswitch.c: Likewise.
607         * tree-ssa-loop.c: Likewise.
608         * tree-ssa-math-opts.c: Likewise.
609         * tree-ssa-operands.c: Likewise.
610         * tree-ssa-operands.h: Likewise.
611         * tree-ssa-phiopt.c: Likewise.
612         * tree-ssa-phiprop.c: Likewise.
613         * tree-ssa-pre.c: Likewise.
614         * tree-ssa-propagate.c: Likewise.
615         * tree-ssa-reassoc.c: Likewise.
616         * tree-ssa-sccvn.c: Likewise.
617         * tree-ssa-sink.c: Likewise.
618         * tree-ssa-structalias.c: Likewise.
619         * tree-ssa-ter.c: Likewise.
620         * tree-ssa-threadedge.c: Likewise.
621         * tree-ssa-threadupdate.c: Likewise.
622         * tree-ssa-uncprop.c: Likewise.
623         * tree-ssa.c: Likewise.
624         * tree-ssanames.c: Likewise.
625         * tree-switch-conversion.c: Likewise.
626         * tree-tailcall.c: Likewise.
627         * tree-vect-data-refs.c: Likewise.
628         * tree-vect-generic.c: Likewise.
629         * tree-vect-loop-manip.c: Likewise.
630         * tree-vect-loop.c: Likewise.
631         * tree-vect-patterns.c: Likewise.
632         * tree-vect-slp.c: Likewise.
633         * tree-vect-stmts.c: Likewise.
634         * tree-vectorizer.c: Likewise.
635         * tree-vectorizer.h: Likewise.
636         * tree-vrp.c: Likewise.
637         * tree.c: Likewise.
638         * tree.def: Likewise.
639         * tree.h: Likewise.
640         * treestruct.def: Likewise.
641         * unwind-compat.c: Likewise.
642         * unwind-dw2-fde-glibc.c: Likewise.
643         * unwind-dw2.c: Likewise.
644         * value-prof.c: Likewise.
645         * value-prof.h: Likewise.
646         * var-tracking.c: Likewise.
647         * varasm.c: Likewise.
648         * varpool.c: Likewise.
649         * vec.c: Likewise.
650         * vec.h: Likewise.
651         * vmsdbgout.c: Likewise.
652         * web.c: Likewise.
653         * xcoffout.c: Likewise.
654
655 2009-11-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
656
657         * pa.c (output_call): Only use sr4 for long interspace calls if
658         call binds local and generating non PIC code.
659         (attr_length_call): Adjust length calculation for above.
660
661 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
662
663         * config/i386/i386.md (plusminus_carry_mnemonic): New code attribute.
664         (add<mode>3_carry): Change operand order of plus RTX.
665         (*add<mode>3_carry): Ditto.
666         (*addsi3_carry_zext): Ditto.
667         (*add<dwi>3_doubleword): Update for changed operand order.
668         (*negti2_1 splitter): Ditto.
669         (*negdi2_1 splitter): Ditto.
670         (<plusminus_insn><mode>3_carry): Macroize expander from
671         {add,sub}<mode>3_carry patterns using plusminus code iterator.
672         (*<plusminus_insn><mode>3_carry): Macroize insn from
673         *{add,sub}<mode>3_carry patetrns using plusminus code iterator.
674         (neg<mode>2): Macroize expander from neg{qi,hi,si,di,ti}2
675         patterns using SDWIM mode iterator.
676         (*neg<dwi>2_doubleword): New insn_and_split pattern.  Macroize
677         pattern from *neg{di,ti}2_1 patterns and corresponding splitters
678         using DWIH mode iterator.
679         (*neg<mode>2_1): Macroize insn from neg{qi,hi,si,di}2_1 patterns
680         using SWI mode iterator.
681         (*neg<mode>2_cmpz): Ditto from neg{qi,hi,si,di}2_cmpz patterns.
682         (one_cmpl<mode>2): Macroize expander from one_cmpl{qi,hi,si,di}2
683         patterns using SWIM mode iterator.
684         (*one_cmpl<mode>2_1): Macroize insn from one_cmpl{hi,si,di}2_1
685         patterns using SWI248 mode iterator.
686         (*one_cmpl<mode>2_2): Macroize insn from one_cmpl{qi,hi,si,di}2_2
687         patterns using SWI mode iterator.
688         (*one_cmpl<mode>2_2 splitter): Macroize splitter from
689         one_cmpl{qi,hi,si,di}2_2 splitter patterns using SWI mode iterator.
690
691 2009-11-24  Michael Matz  <matz@suse.de>
692
693         * expr.c (set_storage_via_libcall): Fix build_call_expr call.
694
695 2009-11-24  David Binderman  <dcb314@hotmail.com>
696
697         * expr.c (store_field): Remove set but not used local variable
698         width_mask.
699         (expand_expr_real_2): Remove treeop2.
700         * gcse.c (update_ld_motion_stores): Remove new_rtx.
701         * haifa-sched.c (max_issue): Remove points.
702         (sched_create_recovery_edges): Remove e.
703         * ira-costs.c (setup_allocno_cover_class_and_costs): Remove mode.
704
705 2009-11-24  Nick Clifton  <nickc@redhat.com>
706
707         * config/v850/v850.c (function_arg): Fix handling of zero-length
708         function arguments.
709
710 2009-11-24  Michael Matz  <matz@suse.de>
711
712         * tree.h (union tree_ann_d): Don't declare.
713         (tree_base): Remove ann field.
714         (struct var_ann_d): Declare forward.
715         (tree_result_decl, tree_parm_decl, tree_var_decl): Add ann field.
716         (DECL_VAR_ANN_PTR): New macro.
717         * tree-dfa.c (create_var_ann): Rewrite in terms of above macro,
718         accept only VAR, PARM or RESULT decls.
719         (create_tree_common_ann): Remove.
720         (remove_referenced_var): Use DECL_VAR_ANN_PTR.
721         * tree-eh.c (lookup_expr_eh_lp): Remove.
722         * tree-flow-inline.h (var_ann, get_var_ann): Rewrite in terms of
723         DECL_VAR_ANN_PTR.
724         (ann_type, tree_common_ann, get_tree_common_ann): Remove.
725         * tree-flow.h (enum tree_ann_type): Remove.
726         (struct tree_ann_common_d): Remove.
727         (struct var_ann_d): Remove common field.
728         (union tree_ann_d): Remove.
729         (tree_ann_t, tree_ann_common_t): Remove typedefs.
730         (tree_common_ann, get_tree_common_ann, ann_type,
731         create_tree_common_ann, lookup_expr_eh_lp): Don't declare.
732         * tree-ssa.c (delete_tree_ssa): Use DECL_VAR_ANN_PTR.
733         * tree.c (copy_node_stat): Use DECL_VAR_ANN_PTR.
734         * builtins.c (expand_builtin_memcpy): Use
735         currently_expanding_gimple_stmt instead of tree annotation.
736         (expand_builtin_memset_args): Ditto.
737         * cfgexpand.c (currently_expanding_gimple_stmt): Add global variable.
738         (expand_call_stmt): Don't set tree annotation.
739         (expand_gimple_basic_block): Set currently_expanding_gimple_stmt.
740         * expr.c (expand_expr_real): Don't call lookup_expr_eh_lp.
741         * gimple.h (currently_expanding_gimple_stmt): Declare.
742
743 2009-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
744
745         * dwarf2out.c (add_location_or_const_value_attribute): Remove
746         useless NOTE_VAR_LOCATION_STATUS call.
747         * cfgrtl.c (commit_one_edge_insertion): Remove useless loop, tidy.
748
749 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
750
751         * lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
752         being called recursively.
753
754 2009-11-24  Basile Starynkevitch  <basile@starynkevitch.net>
755
756         * Makefile.in (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
757         $(MD5_H) params.def params.h prefix.h tree-inline.h.
758
759 2009-11-24  Paul Brook  <paul@codesourcery.com>
760
761         * gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment
762         typo.
763
764 2009-11-24  Julian Brown  <julian@codesourcery.com>
765             Paul Brook  <paul@codesourcery.com>
766
767         * config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
768         (arm_dwarf_register_span): New function.
769         (arm_dbx_register_number): Add VFPv3 dwarf numbering.
770
771 2009-11-24  David Binderman  <dcb314@hotmail.com>
772
773         * cfgrtl.c (commit_one_edge_insertion): Remove set but not used
774         local variable bb_note.
775         * dominance.c (get_dominated_by): Likewise local var n.
776         (output_file_names): Likewise local var idx.
777         (add_location_or_const_value_attribute): Likewise local var status.
778         * dwarf2out.c (gen_variable_die): Likewise local var field.
779         * emit-rtl.c (no_line_numbers): Remove.
780         (init_emit_once): Remove line_numbers parameter.
781         * rtl.h (init_emit_once): Adjust prototype.
782         * toplev.c (backend_init): Adjust init_emit_once call.
783
784 2009-11-24  Richard Guenther  <rguenther@suse.de>
785
786         PR tree-optimization/42142
787         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
788         Handle iv-dependent (non-)kills properly.
789         (mark_aliased_reaching_defs_necessary): Pass the basic-block
790         of the reference statement to mark_aliased_reaching_defs_necessary_1.
791
792 2009-11-24  Martin Jambor  <mjambor@suse.cz>
793
794         PR tree-optimization/42154
795         * tree-sra.c (struct access): Added comments.
796         (sra_modify_expr): Build references to the old aggregate with
797         build_ref_for_offset instead of reusing access->expr.
798         (load_assign_lhs_subreplacements): Likewise.
799
800 2009-11-24  Uros Bizjak  <ubizjak@gmail.com>
801
802         * config/i386/i386.md (add<mode>3_carry): Change insn pattern
803         to expander.
804         (sub<mode>3_carry): Ditto.
805         (x86_mov<mode>cc_0_m1): Ditto.
806         (*add<mode>3_carry): New insn pattern.  Use VOIDmode match_operator
807         for ix86_carry_flag_operator operator predicate.
808         (*sub<mode>3_carry): Ditto.
809         (*x86_mov<mode>cc_0_m1): Ditto.
810         (*addsi3_carry_zext): Use VOIDmode match_operator for
811         ix86_carry_flag_operator operator predicate.
812         (*subsi3_carry_zext): Ditto.
813         (*x86_mov<mode>cc_0_m1_s): Ditto.
814         (*x86_mov<mode>cc_0_m1_neg): Ditto.
815         * config/i386/predocates.md (ix86_carry_flag_operator): Do not
816         check operator sub-expressions for FLAGS_REG and const0_rtx.
817         * config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
818         (ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
819         (ix86_expand_int_addcc): Update calls to
820         gen_{add,sub}{qi,hi,si,di}3_carry.  Do not set mode of compare_op.
821         (ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
822         Do not set mode of compare operation.
823
824 2009-11-23  Jan Hubicka  <jh@suse.cz>
825
826         PR middle-end/42151
827         * ipa-inline.c (inline_transform): Avoid ICE when transform is called
828         twice.
829
830 2009-11-23  Jan Hubicka  <jh@suse.cz>
831
832         * ipa-cp.c (ipcp_compute_node_scale): Work around completely
833         wrong profile updates.
834         * predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
835         having largest frequency.
836         * ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
837         used uninitalized warning.
838         * tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block
839         frequencies.
840
841 2009-11-23  Uros Bizjak  <ubizjak@gmail.com>
842
843         * config/alpha/alpha.md (*cmp_sadd_sidi): Use gen_lowpart instead
844         of gen_rtx_REG to generate operand 5.
845         (*cmp_ssub_sidi): Ditto.
846
847 2009-11-23  Richard Henderson  <rth@redhat.com>
848
849         * config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare
850         mismatch.
851
852 2009-11-23  Paul Brook  <paul@codesourcery.com>
853
854         * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
855         case for noreturn functions.
856         (arm_compute_save_reg_mask): Remove special noreturn handling.
857
858 2009-11-23  Richard Guenther  <rguenther@suse.de>
859
860         * tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
861         size for DECL bases.
862
863 2009-11-22  Richard Henderson  <rth@redhat.com>
864
865         * i386.c (avx_vpermilp_parallel): New function.
866         * i386-protos.h: Declare it.
867         * predicates.md (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
868         avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
869         * sse.md (AVXMODEFDP, AVXMODEFSP): New iterators.
870         (ssescalarnum, ssedoublesizemode): Add AVX modes.
871         (vpermilbits): Remove.
872         (avx_vpermil<mode>): Change insns to expanders.
873         (*avx_vpermil<mode>): New.  Use vec_select.
874
875 2009-11-22  Richard Earnshaw  <rearnsha@arm.com>
876
877         * opts.c (decode_options): Don't enable flag_schedule_insns
878         when optimizing for size.
879         * doc/invoke.texi: Document change.
880
881 2009-11-22  Uros Bizjak  <ubizjak@gmail.com>
882
883         PR target/42113
884         * config/alpha/alpha.md (*cmp_sadd_si): Change mode
885         of scratch register to SImode.
886         (*cmp_sadd_sidi): Ditto.
887         (*cmp_ssub_si): Ditto.
888         (*cmp_ssub_sidi): Ditto.
889
890 2009-11-21  Ian Lance Taylor  <iant@google.com>
891
892         * Makefile.in (HOST_LIBS): Move higher in file.
893         (LINKER, LINKER_FLAGS): If ENABLE_BUILD_WITH_CXX, but $(HOST_LIBS)
894         is not empty, set to $(CC) and $(CFLAGS).
895
896 2009-11-22  Martin Jambor  <mjambor@suse.cz>
897
898         * tree-cfg.c (verify_types_in_gimple_reference): Error out on
899         V_C_E of an SSA_NAME or an invariant if lvalue is required.
900         (verify_gimple_call): Verify LHS also with with
901         verify_types_in_gimple_reference.
902
903 2009-11-21  Martin Jambor  <mjambor@suse.cz>
904
905         PR middle-end/42025
906         * tree-sra.c (access_precludes_ipa_sra_p): New function.
907         (splice_param_accesses): Check all accesses by calling
908         access_precludes_ipa_sra_p.
909         (sra_ipa_modify_expr): Rename argument erite to dont_convert and do
910         not convert types if it is true.
911         (sra_ipa_modify_assign): Convert types in case of mismatch.
912
913 2009-11-21  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>
914
915         * config/sh/sh.md (cmpeqsi_t-1): Use logical_operand predicate
916         for operand 1.
917
918 2009-11-21  Adam Nemet  <adambnemet@gmail.com>
919
920         * config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
921         (mips_mulsidi3_gen_fn): Declare new function.
922         * config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
923         * config/mips/mips.md (<u>mulsidi3): Change condition to use
924         mips_mulsidi3_gen_fn.  Use mips_mulsidi3_gen_fn to generate the insn.
925         (<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
926         (mulsidi3_64bit_dmul): New define_insn.
927
928 2009-11-21  Ben Elliston  <bje@au.ibm.com>
929
930         * gengtype-lex.l: Enable noinput flex option.
931         (YY_NO_INPUT): Remove define.
932
933 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
934
935         * tree-ssa.c (find_released_ssa_name): Handle NULL wi.
936         (insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
937         (insert_debug_temps_for_defs): Handle PHI nodes.
938         * tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
939         SSA names.
940
941 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
942
943         * tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
944         after remove_phi_node.
945
946 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
947
948         PR tree-optimization/42078
949         * gimple.h (gimple_replace_lhs): New declaration.
950         * gimple.c (gimple_replace_lhs): New function.
951         * tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
952         modifying the call.
953
954 2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
955
956         * config/i386/sse.md (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
957         (xop_mulv2div2di3_low): Same.
958         (*xop_pmacsdqh_mem): Same.
959
960 2009-11-20  Richard Henderson  <rth@redhat.com>
961
962         * config/i386/i386-builtin-types.awk: New file.
963         * config/i386/i386-builtin-types.def: New file.
964         * config/i386/t-i386: Use them to build i386-builtin-types.inc.
965         * config/i386/i386.c: Include it.
966         (ix86_builtin_type_tab, ix86_get_builtin_type): New.
967         (ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
968         (struct builtin_isa): Remove GTY marker.  Replace tree type with
969         ix86_builtin_func_type; add set_and_not_built_p.
970         (def_builtin): Change type parameter to tcode; use
971         ix86_get_builtin_func_type; update all callers.  Accept zero mask
972         to mean the builtin is unconditionally available.
973         (ix86_add_new_builtins): Use set_and_not_built_p instead of type
974         being set to NULL.
975         (enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
976         Update some users to rationalized enumeration codes from new include.
977         (enum multi_arg_type): Remove.  Replace all enumeration values
978         with defines to new ix86_builtin_func_type.
979         (ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
980         all type resolution to def_builtin.
981         (ix86_init_builtin_types): Split out from ...
982         (ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.
983
984 2009-11-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
985
986         PR target/41787
987         * config/rs6000/rs6000.c (struct machine_function): Revert
988         2009-10-23 change to set VRSAVE to non-0 if we use VSX.
989         (rs6000_expand_to_rtl_hook): Ditto.
990         (rs6000_check_vector_mode): Ditto.
991         (compute_vrsave_mask): Ditto.
992
993 2009-11-20  Paul Brook  <paul@codesourcery.com>
994
995         * doc/invoke.texi: Document ARM -mcpu=cortex-a5.
996         * config/arm/arm-cores.def: Add cortex-a5.
997         * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
998         * config/arm/arm-tune.md: Regenerate.
999
1000 2009-11-20 Olga Golovanevsky <olga@il.ibm.com>
1001
1002         PR middle-end/39960
1003         * ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
1004         (ref_pos): New field in structure.
1005         (insert_new_var_in_stmt): New function.
1006
1007
1008 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1009
1010         * config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
1011         * config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
1012         (INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE): Define.
1013         (UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
1014         (INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
1015         INT_LEAST64_TYPE): Define.
1016         (UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
1017         UINT_LEAST64_TYPE): Define.
1018         (INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
1019         INT_FAST64_TYPE): Define.
1020         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
1021         UINT_FAST64_TYPE): Define.
1022         (INTPTR_TYPE, UINTPTR_TYPE): Define.
1023
1024 2009-11-20  Julian Brown  <julian@codesourcery.com>
1025
1026         * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
1027         specially for Thumb-1.
1028         (ASM_OUTPUT_REG_POP): Likewise.
1029
1030 2009-11-19  Jason Merrill  <jason@redhat.com>
1031
1032         * dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
1033
1034 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
1035             Rafael Avila de Espindola  <espindola@google.com>
1036
1037         * doc/plugins.texi (Plugin initialization): Added advices for
1038         retrieving the version of GCC at plugin compilation and loading times.
1039
1040 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
1041
1042         * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
1043         (dump_active_plugins): output to file everything. Use
1044         internationalized dump & FMT_FOR_PLUGIN_EVENT.
1045
1046 2009-11-19  Richard Guenther  <rguenther@suse.de>
1047
1048         * gimple.c (canonicalize_cond_expr_cond): Strip conversions
1049         around truth-valued expressions.
1050         * tree.c (free_lang_data): Untangle check for LTO frontend.
1051
1052 2009-11-19  Jakub Jelinek  <jakub@redhat.com>
1053
1054         * tree.c (need_assembler_name_p): Use cgraph_get_node instead
1055         of cgraph_node_for_decl.
1056         * cgraph.h (cgraph_node_for_decl): Remove prototype.
1057         * cgraph.c (cgraph_node_for_decl): Remove.
1058         (cgraph_get_node): Just return NULL if !cgraph_hash.
1059
1060 2009-11-19  Paul Brook  <paul@codesourcery.com>
1061
1062         * config.gcc: Add new ARM --with-fpu options.
1063         * doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
1064         * config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
1065
1066 2009-11-18  Richard Guenther  <rguenther@suse.de>
1067
1068         * gimple.h (union gimple_statement_d): Add gsmembase member.
1069         (gimple_vuse_op): Use gsmembase for access.
1070         (gimple_vdef_op): Likewise.
1071         (gimple_vuse): Likewise.
1072         (gimple_vdef): Likewise.
1073         (gimple_vuse_ptr): Likewise.
1074         (gimple_vdef_ptr): Likewise.
1075         (gimple_set_vuse): Likewise.
1076         (gimple_set_vdef): Likewise.
1077         * gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
1078
1079 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1080
1081         * doc/arm-neon-intrinsics.texi: Regenerated.
1082
1083 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1084
1085         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle alternatives.
1086
1087 2009-11-18  Paul Brook  <paul@codesourcery.com>
1088             Daniel Jacobowitz  <dan@codesourcery.com>
1089
1090         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
1091         (arm_arch7em): New variable.
1092         (all_architectures): Add armv7e-m.
1093         (arm_override_options): Set arm_arch7em.
1094         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
1095         Include arm_arch7em.
1096         (arm_arch7em): Declare.
1097
1098 2009-11-18  Richard Guenther  <rguenther@suse.de>
1099
1100         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
1101         a valid field decl if checking is enabled.
1102
1103 2009-11-18  Martin Jambor  <mjambor@suse.cz>
1104
1105         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
1106         (lto_ipa_fixup_call_notes): Declare.
1107         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
1108         (update_call_notes_after_inlining): Copy call stmt uid to the new
1109         edge.
1110         (ipa_write_param_call_note): New function.
1111         (ipa_read_param_call_note): New function
1112         (ipa_write_node_info): Write also param call notes.  Removed a bogus
1113         comment, reformatted to fit 80 columns.
1114         (ipa_read_node_info): Read also param call notes. Removed a bogus
1115         comment.  Remove ipa_edge_args_vector growth.
1116         (lto_ipa_fixup_call_notes): New function.
1117         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
1118         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
1119         inlining regardless of flag_wpa.
1120         (cgraph_decide_inlining_of_small_functions): Likewise.
1121         (cgraph_decide_inlining): Likewise.
1122         (inline_read_summary): Likewise.
1123
1124 2009-11-18  Jan Hubicka  <jh@suse.cz>
1125
1126         * predict.c (compute_function_frequency): Export.
1127         * predict.h (compute_function_frequency): Declare.
1128         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
1129
1130 2009-11-18  Martin Jambor  <mjambor@suse.cz>
1131
1132         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
1133         on all nodes we write summaries for.
1134
1135 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
1136
1137         PR middle-end/22201
1138         * params.def (PARAM_INLINE_UNIT_GROWTH, PARAM_IPCP_UNIT_GROWTH)
1139         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
1140         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
1141         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
1142         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
1143         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
1144         (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
1145         description string.
1146
1147 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
1148
1149         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
1150         unnecessarily.
1151         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
1152
1153         PR c++/3187
1154         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
1155         fields.
1156         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
1157         prototypes.
1158         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
1159         cgraph_materialize_all_clones): Handle same_body aliases.
1160         * cgraph.c (cgraph_allocate_node): New function.
1161         (cgraph_create_node): Use it.
1162         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
1163         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
1164         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
1165         functions.
1166         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
1167         (input_node): Stream in same_body aliases.
1168         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
1169         for same_body aliases.
1170         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
1171
1172 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
1173
1174         PR other/39888
1175         * config/darwin.h: Use the extension stub libraries to access
1176         current libgcc_s features.
1177
1178 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1179
1180         PR debug/41926
1181         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
1182         (vect_transform_loop): Call it.
1183
1184 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1185
1186         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
1187         released SSA names.
1188
1189 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1190
1191         PR debug/41888
1192         PR debug/41886
1193         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
1194         are ok.
1195         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
1196         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
1197         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
1198         (sese_bad_liveouts_use): New.
1199         (sese_reset_debug_liveouts_bb): New.
1200         (sese_build_liveouts): Use it.
1201         (rename_variables_in_stmt): Reset debug stmts rather than creating
1202         new vars for them.
1203         (expand_scalar_variable_stmt): Likewise.
1204
1205 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1206
1207         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
1208         (df_ref_remove): Likewise.
1209
1210 2009-11-17  Jan Hubicka  <jh@suse.cz>
1211
1212         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
1213         info.
1214
1215 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
1216
1217         * toplev.c (process_options): Remove dead code.
1218         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
1219
1220 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
1221
1222         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
1223         nodes.
1224
1225 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1226
1227         PR tree-optimization/41857
1228         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
1229         TYPE's address space instead of pointer to TYPE.
1230
1231 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1232
1233         * reload.c (find_reloads_address): Fix typo.
1234
1235 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1236
1237         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
1238         registers in leaf functions if possible.
1239
1240 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
1241
1242         * config/m68k/m68k-devices.def: Add MCF5441x family.
1243
1244 2009-11-17  Jan Hubicka  <jh@suse.cz>
1245
1246         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
1247         removed node.
1248         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
1249
1250 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
1251
1252         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
1253         nest ior expressions.
1254         (x86_64_szext_nonmemory_operand): Ditto.
1255         (call_insn_operand): Ditto.
1256
1257 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
1258
1259         * stmt.c (expand_asm_stmt): Get locus from stmt.
1260
1261 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
1262
1263         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
1264         Create the decl label for the new dest block on demand.  Require
1265         a fallthrough edge if no asm labels were redirected.
1266
1267 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
1268
1269         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
1270         operand 1 predicate.
1271         (cstoresi4): Ditto for operand 2.
1272         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
1273         patterns using SDWIM mode iterator.
1274         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
1275         using SWIM mode iterator.
1276         (cmpdi_1): Rename from cmpdi_1_rex64.
1277         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
1278         SWI48 mode iterator.
1279         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn patterns
1280         using SWI mode iterator.
1281         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
1282         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
1283         (*cmpqi_ext_3_insn): Make private.
1284         (*cmpqi_ext_3_insn_rex64): Make private.
1285         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
1286         * config/i386/predicates.md (cmpsi_operand): Remove.
1287
1288 2009-11-16  Paul Brook  <paul@codesourcery.com>
1289
1290         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
1291         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
1292
1293 2009-11-14  Jan Hubicka  <jh@suse.cz>
1294
1295         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
1296         ENTRY_BLOCK_PTR.
1297         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
1298         zero out all callees.
1299         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
1300         frequency and count match.
1301         * ipa-inline.c (update_noncloned_frequencies): New function.
1302         (cgraph_clone_inlined_nodes): Use it.
1303         * tree-inline.c (copy_bb): Fix frequency scaling; output
1304         diagnostic on frequency mismatches to dump file.
1305         (initialize_cfun): Do not scale frequency; fix count scaling;
1306         initialize entry and exit block frequencies; copy profile info.
1307         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
1308         (copy_body): Use frequency_scale as argument.
1309         (expand_call_inline): Compute frequency scale and output diagnostic
1310         to dump file.
1311         (delete_unreachable_blocks_update_callgrah): Remove checking that
1312         has to be done after edge redirection.
1313         (tree_function_versioning): Update initialize_cfun and copy_body call.
1314
1315 2009-11-14  Jan Hubicka  <jh@suse.cz>
1316
1317         * cgraph.c (cgraph_release_function_body): Update use of
1318         ipa_transforms_to_apply.
1319         (cgraph_remove_node): Remove ipa_transforms_to_apply.
1320         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
1321         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
1322         copied body.
1323         (cgraph_materialize_clone): Remove original if dead.
1324         * lto-streamer-in.c (lto_read_body): Remove FIXME and
1325         ipa_transforms_to_apply hack.
1326         * function.h (struct function): Add ipa_transforms_to_apply.
1327         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
1328         * tree-inline.c (copy_bb): Update sanity check.
1329         (initialize_cfun): Do not copy ipa_transforms_to_apply.
1330         (expand_call_inline): remove dead clone originals.
1331         (tree_function_versioning): Merge transformation queues.
1332         * passes.c (add_ipa_transform_pass): Remove.
1333         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
1334         tracking.
1335         (execute_all_ipa_transforms): Update.
1336         (execute_one_pass): Update.
1337
1338 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1339
1340         PR target/21078, 21080
1341         * config/avr/avr.c (avr_return_addr_rtx): New function for
1342         builtin_return_address.
1343         (expand_prologue): Calculate stack usage.
1344         (avr_asm_function_end_prologue): Output stack size and offset label.
1345         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
1346         (machine_function): Add stack_usage.
1347         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
1348
1349 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
1350
1351         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
1352         new 'outgoing' argument.
1353         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
1354         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1355         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
1356         iq2000_function_value_regno_p.
1357         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1358         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
1359         Declare.
1360
1361 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
1362
1363         PR target/42031
1364         * arm.md (adddi_sesidi_di): Place tied contraint first.
1365         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
1366         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
1367         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
1368         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
1369         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
1370         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
1371         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
1372         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
1373         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
1374
1375 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
1376
1377         * config/i386/predicates.md (call_register_no_elim_operand):
1378         New predicate.  Reject stack register as valid call operand
1379         for 32bit targets.
1380         (call_insn_operand): Use call_register_no_elim_operand.
1381
1382 2009-11-13  Richard Henderson  <rth@redhat.com>
1383
1384         * function.c (stack_protect_prologue): Don't bypass expand_expr
1385         for stack_protect_guard and guard_decl.
1386         (stack_protect_epilogue): Likewise.
1387
1388 2009-11-13  Jan Hubicka  <jh@suse.cz>
1389
1390         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
1391         when to PUBLIC is set.
1392
1393 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
1394
1395         PR middle-end/42029
1396         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
1397         tmp_load if needed.
1398
1399 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1400
1401         PR target/41900
1402         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
1403         *call_value_1): Use "lsm" as operand 1 constraint.
1404         * config/i386/predicates.md (call_insn_operand): Depend on
1405         index_register_operand to avoid %esp register.
1406
1407 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1408
1409         Revert:
1410         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1411
1412         PR target/41900
1413         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
1414         (TARGET_CALL_ESP): New define.
1415         * config/i386/i386.c (initial_ix86_tune_features): Initialize
1416         X86_ARCH_CALL_ESP.
1417         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
1418         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
1419         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
1420         TARGET_CALL_ESP.
1421         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
1422         New patterns, use "lsm" as operand 1 constraint.
1423         * config/i386/predicates.md (call_insn_operand): Depend on
1424         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
1425
1426 2009-11-13  Jason Merrill  <jason@redhat.com>
1427
1428         PR debug/26965
1429         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
1430         Don't emit a second declaration at any scope.
1431
1432 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
1433
1434         PR rtl-optimization/41697
1435         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
1436         a conditional jump has a single successor.
1437
1438 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
1439
1440         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
1441         allocate reg_last when in case lazy_reg_last is true.
1442         (init_deps_reg_last): New.
1443         (free_deps): When max_reg is 0, this context is already freed.
1444         * sched-int.h (init_deps_reg_last): Export.
1445         (init_deps): Update prototype.
1446         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
1447         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
1448         * ddg.c (build_intra_loop_deps): Likewise.
1449         * sel-sched-ir.c (copy_deps_context, create_deps_context,
1450         reset_deps_context, deps_init_id): Likewise.
1451         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
1452         (free_data_for_scheduled_insn): New, break down from ...
1453         (free_first_time_insn_data): ... here.
1454         (has_dependence_p): Allocate reg_last now, when it is needed.
1455         (extend_insn_data): When maximal LUID is big enough, allocate
1456         per-insn data in smaller chunks.
1457         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
1458         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
1459         in scheduled insn.
1460
1461 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1462
1463         * config/i386/i386.md (call_value): Fix comment.
1464         (sibcall_value): Ditto.
1465
1466 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
1467
1468         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
1469         (MD_FROB_UPDATE_CONTEXT): Define.
1470
1471 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
1472             Laurent GUERBY  <laurent@guerby.net>
1473
1474         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
1475         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
1476         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
1477
1478 2009-11-12  Jan Hubicka  <jh@suse.cz>
1479
1480         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
1481         and clear DECL_COMMON on localized declarations.
1482
1483 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
1484
1485         PR rtl-opt/38582
1486         * regrename.c (struct du_head): New structure; some elements moved
1487         from...
1488         (struct du_chain): ... this one.
1489         (open_chains, closed_chains): Now of type struct du_head *.
1490         (do_replace): Accept du_head argument, not du_chain.  All callers
1491         changed.  Modified code to match new data structures.
1492         (build_def_use): Return a list of du_head structures.  Modified code
1493         to match new data structures.
1494         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
1495         callers changed.  Modified code to match new data structures.
1496         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
1497         callers changed.  Modified code to match new data structures.
1498         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
1499         Allocate a du_head structure as well as a du_chain when creating a
1500         new chain.  Modified other code to match new data structures.
1501
1502 2009-11-12  Jan Hubicka  <jh@suse.cz>
1503
1504         * cgraph.h (varpool_node_name): Declare.
1505         * cgraphunit.c (process_function_and_variable_attributes): Set
1506         force_output flag on used variables.
1507         * ipa.c (function_and_variable_visibility): Dump externally visible
1508         and needed variables.
1509         * varpool.c (varpool_node_name): Export.
1510         (decide_is_variable_needed): Check COMDAT for externally visible vars;
1511         ignore needed flag.
1512
1513 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
1514
1515         PR middle-end/41930
1516         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
1517         processing if XEXP (x, i) is NULL.
1518
1519 2009-11-12  Jan Hubicka  <jh@suse.cz>
1520
1521         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
1522         imply PUBLIC || EXTERNAL.
1523
1524 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1525
1526         PR middle-end/41440
1527         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
1528         single successor block, ending with jump created by RTL expander.
1529
1530 2009-11-11  Jan Hubicka  <jh@suse.cz>
1531
1532         PR middle-end/41729
1533         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
1534         and WEAK variables at -fwhole-program.
1535
1536         PR middle-end/41735
1537         * ipa.c (whole_program_function_and_variable_visility): COMDAT
1538         functions/variables are not needed even if they are externally visible.
1539
1540 2009-11-11  Jan Hubicka  <jh@suse.cz>
1541
1542         (patch by Richard Guenther)
1543         * lto-streamer-out.c (output_function): Output head of argument list
1544         earlier.
1545         * lto-streamer-in.c (input_function): Re-map arguments into merged
1546         declaration.
1547
1548 2009-11-11  Jan Hubicka  <jh@suse.cz>
1549
1550         * lto-cgraph.c: Include gcov-io.h
1551         (output_profile_summary): New function.
1552         (output_cgraph): Use it.
1553         (input_profile_summary): New function.
1554         (input_cgraph): Use it.
1555         * coverage.c (build_ctr_info_value): Use varpool; initalize
1556         DECL_ASSEMBLER_NAME.
1557         (create_coverage): Likewise.
1558         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
1559         (tree_init_edge_profiler): Likewise.
1560         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
1561
1562 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
1563
1564         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
1565         * c-pragma.c (def_pragma_macro_value): Likewise.
1566         (def_pragma_macro): Likewise.
1567         (pushed_macro_table): Likewise.
1568         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
1569         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
1570
1571 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
1572
1573         * doc/plugins.texi (Registering custom attributes): section
1574         renamed as (Registering custom attributes or pragmas).
1575         Mentions custom attributes & pragmas, and c_register_pragma, with
1576         a small example.
1577         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
1578         pragmas.
1579         * doc/extend.texi (Function Attributes): Mentions that plugin can
1580         provide their attributes.
1581
1582 2009-11-11  Jon Beniston  <jon@beniston.com>
1583
1584         * config.gcc: Add lm32 elf and uclinux targets.
1585         * config/lm32: New directory.
1586         * config/lm32/lm32.c: New file.
1587         * config/lm32/lm32.h: New file.
1588         * config/lm32/lm32.md: New file.
1589         * config/lm32/lm32.opt: New file.
1590         * config/lm32/lm32-protos.h: New file.
1591         * config/lm32/constraints.md: New file.
1592         * config/lm32/predicates.md: New file.
1593         * config/lm32/sfp-machine.h: New file.
1594         * config/lm32/t-fprules-softfp: New file.
1595         * config/lm32/uclinux-elf.h: New file.
1596         * doc/invoke.texi: Document lm32 options.
1597         * doc/contrib.texi: Document lm32 porter.
1598         * doc/install.texi: Document lm32 targets.
1599
1600 2009-11-11  Martin Jambor  <mjambor@suse.cz>
1601
1602         PR lto/41932
1603         * ipa-prop.c (ipa_update_after_lto_read): Call
1604         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
1605         call ipa_initialize_node_params instead of ipa_populate_param_decls.
1606
1607 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
1608
1609         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
1610         (neon_expand_vector_init): Use them.  Also handle non-constant
1611         vectors with identical elements and vectors with only one
1612         non-constant element.
1613         (arm_print_operand): Handle 'y' modifier.
1614         * config/arm/arm-protos.h (neon_make_constant): Declare.
1615         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
1616         patterns.  Use VX instead of VDQW for the first one.  Allow
1617         a VFP alternative and V32 modes for the second one.
1618         * config/arm/neon.ml (shape_elt): Add Alternatives.
1619         (ops): Use Alternatives for vdup lane instructions.
1620         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
1621         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
1622
1623 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
1624
1625         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
1626         operands.
1627         (movti, mov<mode>): Call force_reg on one operand if required.
1628         * config/arm/vec-common.md (mov<mode>): Likewise.
1629
1630 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
1631
1632         * config/arm/arm.c (arm_override_options): Enable scheduling for
1633         Thumb-2.
1634
1635 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
1636
1637         PR target/10127
1638         PR ada/20548
1639         * expr.h (anti_adjust_stack_and_probe): Declare.
1640         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
1641         parameter and rewrite head comment.
1642         (allocate_dynamic_stack_space): Adjust call to above function.
1643         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
1644
1645         * tree.h (dwarf2out_args_size): Delete.
1646         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
1647         (dwarf2out_args_size_adjust): Delete prototype and move around.
1648         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
1649         ACCUMULATE_OUTGOING_ARGS targets.
1650
1651 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
1652
1653         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
1654         DECL_SIZE of DECL_RESULT before evaluating it.
1655
1656 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1657
1658         PR tree-optimization/41987
1659         * fold-const.c (const_binop): Avoid using fold_buildN().
1660
1661 2009-11-10  Martin Jambor  <mjambor@suse.cz>
1662
1663         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
1664         (execute_all_ipa_stmt_fixups): Declare.
1665         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
1666         * ipa-inline.c (pass_ipa_inline): Likewise.
1667         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
1668         * ipa-reference.c (pass_ipa_reference): Likewise.
1669         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
1670         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
1671         (pass_ipa_lto_finish_out): Likewise.
1672         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
1673         * passes.c (execute_ipa_stmt_fixups): New function.
1674         (execute_all_ipa_stmt_fixups): New function.
1675         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
1676
1677 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
1678
1679         PR ada/20548
1680         * explow.c (probe_stack_range): Fix typo.
1681         * config/sparc/sparc.md (probe_stack): New expander.
1682
1683 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
1684
1685         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
1686
1687 2009-11-09  Jason Merrill  <jason@redhat.com>
1688
1689         * gdbinit.in (pgq): New function for printing gimple sequence.
1690
1691 2009-11-09  Paul Brook  <paul@codesourcery.com>
1692             Daniel Jacobowitz  <dan@codesourcery.com>
1693             Sandra Loosemore  <sandra@codesourcery.com>
1694
1695         * doc/extend.texi (Half-Precision): Update wording to reflect
1696         that there are now multiple -mfpu options that enable fp16
1697         hardware support.
1698         * doc/invoke.texi: Update list of ARM -mfpu= options.
1699         * config.gcc: Update ARM --with-fpu option list.
1700         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
1701         vfpv3xd and vfpv3xd-fp16.
1702         (use_vfp_abi): New function.
1703         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
1704         when undesirable.
1705         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
1706         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
1707         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
1708         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
1709         provides them.
1710         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
1711         NEON.
1712         (arm_print_operand): Handle 'p' modifier.
1713         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
1714         TARGET_FP16.
1715         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
1716         (TARGET_FP16): Define.
1717         * config/arm/vfp.md: Disable double-precision patterns if the FPU
1718         does not provide them.
1719         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
1720         double-precision values on a single-precision FPU.
1721         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
1722         double-precision constants.
1723         (movhf_vfp_neon): New pattern (was movhf_vfp).
1724         (movhf_vfp): Remove NEON instructions.
1725         * config/arm/constraints.md: Add new "Dy" constraint for
1726         double-precision constants.  Update description of "Dv".
1727         * config/arm/arm.md: Disable double-precision patterns if the FPU
1728         does not provide them
1729
1730 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
1731
1732         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
1733         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
1734         diagnostics.
1735
1736 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
1737
1738         * collect2.c (main): Search PLUGIN_LD for plugin linker.
1739
1740         * configure.ac (--with-plugin-ld): New.  Default to ld.
1741         * configure: Regenerated.
1742         * config.in: Likewise.
1743
1744         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
1745         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
1746
1747 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
1748
1749         * config/openbsd-stdint.h: Change to reflect what
1750         c_common_nodes_and_builtins expects.
1751
1752 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
1753
1754         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
1755
1756 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
1757
1758         PR target/41985
1759         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
1760         function contains at least one local dynamic name.
1761         (print_operand) <case '&'>: Instead output operand lossage diagnostics
1762         here if that happens.
1763
1764 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
1765             Joern Rennecke  <amylaar@spamcop.net>
1766
1767         * cfgrtl.c (pass_free_cfg): Add pass name.
1768         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
1769         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
1770         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
1771         * df-core.c (pass_df_initialize_no_opt): Likewise.
1772         * except.c (pass_rtl_eh): Likewise.
1773         * function.c (pass_init_function, pass_leaf_regs): Likewise.
1774         * gcse.c (pass_rtl_pre): Change pass name.
1775         * passes.c (pass_postreload): Add pass name.
1776         (make_pass_instance): Don't use duplicate-tracking logic for
1777         names starting with '*'.
1778         (next_pass_1): Assert that pass has a name.
1779         (register_one_dump_file): If there is an space in the name,
1780         skip past it.
1781         * predict.c (pass_strip_predict_hints): Add pass name.
1782         * reg-stack.c (pass_stack_regs): Likewise.
1783         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
1784         * tree-cfg.c (pass_warn_function_return,
1785         pass_warn_function_noreturn): Add pass name.
1786         * tree-dfa.c (pass_referenced_vars): Likewise.
1787         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
1788         Fix whitespace before comment.
1789         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
1790         (pass_init_datastructures): Add pass name.
1791         * tree-ssa-loop.c (pass_record_bounds): Likewise.
1792         * tree-ssa.c (pass_early_warn_uninitialized,
1793         pass_late_warn_uninitialized): Likewise.
1794         * tree.c (pass_ipa_free_lang_data): Likewise.
1795         * doc/passes.texi (pass manager): Document how to disambiguate
1796         pass names.
1797
1798 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
1799
1800         * df-problems.c: Fix documentation for forward simulation of LR.
1801         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
1802         (df_simulate_finalize_forwards): Remove.
1803         * df.h (df_simulate_finalize_forwards): Remove.
1804
1805 2009-11-08  Richard Guenther  <rguenther@suse.de>
1806
1807         * tree-ssa-structalias.c (build_succ_graph): Properly make
1808         variables escape if they are stored to anything.
1809
1810 2009-11-08  Richard Guenther  <rguenther@suse.de>
1811
1812         PR rtl-optimization/41928
1813         * loop-invariant.c (free_loop_data): If we didn't allocate
1814         loop data do not try to free it.
1815
1816 2009-11-07  Jason Merrill  <jason@redhat.com>
1817
1818         * tree.c (reconstruct_complex_type): Preserve attributes.
1819
1820 2009-11-07  Richard Guenther  <rguenther@suse.de>
1821
1822         * tree-ssa-structalias.c (build_succ_graph): Feed stores
1823         to anything only to variables that can take pointers.
1824         (get_constraint_for_ssa_var): Properly exclude full
1825         variables from expanding.
1826         (first_vi_for_offset): Avoid overflow in arithmetic.
1827         (first_or_preceding_vi_for_offset): Likewise.
1828         (count_num_arguments): Fix implementation.
1829         (gate_ipa_pta): Do not run when not optimizing.
1830
1831 2009-11-07  David Binderman <dcb314@hotmail.com>
1832
1833         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
1834         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
1835         set but not used variables.
1836         (apply_args_reg_offset): Comment out as unused.
1837         * calls.c (flags_from_decl_or_type): Likewise.
1838         * genautomata.c (check_regexp_units_distribution): Likewise.
1839
1840 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
1841
1842         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
1843         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
1844         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
1845         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
1846         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
1847         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
1848         operand alternatives.
1849
1850 2009-11-06  Michael Matz  <matz@suse.de>
1851
1852         PR middle-end/41963
1853         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
1854         of a potential reciprocal to really be reciprocals.
1855
1856 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
1857
1858         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
1859         lwpintrin.h after immintrin.h.
1860         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
1861         typedefs.
1862
1863         PR middle-end/41935
1864         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
1865         or non-constant index, allow index one past the last element and
1866         allow exceeding array bound in arrays that might be used as flexible
1867         array members.
1868
1869 2009-11-05  Richard Henderson  <rth@redhat.com>
1870
1871         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
1872
1873 2009-11-05  Paul Brook  <paul@codesourcery.com>
1874
1875         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
1876         (arm_fpu_desc): New.
1877         (all_fpus): Add FPU details.
1878         (fp_model_for_fpu): Remove.
1879         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
1880         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
1881         (arm_file_start): Use arm_fpu_desc.
1882         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
1883         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
1884         arm_fpu_desc.
1885         (TARGET_FPA_EMU2): Define.
1886         (arm_fp_model, fputype, arm_fpu_tune): Remove.
1887         (vfp_reg_type, arm_fpu_desc): New.
1888         * config/arm/arm.md (attr fpu): Simplify.
1889         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
1890         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
1891         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
1892         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
1893         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
1894
1895 2009-11-05  Michael Matz  <matz@suse.de>
1896
1897         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
1898         on TARGET_RECIP.
1899         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
1900         for 1/sqrtf.
1901
1902 2009-11-04  Jason Merrill  <jason@redhat.com>
1903
1904         PR c++/36912
1905         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
1906         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
1907         (output_constant): Avoid crash after error.
1908
1909 2009-11-05  Martin Jambor  <mjambor@suse.cz>
1910
1911         * tree-sra.c (struct access): Changed comment of next_sibling field.
1912         (analyze_modified_params): Loop over accesses of a group rather than
1913         over all with the ame base, pass a common bitmap to
1914         walk_aliased_vdefs.
1915         (unmodified_by_ref_scalar_representative): Build link lists of
1916         accesses of a group.
1917         (splice_param_accesses): Likewise.
1918
1919 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
1920
1921         * df-scan.c (df-uses-record): Add case zero_extract of mem.
1922
1923 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
1924
1925         PR target/10127
1926         PR ada/20548
1927         * config/i386/i386.md (probe_stack): New expander.
1928         (logical operation peepholes): Do not split stack checking probes.
1929
1930 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
1931             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1932
1933         * doc/invoke.texi (-mlwp): Add documentation.
1934         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
1935         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
1936         (x86_64-*-*): Ditto.
1937         * config/i386/lwpintrin.h: New file, provide x86 compiler
1938         intrinisics for LWP.
1939         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
1940         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
1941         * config/i386/i386-c.c (ix86_target_macros_internal): Check
1942         ISA_FLAG for LWP.
1943         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
1944         * config/i386/i386.opt (-mlwp): New switch for LWP support.
1945         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
1946         (OPTION_MASK_ISA_LWP_UNSET): New.
1947         (ix86_handle_option): Handle -mlwp.
1948         (isa_opts): Handle -mlwp.
1949         (enum pta_flags): Add PTA_LWP.
1950         (override_options): Add LWP support.
1951         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
1952         (IX86_BUILTIN_LLWPCB32): Ditto.
1953         (IX86_BUILTIN_LLWPCB64): Ditto.
1954         (IX86_BUILTIN_SLWPCB16): Ditto.
1955         (IX86_BUILTIN_SLWPCB32): Ditto.
1956         (IX86_BUILTIN_SLWPCB64): Ditto.
1957         (IX86_BUILTIN_LWPVAL16): Ditto.
1958         (IX86_BUILTIN_LWPVAL32): Ditto.
1959         (IX86_BUILTIN_LWPVAL64): Ditto.
1960         (IX86_BUILTIN_LWPINS16): Ditto.
1961         (IX86_BUILTIN_LWPINS32): Ditto.
1962         (IX86_BUILTIN_LWPINS64): Ditto.
1963         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
1964         (builtin_description): Ditto.
1965         (ix86_init_mmx_sse_builtins): Ditto.
1966         (ix86_expand_special_args_builtin): Ditto.
1967         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
1968         LWP support.
1969         (UNSPEC_SLWP_INTRINSIC): Ditto.
1970         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
1971         (UNSPECV_LWPINS_INTRINSIC): Ditto.
1972         (lwp_llwpcbhi1): New lwp pattern.
1973         (lwp_llwpcbsi1): Ditto.
1974         (lwp_llwpcbdi1): Ditto.
1975         (lwp_slwpcbhi1): Ditto.
1976         (lwp_slwpcbsi1): Ditto.
1977         (lwp_slwpcbdi1): Ditto.
1978         (lwp_lwpvalhi3): Ditto.
1979         (lwp_lwpvalsi3): Ditto.
1980         (lwp_lwpvaldi3): Ditto.
1981         (lwp_lwpinshi3): Ditto.
1982         (lwp_lwpinssi3): Ditto.
1983         (lwp_lwpinsdi3): Ditto.
1984
1985 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1986             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1987
1988         PR rtl-opt/41833
1989         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
1990         a vec_duplicate.
1991
1992 2009-11-04  Richard Guenther  <rguenther@suse.de>
1993             Rafael Avila de Espindola  <espindola@google.com>
1994
1995         * gcc.c (process_command): Handle arguments name@offset.
1996
1997 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
1998             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1999
2000         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
2001         (x86_64-*-*): Ditto.
2002         * config/i386/xopintrin.h: New file, provide common x86 compiler
2003         intrinisics for XOP.
2004         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
2005         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
2006         * config/i386/i386-c.c(ix86_target_macros_internal): Check
2007         ISA_FLAG for XOP.
2008         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
2009         * config/i386/i386.opt (-mxop): New switch for XOP support.
2010         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
2011         (UNSPEC_XOP_TRUEFALSE)
2012         (UNSPEC_XOP_PERMUTE)
2013         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
2014         (PPERM_*): New constants for vpperm instruction.
2015         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
2016         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
2017         (OPTION_MASK_ISA_XOP_UNSET): New.
2018         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
2019         (ix86_handle_option): Handle -mxop.
2020         (isa_opts): Handle -mxop.
2021         (enum pta_flags): Add PTA_XOP.
2022         (override_options): Add XOP support.
2023         (print_operand): Add code for XOP compare instructions.
2024         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
2025         (ix86_expand_int_vcond): Extend for XOP compare instruction.
2026
2027         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
2028         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
2029         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
2030         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
2031         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
2032         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
2033         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
2034
2035         (IX86_BUILTIN_VPCMOV256): Ditto.
2036         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
2037         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
2038         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
2039         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
2040         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
2041         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
2042
2043         (IX86_BUILTIN_VPPERM): Ditto.
2044
2045         (IX86_BUILTIN_VPMACSSWW): Ditto.
2046         (IX86_BUILTIN_VPMACSWW): Ditto.
2047         (IX86_BUILTIN_VPMACSSWD): Ditto.
2048         (IX86_BUILTIN_VPMACSWD): Ditto.
2049         (IX86_BUILTIN_VPMACSSDD): Ditto.
2050         (IX86_BUILTIN_VPMACSDD): Ditto.
2051         (IX86_BUILTIN_VPMACSSDQL): Ditto.
2052         (IX86_BUILTIN_VPMACSSDQH): Ditto.
2053         (IX86_BUILTIN_VPMACSDQL): Ditto.
2054         (IX86_BUILTIN_VPMACSDQH): Ditto.
2055         (IX86_BUILTIN_VPMADCSSWD): Ditto.
2056         (IX86_BUILTIN_VPMADCSWD): Ditto.
2057
2058         (IX86_BUILTIN_VPHADDBW): Ditto.
2059         (IX86_BUILTIN_VPHADDBD): Ditto.
2060         (IX86_BUILTIN_VPHADDBQ): Ditto.
2061         (IX86_BUILTIN_VPHADDWD): Ditto.
2062         (IX86_BUILTIN_VPHADDWQ): Ditto.
2063         (IX86_BUILTIN_VPHADDDQ): Ditto.
2064         (IX86_BUILTIN_VPHADDUBW): Ditto.
2065         (IX86_BUILTIN_VPHADDUBD): Ditto.
2066         (IX86_BUILTIN_VPHADDUBQ): Ditto.
2067         (IX86_BUILTIN_VPHADDUWD): Ditto.
2068         (IX86_BUILTIN_VPHADDUWQ): Ditto.
2069         (IX86_BUILTIN_VPHADDUDQ): Ditto.
2070         (IX86_BUILTIN_VPHSUBBW): Ditto.
2071         (IX86_BUILTIN_VPHSUBWD): Ditto.
2072         (IX86_BUILTIN_VPHSUBDQ): Ditto.
2073
2074         (IX86_BUILTIN_VPROTB): Ditto.
2075         (IX86_BUILTIN_VPROTW): Ditto.
2076         (IX86_BUILTIN_VPROTD): Ditto.
2077         (IX86_BUILTIN_VPROTQ): Ditto.
2078         (IX86_BUILTIN_VPROTB_IMM): Ditto.
2079         (IX86_BUILTIN_VPROTW_IMM): Ditto.
2080         (IX86_BUILTIN_VPROTD_IMM): Ditto.
2081         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
2082
2083         (IX86_BUILTIN_VPSHLB): Ditto.
2084         (IX86_BUILTIN_VPSHLW): Ditto.
2085         (IX86_BUILTIN_VPSHLD): Ditto.
2086         (IX86_BUILTIN_VPSHLQ): Ditto.
2087         (IX86_BUILTIN_VPSHAB): Ditto.
2088         (IX86_BUILTIN_VPSHAW): Ditto.
2089         (IX86_BUILTIN_VPSHAD): Ditto.
2090         (IX86_BUILTIN_VPSHAQ): Ditto.
2091
2092         (IX86_BUILTIN_VFRCZSS): Ditto.
2093         (IX86_BUILTIN_VFRCZSD): Ditto.
2094         (IX86_BUILTIN_VFRCZPS): Ditto.
2095         (IX86_BUILTIN_VFRCZPD): Ditto.
2096         (IX86_BUILTIN_VFRCZPS256): Ditto.
2097         (IX86_BUILTIN_VFRCZPD256): Ditto.
2098
2099         (IX86_BUILTIN_VPCOMEQUB): Ditto.
2100         (IX86_BUILTIN_VPCOMNEUB): Ditto.
2101         (IX86_BUILTIN_VPCOMLTUB): Ditto.
2102         (IX86_BUILTIN_VPCOMLEUB): Ditto.
2103         (IX86_BUILTIN_VPCOMGTUB): Ditto.
2104         (IX86_BUILTIN_VPCOMGEUB): Ditto.
2105         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
2106         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
2107
2108         (IX86_BUILTIN_VPCOMEQUW): Ditto.
2109         (IX86_BUILTIN_VPCOMNEUW): Ditto.
2110         (IX86_BUILTIN_VPCOMLTUW): Ditto.
2111         (IX86_BUILTIN_VPCOMLEUW): Ditto.
2112         (IX86_BUILTIN_VPCOMGTUW): Ditto.
2113         (IX86_BUILTIN_VPCOMGEUW): Ditto.
2114         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
2115         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
2116
2117         (IX86_BUILTIN_VPCOMEQUD): Ditto.
2118         (IX86_BUILTIN_VPCOMNEUD): Ditto.
2119         (IX86_BUILTIN_VPCOMLTUD): Ditto.
2120         (IX86_BUILTIN_VPCOMLEUD): Ditto.
2121         (IX86_BUILTIN_VPCOMGTUD): Ditto.
2122         (IX86_BUILTIN_VPCOMGEUD): Ditto.
2123         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
2124         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
2125
2126         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
2127         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
2128         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
2129         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
2130         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
2131         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
2132         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
2133         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
2134
2135         (IX86_BUILTIN_VPCOMEQB): Ditto.
2136         (IX86_BUILTIN_VPCOMNEB): Ditto.
2137         (IX86_BUILTIN_VPCOMLTB): Ditto.
2138         (IX86_BUILTIN_VPCOMLEB): Ditto.
2139         (IX86_BUILTIN_VPCOMGTB): Ditto.
2140         (IX86_BUILTIN_VPCOMGEB): Ditto.
2141         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
2142         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
2143
2144         (IX86_BUILTIN_VPCOMEQW): Ditto.
2145         (IX86_BUILTIN_VPCOMNEW): Ditto.
2146         (IX86_BUILTIN_VPCOMLTW): Ditto.
2147         (IX86_BUILTIN_VPCOMLEW): Ditto.
2148         (IX86_BUILTIN_VPCOMGTW): Ditto.
2149         (IX86_BUILTIN_VPCOMGEW): Ditto.
2150         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
2151         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
2152
2153         (IX86_BUILTIN_VPCOMEQD): Ditto.
2154         (IX86_BUILTIN_VPCOMNED): Ditto.
2155         (IX86_BUILTIN_VPCOMLTD): Ditto.
2156         (IX86_BUILTIN_VPCOMLED): Ditto.
2157         (IX86_BUILTIN_VPCOMGTD): Ditto.
2158         (IX86_BUILTIN_VPCOMGED): Ditto.
2159         (IX86_BUILTIN_VPCOMFALSED): Ditto.
2160         (IX86_BUILTIN_VPCOMTRUED): Ditto.
2161
2162         (IX86_BUILTIN_VPCOMEQQ): Ditto.
2163         (IX86_BUILTIN_VPCOMNEQ): Ditto.
2164         (IX86_BUILTIN_VPCOMLTQ): Ditto.
2165         (IX86_BUILTIN_VPCOMLEQ): Ditto.
2166         (IX86_BUILTIN_VPCOMGTQ): Ditto.
2167         (IX86_BUILTIN_VPCOMGEQ): Ditto.
2168         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
2169         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
2170
2171         (enum multi_arg_type): New enum for describing the various XOP
2172         intrinsic argument types.
2173         (bdesc_multi_arg): New table for XOP intrinsics.
2174         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
2175         (ix86_expand_multi_arg_builtin): New function for creating XOP
2176         intrinsics.
2177
2178         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
2179         (xop_pmacsww): Ditto.
2180         (xop_pmacssww): Ditto.
2181         (xop_pmacsdd): Ditto.
2182         (xop_pmacssdd): Ditto.
2183         (xop_pmacssdql): Ditto.
2184         (xop_pmacssdqh): Ditto.
2185         (xop_pmacsdql): Ditto.
2186         (xop_pmacsdql_mem): Ditto.
2187         (xop_mulv2div2di3_low): Ditto.
2188         (xop_pmacsdqh): Ditto.
2189         (xop_pmacsdqh_mem): Ditto.
2190         (xop_mulv2div2di3_high): Ditto.
2191         (xop_pmacsswd): Ditto.
2192         (xop_pmacswd): Ditto.
2193         (xop_pmadcsswd): Ditto.
2194         (xop_pmadcswd): Ditto.
2195         (xop_pcmov_<mode>): Ditto.
2196         (xop_pcmov_<mode>256): Ditto.
2197         (xop_phaddbw): Ditto.
2198         (xop_phaddbd): Ditto.
2199         (xop_phaddbq): Ditto.
2200         (xop_phaddwd): Ditto.
2201         (xop_phaddwq): Ditto.
2202         (xop_phadddq): Ditto.
2203         (xop_phaddubw): Ditto.
2204         (xop_phaddubd): Ditto.
2205         (xop_phaddubq): Ditto.
2206         (xop_phadduwd): Ditto.
2207         (xop_phadduwq): Ditto.
2208         (xop_phaddudq): Ditto.
2209         (xop_phsubbw): Ditto.
2210         (xop_phsubwd): Ditto.
2211         (xop_phsubdq): Ditto.
2212         (xop_pperm): Ditto.
2213         (rotl<mode>3): Ditto.
2214         (rotr<mode>3): Ditto.
2215         (xop_rotl<mode>3): Ditto.
2216         (xop_rotr<mode>3): Ditto.
2217         (vrotr<mode>3): Ditto.
2218         (vrotl<mode>3): Ditto.
2219         (xop_vrotl<mode>3): Ditto.
2220         (vlshr<mode>3): Ditto.
2221         (vashr<mode>3): Ditto.
2222         (vashl<mode>3
2223         (xop_ashl<mode>3): Ditto.
2224         (xop_lshl<mode>3): Ditto.
2225         (ashlv16qi3): Ditto.
2226         (lshlv16qi3): Ditto.
2227         (ashrv16qi3): Ditto.
2228         (ashrv2di3): Ditto.
2229         (xop_frcz<mode>2): Ditto.
2230         (xop_vmfrcz<mode>2): Ditto.
2231         (xop_frcz<mode>2256): Ditto.
2232         (xop_maskcmp<mode>3): Ditto.
2233         (xop_maskcmp_uns<mode>3): Ditto.
2234         (xop_maskcmp_uns2<mode>3): Ditto.
2235         (xop_pcom_tf<mode>3): Ditto.
2236
2237         * doc/invoke.texi (-mxop): Add documentation.
2238         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
2239
2240 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
2241
2242         PR driver/11810
2243         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
2244         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
2245         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
2246
2247 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
2248
2249         PR target/40835
2250         * arm.md (peephole2 patterns for move and compare): New.
2251
2252 2009-11-04  Nick Clifton  <nickc@redhat.com>
2253
2254         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
2255         Make sure that it does not allow CONST_DOUBLEs.
2256         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
2257         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
2258         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
2259         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
2260         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
2261         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
2262         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
2263         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
2264         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
2265         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
2266         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
2267         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
2268         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
2269         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
2270         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
2271
2272 2009-11-04  Richard Guenther  <rguenther@suse.de>
2273
2274         PR tree-optimization/41919
2275         * tree-vrp.c (test_for_singularity): Properly compare values.
2276
2277 2009-11-04  Revital Eres  <eres@il.ibm.com>
2278
2279         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
2280         Consider peeling for alignment only for stores and remove
2281         redundant assignment.
2282
2283 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
2284
2285         PR target/41302
2286         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
2287         (m68k_ok_for_sibcall_p): Handle different result return locations.
2288
2289 2009-11-04  Richard Guenther  <rguenther@suse.de>
2290
2291         * c-opts.c (c_common_post_options): Move LTO option processing
2292         code ...
2293         * opts.c (decode_options): ... here.
2294
2295 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
2296
2297         * c-common.c (fold_offsetof_1): Use %wd instead of
2298         HOST_WIDE_INT_PRINT_DEC.
2299
2300 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
2301
2302         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
2303         __pic__ or __PIC__.
2304
2305 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
2306
2307         * config.gcc (vax-*-linux*): Keep the original contents of
2308         tmake_file while adding vax/t-linux.
2309
2310 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
2311
2312         PR target/10127
2313         PR ada/20548
2314         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
2315         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
2316         (STACK_CHECK_MOVING_SP): Likewise.
2317         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
2318         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
2319         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
2320         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
2321         Document PROBE_STACK.
2322         * explow.c (anti_adjust_stack_and_probe): New function.
2323         (allocate_dynamic_stack_space): Do not directly allocate space if
2324         STACK_CHECK_MOVING_SP, instead invoke above function.
2325         (emit_stack_probe): Handle probe_stack insn.
2326         (PROBE_INTERVAL): New macro.
2327         (STACK_GROW_OPTAB): Likewise.
2328         (STACK_GROW_OFF): Likewise.
2329         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
2330         loop condition in the small constant case.  Rewrite in the general
2331         case to be immune to wraparounds.  Make sure the address of probes
2332         is valid.  Try to use [base + disp] addressing mode if possible.
2333         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
2334         checking is enabled and STACK_CHECK_MOVING_SP.
2335         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
2336         return 1 for volatile references to the stack pointer.
2337         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
2338         __builtin_alloca if stack checking is enabled.
2339         * unwind-dw2.c (uw_identify_context): Take into account whether the
2340         context is that of a signal frame or not.
2341         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
2342         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
2343
2344 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
2345
2346         PR rtl-optimization/41917
2347         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
2348         operand isn't known to be 0, return 1.
2349
2350 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
2351
2352         * config/mips/mips.md: Fix typos.
2353
2354 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
2355
2356         * doc/invoke.texi: Fix typo.
2357
2358 2009-11-03  Paul Brook  <paul@codesourcery.com>
2359
2360         * config/arm/neon.ml (vectype): Add T_floatSF.
2361         (string_of_vectype): Ditto.
2362         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
2363         (deftypes): Use float for float32_t.
2364         * config/arm/arm_neon.h: Regenerate.
2365
2366 2009-11-03  Nick Clifton  <nickc@redhat.com>
2367             Kevin Buettner  <kevinb@redhat.com>
2368
2369         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
2370         order of expected registers.
2371         (rx_load_multiple_vector): Likewise.
2372         (rx_rtsd_vector): Likewise.
2373         * config/rx/rx.c (rx_cpu_type): New variable.
2374         (rx_print_operand): Fix bug printing 64-bit constant values.
2375         (rx_emit_stack_pushm): Reverse order of pushed registers.
2376         (gen_rx_store_vector): Likewise.
2377         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
2378         attribute name.
2379         (is_exception_func): Rename to is_interrupt_func and only accept
2380         "interrupt" as the attribute name.
2381         (rx_get_stack_layout): Use new function name.
2382         (rx_func_attr_inlinable): Likewise.
2383         (rx_attribute_table): Remove "exception".
2384         (rx_expand_prologue): If necessary push the accumulator register
2385         in the prologue of interrupt functions.
2386         (rx_expand_epilogue): If necessary pop the accumulator.
2387         (rx_builtins): Add RX_BUILTIN_MVTIPL.
2388         (rx_expand_builtin_stz): Remove.
2389         (rx_expand_builtin_mvtipl): New function.
2390         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
2391         (rx_expand_builtin): Likewise.
2392         (rx_enable_fpu): New variable.
2393         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
2394         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
2395         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
2396         (enum rx_cpu_types): Define.
2397         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
2398         (INCOMING_FRAME_SP_OFFSET): Define.
2399         (ARG_POINTER_CFA_OFFSET): Define.
2400         (FRAME_POINTER_CFA_OFFSET): Define.
2401         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
2402         (ALLOW_RX_FPU_INSNS): Define.
2403         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
2404         fast_math_flags_set_p.
2405         (UNSPEC_BUILTIN_MVTIPL): Define.
2406         (revl): Rename to bswapsi2.
2407         (bswaphi2): New pattern.
2408         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
2409         (mvtaclo): Likewise.
2410         (racw): Likewise.
2411         (mvtc): Remove clobber of cc0.
2412         (mvtcp): Delete.
2413         (opecp): Delete.
2414         * config/rx/rx.opt (mieee): Remove.
2415         (fpu): Add.
2416         (nofpu): Add.
2417         (mcpu=): Add.
2418         (patch=): Add.
2419         (msave-acc-in-interrupts): Add.
2420         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
2421         (MULTILIB_DIRS): Likewise.
2422         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
2423         * doc/extend.texi: Remove description of "exception" function
2424         attribute.
2425         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
2426         -msave-acc-in-interrupts options.
2427
2428 2009-11-03  Richard Guenther  <rguenther@suse.de>
2429
2430         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
2431
2432 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
2433
2434         PR c++/38699
2435         * c-common.c (fold_offsetof_1): Issue errors when the member
2436         designator of the offsetof expression is not legitimate.
2437
2438 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2439
2440         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
2441         names instead of numerical constants.
2442         (sse_prologue_save): Ditto.
2443         (*sse_prologue_save_insn): Ditto.
2444
2445 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2446
2447         PR target/41900
2448         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
2449         (TARGET_CALL_ESP): New define.
2450         * config/i386/i386.c (initial_ix86_tune_features): Initialize
2451         X86_ARCH_CALL_ESP.
2452         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
2453         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
2454         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
2455         TARGET_CALL_ESP.
2456         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
2457         New patterns, use "lsm" as operand 1 constraint.
2458         * config/i386/predicates.md (call_insn_operand): Depend on
2459         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
2460
2461 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2462
2463         PR tree-optimization/41857
2464         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
2465         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
2466         to create_mem_ref.
2467         * tree-ssa-address.c (move_hint_to_base): New function.
2468         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
2469         address space associated with TYPE.
2470         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
2471         most_expensive_mult_to_index.  Call move_hint_to_base.
2472         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
2473         TYPE to addr_to_parts.
2474
2475 2009-11-02  Martin Jambor  <mjambor@suse.cz>
2476
2477         PR tree-optimization/41750
2478         * tree-sra.c (analyze_modified_params): Loop over all
2479         representatives of components of a parameter.
2480
2481 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
2482
2483         PR tree-optimization/41841
2484         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
2485         local variables of not yet materialized clones.
2486
2487         PR debug/41893
2488         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
2489         for a VOIDmode variable.
2490
2491         PR c++/41774
2492         * c-pragma.c (visstack): Change into vector of ints rather than
2493         enum symbol_visibility.
2494         (push_visibility): Add kind argument, push default_visibility together
2495         with kind.
2496         (pop_visibility): Add kind argument, return true if successful, fail
2497         if visibility stack is empty or if stack top is of different kind.
2498         (handle_pragma_visibility): Don't check length of visstack, instead
2499         call pop_visibility and issue diagnostics if it failed.  Pass 0
2500         as last argument to push_visibility and pop_visibility.
2501         * c-pragma.h (push_visibility): Add kind argument.
2502         (pop_visibility): Likewise.  Return bool instead of void.
2503
2504 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
2505
2506         * tree.def (TARGET_MEM_REF): Update comment.
2507         * alias.c (get_alias_set): Retrieve the original memory reference for
2508         a TARGET_MEM_REF before proceeding.
2509
2510 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
2511
2512         * config/frv/frv.c (frv_function_value, frv_libcall_value,
2513         frv_function_value_regno_p): New functions.
2514         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2515         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2516         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
2517         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
2518
2519 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
2520
2521         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
2522         new 'outgoing' argument.
2523         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
2524         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2525         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
2526         LIBCALL_VALUE): Remove.
2527         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
2528         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
2529         (mh10300_function_value_regno_p): Declare.
2530
2531 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2532
2533         * config/arm/cortex-a9.md: New - integer pipeline description.
2534
2535 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
2536
2537         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
2538         aborting if the sizes of the two references don't match.
2539
2540 2009-10-31  Toon Moene  <toon@moene.org>
2541
2542         * ipa-inline.c (cgraph_decide_inlining):
2543         Include reason for not inlining called-once functions in dump file.
2544
2545 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
2546
2547         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
2548         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
2549         (LINK_SPEC): BE_LINK_SPEC added.
2550
2551 2009-10-30  Richard Guenther  <rguenther@suse.de>
2552
2553         PR lto/41858
2554         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
2555
2556 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
2557
2558         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
2559         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
2560         label.
2561
2562 2009-10-30  Martin Jambor  <mjambor@suse.cz>
2563
2564         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
2565
2566 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
2567
2568         PR target/40838
2569         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
2570         first.  Move assert on stack_alignment_estimated just before
2571         setting stack_realign_needed.
2572         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
2573         Don't call update_stack_boundary.
2574
2575         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
2576         (verride_options): Don't check ix86_force_align_arg_pointer here.
2577         (ix86_function_ok_for_sibcall): Use it.
2578         (ix86_update_stack_boundary): Likewise.
2579
2580         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
2581
2582 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
2583
2584         * arm.md (QHSI): New mode iterator.
2585         (movqi): If generating for thumb, then truncate any immediate to
2586         8 bits.
2587         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
2588         with...
2589         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
2590         version.
2591
2592 2009-10-29  Cary Coutant  <ccoutant@google.com>
2593
2594         PR debug/41700
2595         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
2596         locations in the source).
2597         (store_vcall_insn): New function.
2598         (lookup_vcall_insn): New function.
2599         (dwarf2out_virtual_call_token): Use store_vcall_insn.
2600         (dwarf2out_copy_call_info): New function.
2601         (dwarf2out_virtual_call): Use lookup_vcall_insn.
2602         * emit-rtl.c (try_split): Call copy_call_info debug hook.
2603         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
2604         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
2605         (debug_nothing_rtx_rtx): New dummy hook.
2606         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
2607         (xcoff_debug_hooks): Likewise.
2608         * sdbout.c (sdb_debug_hooks): Likewise.
2609         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
2610
2611 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
2612
2613         * doc/invoke.texi (mmcount-ra-address): Document new command line
2614         option.
2615         * config/mips/mips.opt (mmcount-ra-address): New option.
2616         * config/mips/mips-protos.h (mips_function_profiler): Declare new
2617         function.
2618         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
2619         member.
2620         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
2621         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
2622         rewritten.
2623         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
2624         mips_function_profiler.
2625
2626 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
2627
2628         PR middle-end/37565
2629         PR target/38018
2630         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
2631         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
2632         * optc-gen.awk (cl_target_option_restore): Include call to
2633         targetm.override_options_after_change.
2634         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
2635         * target.h (override_options_after_change): New.
2636         * c-common.c (parse_optimize_options): Call
2637         targetm.override_options_after_change.
2638         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
2639         (ia64_override_options_after_change): New.
2640         (ia64_override_options) Add call to above.
2641
2642 2009-10-29  Michael Matz  <matz@suse.de>
2643
2644         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
2645         (gate_convert_to_rsqrt): Ditto.
2646         (pass_convert_to_rsqrt): Ditto.
2647         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
2648         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
2649         to pass list.
2650
2651         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
2652
2653 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2654
2655         * config/arm/arm.c (find_best_start): Fix type of remainder to be
2656         unsigned.
2657
2658 2009-10-29  Martin Jambor  <mjambor@suse.cz>
2659
2660         PR tree-optimization/41775
2661         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
2662         (generate_subtree_copies): Do not unshare agg.
2663         (load_assign_lhs_subreplacements): Do not unshare rhs.
2664         (sra_modify_assign): Do not unshare exprs.
2665         (propagate_subacesses_accross_link): Renamed to
2666         propagate_subaccesses_across_link.
2667
2668 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
2669
2670         * arm.c (count_insns_for_constant): Rework to support counting for
2671         thumb2 immediates as well.
2672         (find_best_start): Split out from arm_gen_constant.
2673         (arm_gen_constant): Rework to support XOR with immediate.
2674
2675 2009-10-29  Chao-ying Fu  <fu@mips.com>
2676
2677         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
2678         functions.
2679         (mips_expand_synci_loop):  Use the length rtx to control the
2680         synci loop from the begin rtx that points to the first byte of
2681         the cache line.
2682
2683 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
2684
2685         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
2686
2687 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
2688
2689         * dbxout.c (dbxout_common_check): Accept non public trees.
2690         * dwarf2out.c (fortran_common): Accept non public trees.
2691
2692 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
2693
2694         * common.opt (fuse-linker-plugin): New option.
2695         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
2696         fuse-linker-plugin.
2697         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
2698
2699 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2700
2701         PR rtl-optimization/39715
2702         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
2703         (gen_cstoresi_ltu_thumb1): New splitter.
2704
2705 2009-10-28  Richard Guenther  <rguenther@suse.de>
2706
2707         PR lto/41808
2708         PR lto/41839
2709         * tree-ssa.c (useless_type_conversion_p): Do not treat
2710         conversions to pointers to incomplete types as useless.
2711         * gimple.c (gimple_types_compatible_p): Compare struct tags,
2712         not typedef names.
2713
2714 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
2715
2716         * var-tracking.c (emit_note_insn_var_location): Don't call the second
2717         vt_expand_loc unnecessarily when location is not a register nor
2718         memory.
2719
2720         PR middle-end/41837
2721         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
2722         fields don't have DECL_NAME.
2723
2724         PR debug/41801
2725         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
2726         call convert_memory_address on addr.
2727
2728         PR target/41762
2729         * config/i386/i386.c (ix86_pic_register_p): Don't call
2730         rtx_equal_for_cselib_p for VALUEs discarded as useless.
2731
2732 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
2733
2734         * var-tracking.c (emit_note_insn_var_location): Get the mode of
2735         a variable part from its REG, MEM or VALUE.
2736
2737 2009-10-28  Richard Guenther  <rguenther@suse.de>
2738
2739         * gimple.c (gimple_get_alias_set): Fix comment typo.
2740
2741 2009-10-28  Richard Guenther  <rguenther@suse.de>
2742
2743         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
2744         (free_lang_data): Unconditionally compute alias sets for all
2745         standard integer types.  Bail out if gate bailed out previously.
2746         Do not reset the types_compatible_p langhook.
2747         (gate_free_lang_data): Remove.
2748         (struct pass_ipa_free_lang_data): Enable unconditionally.
2749         * gimple.c (gimple_get_alias_set): Use the same alias-set for
2750         all pointer types.
2751
2752 2009-10-28  Richard Guenther  <rguenther@suse.de>
2753
2754         PR middle-end/41855
2755         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
2756         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
2757         (call_may_clobber_ref_p_1): Likewise.
2758         * tree-ssa-structalias.c (find_func_aliases): Likewise.
2759         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
2760
2761 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2762
2763         PR rtl-optimization/41812
2764
2765         Revert:
2766         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2767
2768         * df-problems.c (df_md_scratch): New.
2769         (df_md_alloc, df_md_free): Allocate/free it.
2770         (df_md_local_compute): Only include live registers in init.
2771         (df_md_transfer_function): Prune the in-set computed by
2772         the confluence function, and the gen-set too.
2773
2774 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2775
2776         PR rtl-optimization/39715
2777         * combine.c (simplify_comparison): Use extensions to
2778         widen comparisons.  Try an ANDing first.
2779
2780 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2781
2782         PR rtl-optimization/40741
2783         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
2784         a small constant is cheap.
2785         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
2786         force_reg on the LHS.
2787         (xorsi3): Likewise, and split the XOR if the constant is complex
2788         and not in Thumb mode.
2789
2790 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2791
2792         * expmed.c (emit_store_flag): Check costs before
2793         transforming to the opposite representation.
2794
2795 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2796
2797         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
2798         cstore result to DImode.
2799
2800 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
2801
2802         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
2803         inside the unspec vector.
2804
2805 2009-10-27  Richard Henderson  <rth@redhat.com>
2806
2807         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
2808
2809 2009-10-27  Richard Henderson  <rth@redhat.com>
2810
2811         PR c++/41819
2812         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
2813         eh_region_may_contain_throw; update users.
2814         (eh_region_may_contain_throw): New function.
2815         (lower_catch): Check flag_exceptions before creating exception region.
2816         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
2817         (lower_cleanup): Tidy existing flag_exceptions check to match.
2818
2819 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
2820
2821         PR/41799
2822         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
2823         * config/i386/mingw.opt: Add fset-stack-executable.
2824         * config/i386/i386.c (ix86_trampoline_init): Make call to
2825         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
2826         defined and its value is not zero.
2827         * doc/invoke.texi
2828
2829 2009-10-27  Richard Guenther  <rguenther@suse.de>
2830
2831         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
2832         handle calls to externally visible functions like in regular mode.
2833         (create_variable_info_for): Do not create function infos here.
2834         (have_alias_info): Remove write-only variable.
2835         (solve_constraints): New function split out from common code
2836         in compute_points_to_sets and ipa_pta_execute.
2837         (compute_points_to_sets): Adjust.
2838         (ipa_pta_execute): Likewise.  Handle clones and externally visible
2839         functions like in non-IPA mode.
2840
2841 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
2842
2843         PR c/41842
2844         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
2845         error_mark_node.
2846
2847 2009-10-27  Richard Guenther  <rguenther@suse.de>
2848
2849         * tree-complex.c (expand_complex_div_wide): Check for
2850         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
2851
2852 2009-10-27  Revital Eres  <eres@il.ibm.com>
2853
2854         PR tree-optimization/40648
2855         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
2856         Change decision of when to peel for alignment.
2857
2858 2009-10-27  Richard Guenther  <rguenther@suse.de>
2859
2860         PR lto/41821
2861         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
2862
2863 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
2864
2865         PR bootstrap/41451
2866         * fold-const.c (fold_binary_loc): Do not call
2867         protected_set_expr_location.
2868
2869 2009-10-27  Wei Guozhi  <carrot@google.com>
2870
2871         PR target/41705
2872         * target.h (have_conditional_execution): Add a new target hook
2873         function.
2874         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
2875         * targhooks.h (default_have_conditional_execution): Likewise.
2876         * targhooks.c (default_have_conditional_execution): Likewise.
2877         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
2878         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
2879         (arm_have_conditional_execution): New function.
2880         * ifcvt.c (noce_process_if_block, find_if_header,
2881         cond_exec_find_if_block, dead_or_predicable): Change the usage of
2882         macro HAVE_conditional_execution to a target hook call.
2883         * recog.c (peephole2_optimize): Likewise.
2884         * sched-rgn.c (add_branch_dependences): Likewise.
2885         * final.c (asm_insn_count, final_scan_insn): Likewise.
2886         * bb-reorder.c (HAVE_conditional_execution): Remove it.
2887
2888 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2889             Michael Meissner  <meissner@linux.vnet.ibm.com>
2890             Ulrich Weigand  <uweigand@de.ibm.com>
2891
2892         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
2893         * config/spu/spu_cache.h: New file.
2894
2895         * config/spu/cachemgr.c: New file.
2896         * config/spu/cache.S: New file.
2897
2898         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
2899         (ADDR_SPACE_EA): Define.
2900         (TARGET_ADDR_SPACE_KEYWORDS): Define.
2901         * config/spu/spu.c (EAmode): New macro.
2902         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
2903         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2904         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
2905         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
2906         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
2907         (TARGET_ADDR_SPACE_CONVERT): Likewise.
2908         (TARGET_ASM_SELECT_SECTION): Likewise.
2909         (TARGET_ASM_UNIQUE_SECTION): Likewise.
2910         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
2911         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
2912         (ea_symbol_ref): New function.
2913         (spu_legitimate_constant_p): Handle __ea qualified addresses.
2914         (spu_addr_space_legitimate_address_p): New function.
2915         (spu_addr_space_legitimize_address): Likewise.
2916         (cache_fetch): New global.
2917         (cache_fetch_dirty): Likewise.
2918         (ea_alias_set): Likewise.
2919         (ea_load_store): New function.
2920         (ea_load_store_inline): Likewise.
2921         (expand_ea_mem): Likewise.
2922         (spu_expand_mov): Handle __ea qualified memory references.
2923         (spu_addr_space_pointer_mode): New function.
2924         (spu_addr_space_address_mode): Likewise.
2925         (spu_addr_space_subset_p): Likewise.
2926         (spu_addr_space_convert): Likewise.
2927         (spu_section_type_flags): Handle "._ea" section.
2928         (spu_select_section): New function.
2929         (spu_unique_section): Likewise.
2930         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
2931         and __EA64__ predefined macros.
2932         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
2933         -matomic-updates switches.
2934
2935         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
2936         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
2937         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
2938         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
2939         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
2940         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
2941         $(T)cache128k.o): Likewise.
2942         ($(T)libgcc_%.a): Likewise.
2943
2944         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
2945         * config/spu/spu.opt (-mea32/-mea64): Add switches.
2946         (-maddress-space-conversion): Likewise.
2947         (-mcache-size=): Likewise.
2948         (-matomic-updates): Likewise.
2949         * doc/invoke.texi (-mea32/-mea64): Document.
2950         (-maddress-space-conversion): Likewise.
2951         (-mcache-size=): Likewise.
2952         (-matomic-updates): Likewise.
2953
2954 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2955             Michael Meissner  <meissner@linux.vnet.ibm.com>
2956             Ulrich Weigand  <uweigand@de.ibm.com>
2957
2958         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
2959
2960         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
2961         defined, add the named address space keywords.
2962         (c_addr_space_name): New function.
2963         (complete_array_type): Preserve named address space.
2964         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
2965         instead of targetm.valid_pointer_mode.
2966
2967         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
2968         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
2969         (ADDR_SPACE_KEYWORD): New macro.
2970         (c_addr_space_name): Add prototype.
2971
2972         * c-tree.h (struct c_declspecs): Add address_space member.
2973         (declspecs_add_addrspace): Add prototype.
2974
2975         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
2976
2977         * c-parser.c (c_parse_init): Add assertion.
2978         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
2979         (c_lex_one_token): Handle address space keywords.
2980         (c_token_starts_typename): Likewise.
2981         (c_token_starts_declspecs): Likewise.
2982         (c_parser_declspecs): Likewise.
2983         (c_parser_postfix_expression_after_paren_type): Diagnose compound
2984         literal within function qualified with named address space.
2985
2986         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
2987         address space qualifiers.
2988         (shadow_tag_warned): Warn about useless address space qualifiers.
2989         (quals_from_declspecs): Handle address space qualifiers.
2990         (grokdeclarator): Likewise.
2991         (build_null_declspecs): Likewise.
2992         (declspecs_add_addrspace): New function.
2993
2994         * c-typeck.c (addr_space_superset): New function.
2995         (qualify_type): Handle named address spaces.
2996         (composite_type): Likewise.
2997         (common_pointer_type): Likewise.
2998         (comp_target_types): Likewise.
2999         (build_conditional_expr): Likewise.
3000         (handle_warn_cast_qual): Likewise.
3001         (build_c_cast): Likewise.
3002         (convert_for_assignment): Likewise.
3003         (build_binary_op): Likewise.
3004         (pointer_diff): Handle named address spaces.  Use intermediate
3005         integer type of sufficient size if required.
3006
3007 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3008             Michael Meissner  <meissner@linux.vnet.ibm.com>
3009             Ulrich Weigand  <uweigand@de.ibm.com>
3010
3011         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
3012         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3013         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
3014
3015         * target.h (struct target_def): Add pointer_mode, address_mode,
3016         and valid_pointer_mode to addr_space substructure.
3017         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
3018         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3019         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
3020         (TARGET_ADDR_SPACE_HOOKS): Add them.
3021         * targhooks.c (target_default_pointer_address_modes_p): New function.
3022         * target.h (target_default_pointer_address_modes_p): Add prototype.
3023         * targhooks.c (default_addr_space_pointer_mode): New function.
3024         (default_addr_space_address_mode): Likewise.
3025         (default_addr_space_valid_pointer_mode): Likewise.
3026         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
3027         (default_addr_space_address_mode): Likewise.
3028         (default_addr_space_valid_pointer_mode): Likewise.
3029         * output.h (default_valid_pointer_mode): Move to ...
3030         * targhooks.h (default_valid_pointer_mode): ... here.
3031         * varasm.c (default_valid_pointer_mode): Move to ...
3032         * targhooks.c (default_valid_pointer_mode): ... here.
3033
3034         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
3035         instead of targetm.valid_pointer_mode.
3036
3037         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
3038         * tree.c (integer_pow2p): Likewise.
3039         (tree_log2): Likewise.
3040         (tree_floor_log2): Likewise.
3041         (signed_or_unsigned_type_for): Support pointer type of different size.
3042         (int_or_pointer_precision): New function.
3043         * tree.h (int_or_pointer_precision): Add prototype.
3044         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
3045         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
3046         incoming pointer type instead of POINTER_SIZE.
3047
3048         * tree.c (build_pointer_type): Use appropriate pointer mode
3049         instead of ptr_mode.
3050         (build_reference_type): Likewise.
3051         * expr.c (store_expr): Likewise.
3052         (expand_expr_addr_expr): Likewise.
3053         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
3054         * cfgexpand.c (expand_debug_expr): Likewise.
3055
3056         * auto-inc-dec.c: Include "target.h".
3057         (try_merge): Use appropriate address mode instead of Pmode.
3058         (find_inc): Likewise.
3059         * combine.c (find_split_point): Likewise.
3060         * cselib.c (cselib_record_sets): Likewise.
3061         * dse.c (replace_inc_dec): Likewise.
3062         (canon_address): Likewise.
3063         * var-tracking.c (replace_expr_with_values): Likewise.
3064         (count_uses): Likewise.
3065         (add_uses): Likewise.
3066         (add_stores): Likewise.
3067         * emit-rtl.c: Include "target.h".
3068         (adjust_address_1): Use appropriate address mode instead of Pmode.
3069         (offset_address): Likewise.
3070         * explow.c (break_out_memory_refs): Likewise.
3071         (memory_address_addr_space): Likewise.
3072         (promote_mode): Likewise.
3073         * expr.c (move_by_pieces): Likewise.
3074         (emit_block_move_via_loop): Likewise.
3075         (store_by_pieces): Likewise.
3076         (store_by_pieces_1): Likewise.
3077         (expand_assignment): Likewise.
3078         (store_constructor): Likewise.
3079         (expand_expr_addr_expr): Likewise.
3080         (expand_expr_real_1): Likewise.
3081         * cfgexpand.c (expand_debug_expr): Likewise.
3082         * ifcvt.c (noce_try_cmove_arith): Likewise.
3083         * regcprop.c (kill_autoinc_value): Likewise.
3084         * regmove.c (try_auto_increment): Likewise.
3085         * reload.c (find_reloads): Likewise.
3086         (find_reloads_address): Likewise.
3087         (find_reloads_address_1): Likewise.
3088         * sched-deps.c: Include "target.h".
3089         (sched_analyze_1): Use appropriate address mode instead of Pmode.
3090         (sched_analyze_2): Likewise.
3091         * sel-sched-dump.c: Include "target.h".
3092         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
3093         * stor-layout.c (layout_type): Likewise.
3094         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
3095         (multiplier_allowed_in_address_p): Likewise.
3096         (get_address_cost): Likewise.
3097         * varasm.c (make_decl_rtl): Likewise.
3098
3099         * expr.c (expand_assignment): Always convert offsets to appropriate
3100         address mode.
3101         (store_expr): Likewise.
3102         (store_constructor): Likewise.
3103         (expand_expr_real_1): Likewise.
3104
3105         * reload.h (form_sum): Add MODE argument.
3106         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
3107         Update recursive calls.
3108         (subst_indexed_address): Update calls to form_sum.
3109
3110         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
3111         * tree-ssa-address.c: Include "target.h".
3112         (templates): Replace by ...
3113         (mem_addr_template_list): ... this new vector.
3114         (TEMPL_IDX): Handle address space numbers.
3115         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
3116         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
3117         instead of global cache.  Update call to gen_addr_rtx.
3118         (valid_mem_ref_p): Update call to addr_for_mem_ref.
3119         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
3120
3121         * rtl.h (convert_memory_address_addr_space): Add prototype.
3122         (convert_memory_address): Define as macro.
3123         * explow.c (convert_memory_address): Rename to ...
3124         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
3125         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
3126         Update recursive calls.
3127         (memory_address_addr_space): Call convert_memory_address_addr_space.
3128         * expmed.c (make_tree): Likewise.
3129         * expr.c (expand_assignment): Likewise.
3130         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
3131         (expand_expr_addr_expr): Likewise.  Also, update call.
3132
3133         * alias.c (find_base_value): Guard pointer size optimizations.
3134         (find_base_term): Likewise.
3135         * rtlanal.c (nonzero_bits1): Likewise.
3136         (num_sign_bit_copies1): Likewise.
3137         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
3138
3139         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
3140         (emit-rtl.o): Likewise.
3141         (auto-inc-dec.o): Likewise.
3142         (sched-deps.o): Likewise.
3143
3144 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3145             Michael Meissner  <meissner@linux.vnet.ibm.com>
3146             Ulrich Weigand  <uweigand@de.ibm.com>
3147
3148         * doc/extend.texi (Named Address Spaces): New section.
3149         * coretypes.h (addr_space_t): New type.
3150         (ADDR_SPACE_GENERIC): New define.
3151         (ADDR_SPACE_GENERIC_P): New macro.
3152
3153         * doc/tm.texi (Named Address Spaces): New section.
3154         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
3155         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
3156         (TARGET_ADDR_SPACE_SUBSET_P): Document.
3157         (TARGET_ADDR_SPACE_CONVERT): Document.
3158         * target.h (struct gcc_target): Add addr_space substructure.
3159         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
3160         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
3161         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
3162         (TARGET_ADDR_SPACE_CONVERT): Likewise.
3163         (TARGET_ADDR_SPACE_HOOKS): Likewise.
3164         (TARGET_INITIALIZER): Initialize addr_space hooks.
3165         * targhooks.c (default_addr_space_legitimate_address_p): New function.
3166         (default_addr_space_legitimize_address): Likewise.
3167         (default_addr_space_subset_p): Likewise.
3168         (default_addr_space_convert): Likewise.
3169         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
3170         (default_addr_space_legitimize_address): Likewise.
3171         (default_addr_space_subset_p): Likewise.
3172         (default_addr_space_convert): Likewise.
3173
3174         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
3175         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
3176         (MEM_ADDR_SPACE): New macro.
3177         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
3178         address space memory attribute.
3179         (mem_attrs_htab_hash): Handle address space memory attribute.
3180         (mem_attrs_htab_eq): Likewise.
3181         (set_mem_attributes_minus_bitpos): Likewise.
3182         (set_mem_alias_set): Likewise.
3183         (set_mem_align): Likewise.
3184         (set_mem_expr): Likewise.
3185         (set_mem_offset): Likewise.
3186         (set_mem_size): Likewise.
3187         (adjust_address_1): Likewise.
3188         (offset_address): Likewise.
3189         (widen_memoy_address): Likewise.
3190         (get_spill_slot_decl): Likewise.
3191         (set_mem_attrs_for_spill): Likewise.
3192         (set_mem_addr_space): New function.
3193         * emit-rtl.h (set_mem_addr_space): Add prototype.
3194         * print-rtl.c (print_rtx): Print address space memory attribute.
3195         * expr.c (expand_assignment): Set address space memory attribute
3196         of generated MEM RTXes as appropriate.
3197         (expand_expr_real_1): Likewise.
3198         * cfgexpand.c (expand_debug_expr): Likewise.
3199         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
3200
3201         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
3202         size of "spare" bitfield.
3203         (TYPE_ADDR_SPACE): New macro.
3204         (ENCODE_QUAL_ADDR_SPACE): Likewise.
3205         (DECODE_QUAL_ADDR_SPACE): Likewise.
3206         (CLEAR_QUAL_ADDR_SPACE): Likewise.
3207         (KEEP_QUAL_ADDR_SPACE): Likewise.
3208         (TYPE_QUALS): Encode type address space.
3209         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
3210         * tree.c (set_type_quals): Set type address space.
3211         (build_array_type): Inherit array address space from element type.
3212         * print-tree.c (print_node_brief): Print type address space.
3213         (print_node): Likewise.
3214         * tree-pretty-print.c (dump_generic_node): Likewise.
3215
3216         * explow.c (memory_address): Rename to ...
3217         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
3218         Use address-space aware variants of memory address routines.
3219         * recog.c (memory_address_p): Rename to ...
3220         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3221         Use address-space aware variants of memory address routines.
3222         (offsettable_address_p): Rename to ...
3223         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
3224         Use address-space aware variants of memory address routines.
3225         * reload.c (strict_memory_address_p): Rename to ...
3226         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3227         Use address-space aware variants of memory address routines.
3228         (maybe_memory_address_p): Rename to ...
3229         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3230         Use address-space aware variants of memory address routines.
3231         * expr.h (memory_address_addr_space): Add prototype.
3232         (memory_address): Define as macro.
3233         * recog.h (memory_address_addr_space_p): Add prototype.
3234         (memory_address_p): Define as macro.
3235         (offsettable_address_addr_space_p): Add prototype.
3236         (offsettable_address_p): Define as macro.
3237         (strict_memory_address_addr_space_p): Add prototype.
3238         (strict_memory_address_p): Define as macro.
3239
3240         * combine.c (find_split_point): Use address-space aware variants
3241         of memory address routines.
3242         * emit-rtl.c (operand_subword): Likewise.
3243         (change_address_1): Likewise.
3244         (adjust_address_1): Likewise.
3245         (offset_address): Likewise.
3246         * expr.c (emit_move_insn): Likewise.
3247         (expand_assignment): Likewise.
3248         (expand_expr_real_1): Likewise.
3249         * recog.c (verify_changes): Likewise.
3250         (general_operand): Likewise.
3251         (offsettable_memref_p): Likewise.
3252         (offsettable_nonstrict_memref_p): Likewise.
3253         (constrain_operands): Likewise.
3254         * reload.c (get_secondary_mem): Likewise.
3255         (find_reloads_toplev): Likewise.
3256         (find_reloads_address): Likewise.
3257         (find_reloads_subreg_address): Likewise.
3258         * reload1.c (reload): Likewise.
3259         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
3260         * rtl.h (address_cost): Add ADDRSPACE argument.
3261         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
3262         aware variant of memory address routines.
3263         * loop-invariant.c (create_new_invariant): Update address_cost call.
3264         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
3265         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
3266         Use address-space aware variant of memory address routines.
3267         (propagate_rtx_1): Update call to should_replace_address.
3268         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
3269         argument.
3270         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
3271         ADDRSPACE argument.  Use per-address-space instead of global cache.
3272         Use address-space aware variant of memory address routines.
3273         (get_address_cost): Likewise.
3274         (get_computation_cost_at): Update calls.
3275         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
3276         Use address-space aware variant of memory address routines.
3277         (create_mem_ref_raw): Update call to valid_mem_ref_p.
3278         (most_expensive_mult_to_index): Update call to
3279         multiplier_allowed_in_address_p.
3280
3281         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
3282         attribute to indicate named address spaces.
3283
3284         * varasm.c (get_variable_section): DECLs in named address spaces
3285         cannot be "common".
3286
3287         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
3288         for addresses in a non-generic address space.
3289
3290         * expr.c (emit_block_move_hints): Do not use libcalls for
3291         memory in non-generic address spaces.
3292         (clear_storage_hints): Likewise.
3293         (expand_assignment): Likewise.
3294
3295         * fold-const.c (operand_equal_p): Expressions refering to different
3296         address spaces are not equivalent.
3297
3298         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
3299         spaces are not equivalent.
3300         (rtx_equal_p): Likewise.
3301         * cse.c (exp_equiv_p): Likewise.
3302         * jump.c (rtx_renumbered_equal_p): Likewise.
3303         * reload.c (operands_match_p): Likewise.
3304
3305         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
3306         address spaces may alias.
3307         (true_dependence): Likewise.
3308         (canon_true_dependence): Likewise.
3309         (write_dependence_p): Likewise.
3310
3311         * dse.c (canon_address): Handle named address spaces.
3312         * ifcvt.c (noce_try_cmove_arith): Likewise.
3313
3314         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
3315         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
3316         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
3317         to handle conversions between different address spaces.
3318         * fold-const.c (fold_convert_loc): Likewise.
3319         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
3320         * tree-pretty-print.c (dump_generic_node): Likewise.
3321         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
3322         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
3323         * tree-inline.c (estimate_operator_cost): Likewise.
3324         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
3325         to different address spaces are not useless.
3326
3327 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
3328
3329         PR bootstrap/41345
3330         * cfgcleanup.c (trivially_empty_bb_p): New function.
3331         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
3332
3333         PR debug/41828
3334         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
3335         add_name_and_src_coords_attributes, gen_namespace_die,
3336         dwarf2out_set_name): Handle dwarf2_name returning NULL.
3337
3338 2009-10-26  Nick Clifton  <nickc@redhat.com>
3339
3340         * config.gcc: Add support for RX target.
3341         * config/rx: New directory.
3342         * config/rx/constraints.md: New file.
3343         * config/rx/predicates.md: New file.
3344         * config/rx/rx.c: New file.
3345         * config/rx/rx.h: New file.
3346         * config/rx/rx.md: New file.
3347         * config/rx/rx.opt: New file.
3348         * config/rx/rx-protos.h: New file.
3349         * config/rx/t-rx: New file.
3350         * doc/extend.texi: Document RX function attributes.
3351         * doc/invoke.texi: Document RX specific command line options.
3352         * doc/contrib.texi: Document RX contribution.
3353         * doc/md.texi: Document RX constraints.
3354         * doc/install.texi: Document RX support.
3355
3356 2009-10-26  Michael Matz  <matz@suse.de>
3357
3358         PR tree-optimization/41783
3359         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
3360         case for simple diamonds.
3361         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
3362         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
3363         argument, use alias oracle to skip some vdefs.
3364         (phi_translate_1): Change call to above, don't allocate new
3365         value ids if they can stay the same.
3366         (compute_avail): Allow vuse walking when looking up references.
3367
3368 2009-10-26  Richard Guenther  <rguenther@suse.de>
3369
3370         PR tree-optimization/41826
3371         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
3372         access to re-allocated vector fields.
3373
3374 2009-10-26  Richard Guenther  <rguenther@suse.de>
3375
3376         * graphite-sese-to-poly.c (check_poly_representation): Fix
3377         compile without checking.
3378
3379 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
3380
3381         PR fortran/41714
3382         * gimple.h (tree_annotate_all_with_location): Remove prototype.
3383         * gimplify.c (tree_should_carry_location_p,
3384         tree_annotate_one_with_location,tree_annotate_all_with_location):
3385         Remove obsolete functions.
3386
3387 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
3388
3389         PR target/41813
3390         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
3391
3392 2009-10-25  Richard Guenther  <rguenther@suse.de>
3393
3394         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
3395         Stream DECL_RESTRICTED_P.
3396         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
3397
3398 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
3399
3400         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
3401         a note when expanding to nothing.
3402
3403 2009-10-25  Richard Guenther  <rguenther@suse.de>
3404
3405         PR middle-end/41814
3406         * tree.c (find_decls_types_r): Deal with Java overloading
3407         BINFO_VIRTUALS for its own purpose.
3408
3409 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
3410
3411         * config/mips/predicates.md (hilo_operand): New predicate.
3412         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
3413         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
3414         splitter part from here ...:
3415         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
3416         op0 and op4 to match the DINS case.
3417         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
3418
3419 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
3420
3421         PR middle-end/19154
3422         * avr.md (QIDI): Add new mode iterator.
3423         (sbrx_branch<mode>): Create new zero extract bit, test and jump
3424         patterns for all QI thru DI modes combinations.
3425         (sbrx_and_branch<mode>): Create new and based bit test and jump
3426         patterns for QI thru SI modes.
3427         avr.c (avr_out_sbxx_branch): Use only bit number.
3428
3429 2009-10-24  Jan Hubicka  <jh@suse.cz>
3430
3431         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
3432         to memory.
3433         (analyze_function): When analyzing noreturn nothrow call, do not
3434         compute written stats; free bitmaps of vars early if possible.
3435         (generate_summary): Only update bitmaps if computed.
3436         (propagate): Only dump bitmaps if computed.
3437         (ipa_reference_read_summary): Fix pasto.
3438
3439 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
3440
3441         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
3442         (aliasing_component_refs_p): ...this.  Return true if there is no
3443         common base and the base access types have the same alias set.
3444         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
3445         (indirect_refs_may_alias_p): Likewise.
3446
3447 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
3448
3449         PR c/40033
3450         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
3451         a C_MAYBE_CONST_EXPR.
3452
3453 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
3454
3455         PR target/41787
3456         * config/rs6000/rs6000.c (struct machine_function): Add
3457         vsx_or_altivec_used_p to record if vector types are used.
3458         (rs6000_expand_to_rtl_hook): Rename from
3459         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
3460         any vector operations, so if there are, we can set VRSAVE to
3461         non-zero when only floating point vector registers are used.
3462         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
3463         (rs6000_check_vector_mode): Inner function to check if vector
3464         types are used in the code.
3465         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
3466         vector instructions are used.
3467
3468         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
3469         Indicate that VSX registers which overlap floating point
3470         registers, can't be used across a call, since the ABI only states
3471         the scalar part of the register will be saved and restored.
3472
3473 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
3474
3475         PR c/41673
3476         * alias.c (get_alias_set): Call langhook before returning 0 for
3477         types with structural equality.
3478         * c-common.c (c_common_get_alias_set): Use alias set of element
3479         type for arrays with structural comparison.
3480
3481 2009-10-23  Richard Guenther  <rguenther@suse.de>
3482
3483         PR middle-end/41805
3484         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
3485         gimple_call_nothrow_p.
3486
3487 2009-10-23  Richard Guenther  <rguenther@suse.de>
3488
3489         PR tree-optimization/41778
3490         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
3491         redundancy along a path in the CFG we want to optimize for speed
3492         is going to be removed.
3493         (execute_pre): Do partial-PRE only if the function is to be
3494         optimized for speed.
3495         (gate_pre): Do not turn off all of PRE when not optimizing a
3496         function for speed.
3497
3498 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3499
3500         * builtins.c (fold_builtin_cabs): Use validate_arg().
3501         (fold_builtin_cexp): Fix if-logic.
3502         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
3503
3504 2009-10-22  Jeff Law  <law@redhat.com>
3505
3506         * ira-lives.c (process_single_reg_class_operands): Update the
3507         hard reg costs for all the hard registers desired by the
3508         single reg class operand.
3509
3510 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
3511
3512         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
3513         for rtxes that aren't handled specially.
3514
3515 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
3516
3517         * rtl.h (shallow_copy_rtvec): Declare.
3518         * rtl.c (shallow_copy_rtvec): New function.
3519         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
3520         rtx field if the subrtx has changed.
3521
3522 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
3523
3524         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
3525         (m32c_function_value): Make static, add new 'outgoing' argument.
3526         (m32c_libcall_value): Make static, add new 'fun' argument.
3527         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3528         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3529         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
3530         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
3531         (m32c_function_value, m32c_libcall_value): Delete declaration.
3532
3533 2009-10-22  Diego Novillo  <dnovillo@google.com>
3534
3535         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
3536
3537 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
3538
3539         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
3540         space.
3541
3542 2009-10-22  Richard Guenther  <rguenther@suse.de>
3543
3544         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
3545         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
3546         (lto_symtab_merge): Do not merge cgraph nodes here.
3547         (lto_symtab_resolve_can_prevail_p): Simplify.
3548         (lto_symtab_resolve_symbols): Store cgraph node.
3549         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
3550         functions from the symtab.
3551         (lto_symtab_merge_cgraph_nodes_1): New function.
3552         (lto_symtab_merge_cgraph_nodes): Likewise.
3553
3554 2009-10-22  Richard Guenther  <rguenther@suse.de>
3555
3556         PR lto/41791
3557         * lto-streamer-out.c (lto_output_location): Stream the
3558         system header flag.
3559         * lto-streamer-in.c (lto_input_location): Likewise.
3560
3561 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
3562
3563         * cfgloopmanip.c (duplicate_subloops): Export.
3564         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
3565         (transform_to_exit_first_loop): Duplicate bbs starting from
3566         header up to loop->latch instead of exit->src.
3567         Initialize control variable to the correct number of iterations.
3568         (gather_scalar_reductions): Do not register double reductions.
3569         (parallelize_loops): Dump which loop is tested.
3570         Indicate whether the parallelized loop is inner or not.
3571         Remove the innermost-loop requirement.
3572         * cfgloop.h (duplicate_subloops): Export.
3573         * tree-cfg.c (add_phi_args_after_redirect): New function.
3574         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
3575         Call duplicate_subloops.
3576         Update number of iterations at the exit condition.
3577         Don't redirect nexits always to the loop exit.
3578         Redirect copied edges from latch to the loop exit.
3579
3580 2009-10-22  Jan Hubicka  <jh@suse.cz>
3581
3582         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
3583         flag_ltrans check.
3584         * ipa-inline.c (cgraph_mark_inline_edge,
3585         cgraph_decide_inlining_of_small_function,
3586         cgraph_decide_inlining, inline_read_summary): Disable indirect
3587         inlining for WPA for time being.
3588
3589         PR tree-optimize/40556
3590         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
3591
3592 2009-10-22  Richard Guenther  <rguenther@suse.de>
3593
3594         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
3595         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
3596
3597 2009-10-22  Jan Hubicka  <jh@suse.cz>
3598
3599         PR lto/41730
3600         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
3601         global vars.
3602         (check_call): Handle only indirect calls.
3603         (propagate_bits): Update comment.
3604         (write_node_summary_p): Turn bogus check to assert.
3605         (ipa_reference_write_summary): Stream calls_read_all properly.
3606         (ipa_reference_read_summary): Stream in calls_read_all properly.
3607         (read_write_all_from_decl): New function.
3608         (propagate): Handle OVERWRITABLE nodes and external calls here.
3609         * ipa-pre-const.c (check_call): In IPA mode handle indirect
3610         calls only.
3611         (analyze_function): Do not check visibility here.
3612         (add_new_function): We summary OVERWRITABLE too.
3613         (generate_summary): Stream OVERWRITABLE nodes too.
3614         (propagate): Handle external calls and OVERWRITABLE nodes here.
3615         (local_pure_const): Check visibility here.
3616
3617 2009-10-22  Jan Hubicka  <jh@suse.cz>
3618
3619         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
3620         (pass_ipa_cp): Register them.
3621         (ipcp_init_stage): Analyze all functions for whopr/lto.
3622         (ipcp_propagate_stage): Skip external calls.
3623         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
3624         * ipa-reference.c (write_node_summary_p): Fix thinko about
3625         availability.
3626         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
3627         when in ltrans, skip executing of ipa passes since everything
3628         should've been done.
3629         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
3630         (inline_generate_summary): Likewise.
3631         (inline_read_summary): New function.
3632         (inline_write_summary): New function.
3633         (pass_ipa_inline): Register new hooks.
3634         * ipa-prop.c: Inlcude lto-streamer.h
3635         (ipa_edge_args_vector): Update declaration.
3636         (ipa_count_arguments, ipa_compute_jump_functions,
3637         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
3638         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
3639         ipa_read_node_info): New static functions.
3640         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
3641         (duplicate_array): Use xmalloc.
3642         (duplicate_ggc_array): New.
3643         (ipa_edge_duplication_hook): Use it.
3644         (ipa_update_after_lto_read): New function.
3645         * ipa-prop.h (ipa_prop_write_jump_functions,
3646         ipa_prop_read_jump_functions): Declare.
3647         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
3648         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
3649         (ipa_edge_args_vector): Move into GGC.
3650         (ipa_check_create_edge_args): Update.
3651         (ipa_update_after_lto_read): New.
3652         * passes.c (ipa_write_summaries_1): When in wpa, do not write
3653         summaries.
3654         (ipa_read_summaries): When in ltrans, so not read summaries.
3655         * lto-streamer.c (lto_get_section_name): Add
3656         LTO_section_jump_functions.
3657         * lto-streamer.h (LTO_section_jump_functions): New section.
3658         (produce_asm): Declare.
3659         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
3660         * lto-streamer-out.c (produce_asm): Export.
3661         * lto-streamer-in.c: Include tree-pass.h
3662         (input_function): Free dominance info when done.
3663         (lto_read_body): Push ipa_inline in ltrans stage.
3664         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
3665         * Makefile.in (GTFILES): Add ipa-prop.h
3666
3667 2009-10-22  Matthias Klose  <doko@ubuntu.com>
3668
3669         * doc/install.texi: Document --enable-browser-plugin.
3670
3671 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
3672
3673         * doc/invoke.texi (fira-loop-pressure): Update default value.
3674         * opts.c (decode_options): Remove default value setting for
3675         flag_ira_loop_pressure.
3676         * config/ia64/ia64.c (ia64_override_options): Set
3677         flag_ira_loop_pressure up for -O3.
3678         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
3679
3680 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
3681
3682         PR tree-optimization/41497
3683         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
3684         chrec_dont_know if the evolution function returned by follow_ssa_edge
3685         is constant in the analyzed loop and is not compatible with the
3686         initial value before the loop.
3687         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
3688
3689 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
3690
3691         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
3692
3693 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
3694
3695         PR other/25507
3696         * doc/invoke.texi: Document -print-multi-os-directory.
3697
3698 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
3699
3700         PR c++/41313
3701         * gcc/config/darwin10.h: Use default_emit_unwind_label.
3702         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
3703         when darwin_emit_unwind_label is used.
3704
3705 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
3706
3707         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
3708         order of checks.
3709
3710 2009-10-20  Richard Henderson  <rth@redhat.com>
3711
3712         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
3713         before emit_post_landing_pad.
3714
3715 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
3716
3717         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
3718         Use when calling rtx_costs.
3719         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
3720         global optimize_size.  Pass speed to mips_binary_cost.
3721
3722 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
3723
3724         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
3725         of TREE_CONSTANT.
3726
3727 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
3728
3729         * rtl.h (simplify_replace_fn_rtx): Declare.
3730         (wrap_constant, unwrap_constant): Delete.
3731         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
3732         (expand_debug_expr): Don't call wrap_constant.
3733         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
3734         (auto_adjust_pair): Fold into...
3735         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
3736         Just return a new value.
3737         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
3738         otherwise use simplify_replace_rtx.
3739         * cselib.c (wrap_constant): Reinstate old definition.
3740         (cselib_expand_value_rtx_1): Don't wrap constants.
3741         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
3742         simplify_replace_rtx.
3743         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
3744         * reload1.c (reload): Skip all uses for an insn before adjusting it.
3745         Use simplify_replace_rtx.
3746         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
3747         adapted from...
3748         (simplify_replace_rtx): ...here.  Turn into a wrapper for
3749         simplify_replace_fn_rtx.
3750         (simplify_unary_operation): Don't unwrap CONSTs.
3751         * var-tracking.c (check_wrap_constant): Delete.
3752         (vt_expand_loc_callback): Don't call it.
3753         (vt_expand_loc): Likewise.
3754
3755 2009-10-20  Pascal Obry  <obry@adacore.com>
3756             Eric Botcazou  <ebotcazou@adacore.com>
3757
3758         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
3759
3760 2009-10-20  Michael Matz  <matz@suse.de>
3761
3762         * loop-invariant.c (create_new_invariant): Use different magic number.
3763
3764 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
3765
3766         PR target/39247
3767         * arm.c (arm_override_options): Forcibly disable hot/cold block
3768         partitioning.
3769
3770 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
3771
3772         PR debug/41739
3773         * haifa-sched.c (try_ready): Skip debug deps updating speculation
3774         status.
3775
3776 2009-10-20  Richard Guenther  <rguenther@suse.de>
3777
3778         * ggc-page.c: Include cfgloop.h.
3779         (struct max_alignment): Drop long double, add void *.
3780         (extra_order_size_table): Add low non-power-of-two multiples
3781         of MAX_ALIGNMENT.  Drop small type-based entries, add
3782         tree_type, cgraph_node and loop.
3783         * alloc-pool.c (struct allocation_object_def): Drop long double
3784         aligning element.
3785
3786 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
3787
3788         PR debug/41340
3789         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
3790         referenced just in DEBUG_INSNs.
3791
3792 2009-10-20  Richard Guenther  <rguenther@suse.de>
3793
3794         PR lto/41761
3795         * gimple.c (gimple_register_type): Make sure we register
3796         the types main variant first.
3797
3798 2009-10-20  Richard Guenther  <rguenther@suse.de>
3799
3800         * gimple.c (gimple_types_compatible_p): Simplify.  Move
3801         cheap checks before hashtable queries.  Add checks for
3802         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
3803
3804 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
3805
3806         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
3807         without size or with size that can't be represented as a host integer.
3808
3809 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
3810
3811         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
3812         the removal of a debug stmt as a significant change.
3813
3814 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
3815
3816         * config/s390/s390.md: Added agen condition to operand
3817         forwarding bypasses.  Added bypass for early address generation
3818         use of int results.  Updated comments.
3819
3820 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
3821
3822         * config/i386/i386.c: Remove signal.h #include.
3823
3824 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
3825
3826         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
3827         * doc/rtl.texi: Document ss_abs.
3828
3829 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3830
3831         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
3832         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
3833         instead of C_LEX_RAW_STRINGS.
3834         (lex_string): Handle CPP_UTF8STRING.
3835         * c-parser.c (c_parser_postfix_expression): Likewise.
3836         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
3837         (C_LEX_STRING_NO_JOIN): ... this.
3838
3839 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
3840
3841         * config/cris/cris.c (cris_function_value, cris_libcall_value,
3842         cris_function_value_regno_p): New functions.
3843         (cris_promote_function_mode): Update comment.
3844         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3845         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3846         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
3847         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
3848
3849 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3850
3851         * unwind-dw2.c (execute_stack_op): Fix operand order for
3852         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
3853
3854 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
3855
3856         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
3857         (lower_stmt) <GIMPLE_BIND>: Add comment.
3858         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
3859         and return.
3860         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
3861         Otherwise lower it and set cannot_fallthru to true.
3862         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
3863         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
3864         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
3865         to true for a noreturn call.  Do not remove statements.
3866         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
3867         Set cannot_fallthru to false on function exit.
3868         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
3869         <GIMPLE_ASSIGN>: Remove.
3870
3871 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3872
3873         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
3874
3875 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3876
3877         * config/s390/s390.c (s390_z10_optimize_cmp): Use
3878         next/prev_active_insn to skip DEBUG_INSNs as well.
3879
3880 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
3881
3882         * config/arm/arm.c (output_move_neon): Use DImode in call to
3883         adjust_address.
3884
3885 2009-10-19  Matthias Klose  <doko@ubuntu.com>
3886
3887         PR target/40134
3888         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
3889
3890 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3891
3892         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
3893
3894 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
3895
3896         PR middle-end/41738
3897         * optabs.c (expand_binop): Make mode of shift count expression mode
3898         of shift count not target.
3899         Remove indent nit.
3900
3901 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3902
3903         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
3904         case.  Force using values to replace references within the statement.
3905         (convert_local_reference_stmt): Likewise.
3906
3907 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3908
3909         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
3910         remove a subsequent GOTO or RETURN statement.
3911
3912 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
3913
3914         * config/avr.md (*movqi): Add zero as equally preferable constraint
3915         as general register.
3916         (*movhi): Ditto.
3917
3918 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3919
3920         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
3921
3922 2009-10-17  Richard Guenther  <rguenther@suse.de>
3923
3924         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
3925
3926 2009-10-17  Richard Guenther  <rguenther@suse.de>
3927
3928         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
3929         operands in COMPONENT_REFs.
3930
3931 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
3932
3933         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
3934         if not defined. Change type of second argument to const_rtx.
3935         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
3936         macro not defined.
3937         * targhooks.h (default_libcall_value): Update prototype.
3938         * target.h (struct gcc_target): Change type of second argument of
3939         libcall_value to const_rtx.
3940         * config/arm/arm.c (arm_libcall_value): Change type of second argument
3941         to const_rtx.
3942         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
3943         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
3944
3945 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
3946
3947         PR debug/40521
3948         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
3949         * cgraphunit.c (cgraph_optimize): Call it.
3950         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
3951         (dwarf2out_assembly_start): ... here.  New hook.
3952         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
3953         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
3954         hook.
3955         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
3956         * sdbout.c (sdb_debug_hooks): Likewise.
3957         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
3958         (vmsdbgout_assembly_start): New hook.
3959
3960 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3961
3962         * rtl.h (RTL_LOCATION): Fix typo.
3963
3964 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3965
3966         * print-rtl.c (print_rtx): Print locators in asm_operands
3967         and asm_input.
3968
3969 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3970
3971         PR debug/41535
3972         * sched-deps.c (depl_on_debug_p): New.
3973         (attach_dep_link): Reject debug deps before nondebug deps.
3974         (add_to_deps_list): Insert debug deps after nondebug deps.
3975         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
3976         deps.
3977         (sd_add_dep): Do not reject debug deps.
3978         (add_insn_mem_dependence): Don't count debug deps.
3979         (remove_from_deps): Likewise.
3980         (sched_analyze_2): Set up mem deps on debug insns.
3981         (sched_analyze_insn): Record reg uses for deps on debug insns.
3982         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
3983         try_ready nondebug insn after debug insn.
3984         * ddg.c (create_ddg_dep_from_intra_loop_link,
3985         create_ddg_dep_no_link): Don't reject debug deps.
3986
3987 2009-10-16  Richard Guenther  <rguenther@suse.de>
3988
3989         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
3990         (maybe_merge_incomplete_and_complete_type): Likewise.
3991         (lto_symtab_merge): Do not call them.  Do not warn for
3992         complete vs. incomplete compatible types.
3993         (lto_symtab_merge_decls_2): Simplify.
3994         * gimple.c (gimple_force_type_merge): Remove.
3995         (gimple_types_compatible_p): Make it static.
3996         * gimple.h (gimple_force_type_merge): Remove.
3997         (gimple_types_compatible_p): Likewise.
3998
3999 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
4000
4001         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
4002         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
4003
4004 2009-10-16  Richard Guenther  <rguenther@suse.de>
4005
4006         PR tree-optimization/41728
4007         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
4008         if fold_stmt did anything.
4009
4010 2009-10-16  Richard Guenther  <rguenther@suse.de>
4011
4012         PR lto/41715
4013         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
4014         (maybe_fixup_handled_component): New function.
4015         (input_gimple_stmt): Fixup mismatched decl replacements.
4016
4017 2009-10-16  Richard Guenther  <rguenther@suse.de>
4018
4019         PR lto/41713
4020         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
4021         the same as VAR_DECL.
4022
4023 2009-10-16  Richard Guenther  <rguenther@suse.de>
4024
4025         * gimple.c (iterative_hash_gimple_type): For integer types
4026         also hash their minimum and maximum values and the string flag.
4027         For array types hash their domain and the string flag.
4028
4029 2009-10-16  Richard Guenther  <rguenther@suse.de>
4030
4031         * gimple.c (gimple_types_compatible_p): Restrict completing
4032         types to record or unions.  Simplify completion.
4033         Do not merge records or unions with different
4034         TYPE_STRUCTURAL_EQUALITY_P tag.
4035         (iterative_hash_gimple_type): Restrict non-recursing into
4036         pointer targets for records and unions.
4037
4038 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4039
4040         PR debug/41717
4041         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
4042         * dwarf2out.c (mem_loc_descriptor): Don't handle
4043         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
4044         punt if it is not lowpart subreg or if inner mode isn't
4045         MODE_INT.
4046
4047 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4048
4049         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
4050         investigating previous or next insns.
4051
4052 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
4053
4054         * tree-sra.c (build_ref_for_offset_1): Update comment.
4055
4056 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
4057
4058         * config/s390/s390.md (atype): Added missing values.
4059
4060 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4061
4062         PR target/41702
4063         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
4064         (casesi64p): Update pattern to reflect above.
4065
4066 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
4067
4068         PR rtl-optimization/41697
4069         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
4070
4071 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
4072
4073         PR target/23983
4074         * config/rs6000/predicates.md: Update copyright year.
4075         * config/rs6000/altivec.md: Ditto.
4076
4077         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
4078         (MD_INCLUDES): Add a2.md.
4079
4080         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
4081         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
4082         (builtin_classify): New static vector to classify various builtins
4083         to get the tree attributes correct.
4084         (def_builtin): Set the attributes of builtins based on what the
4085         builtin does (i.e. memory operation, floating point, saturation
4086         need special attributes, others are pure functions).
4087
4088         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
4089         the builtins.
4090         (enum rs6000_builtins): Include rs6000-builtin.def to define the
4091         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
4092         RS6000_BUILTIN_COUNT.
4093         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
4094         MAX_RS6000_BUILTINS.
4095
4096         * config/rs6000/rs6000-builtin.def: New file that combines the
4097         builtin enumeration name and attributes.
4098
4099 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
4100
4101         * config/i386/linux.h (ASM_SPEC): Add --32.
4102
4103 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4104
4105         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
4106         and DW_TAG_template_alias.
4107         (dwarf_attr_name): Handle DW_AT_main_subprogram,
4108         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
4109         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
4110         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
4111         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
4112         and DW_AT_GNU_odr_signature.
4113         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
4114         DW_FORM_flag_present and DW_FORM_ref_sig8.
4115         (output_signature): Only print name on the first byte.
4116         (output_die): Likewise for dw_val_class_data8.
4117
4118 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
4119
4120         * doc/invoke.texi: Clarify that most optimizations are not enabled
4121         without -O.
4122
4123 2009-10-15  Richard Guenther  <rguenther@suse.de>
4124
4125         PR lto/41668
4126         * gimple.c (compare_type_names_p): Handle anonymous names
4127         differently based on new mode argument.
4128         (gimple_types_compatible_p): For structs also compare the tags.
4129         (iterative_hash_type_name): Rename to ...
4130         (iterative_hash_name): ... this.  Hash all names.
4131         (iterative_hash_gimple_type): Fix hashing the struct tag of
4132         pointer targets.  Hash field decl names.
4133
4134 2009-10-15  Richard Guenther  <rguenther@suse.de>
4135
4136         PR lto/41669
4137         * gimple.c (gimple_get_alias_set): Avoid recursing on
4138         invalid type topology.
4139
4140 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4141
4142         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
4143
4144 2009-10-15  Richard Guenther  <rguenther@suse.de>
4145
4146         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
4147
4148 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4149
4150         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
4151         add --with-tune{,-32,-64} configured default for -mtune if explicit
4152         -mcpu is used.
4153
4154 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
4155
4156         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
4157
4158 2009-10-14  DJ Delorie  <dj@redhat.com>
4159
4160         * config/h8300/h8300.c (F): New.
4161         (Fpa): New.
4162         (h8300_emit_stack_adjustment): Call them.
4163         (push): Likewise.
4164         (h8300_push_pop): Likewise.
4165         (h8300_expand_prologue): Likewise.
4166         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
4167         (MUST_USE_SJLJ_EXCEPTIONS): Define.
4168         (INCOMING_RETURN_ADDR_RTX): Define.
4169         (INCOMING_FRAME_SP_OFFSET): Define.
4170         (DWARF_CIE_DATA_ALIGNMENT): Define.
4171
4172 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4173
4174         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
4175         fields in builtin structs.
4176         (finalize_record_size): Likewise.
4177
4178 2009-10-14  Richard Guenther  <rguenther@suse.de>
4179
4180         * gimple.c (gtc_ob): New global.
4181         (struct type_pair_d): Replace pointers with type UIDs.
4182         (type_pair_hash): Adjust.
4183         (type_pair_eq): Likewise.
4184         (lookup_type_pair): Likewise.  Allocate from an obstack.
4185         (gimple_force_type_merge): Adjust.
4186         (gimple_types_compatible_p): Likewise.
4187         (free_gimple_type_tables): Free the obstack.
4188
4189 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4190
4191         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
4192         stmts setting DEBUG_EXPR_DECLs.
4193
4194         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
4195         Don't crash if mode1 is VOIDmode.
4196
4197 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
4198
4199         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
4200         * params.h (IRA_LOOP_RESERVED_REGS): New.
4201         * tree-pass.h (pass_subregs_of_mode_init,
4202         pass_subregs_of_mode_finish): Remove.
4203         * passes.c (pass_subregs_of_mode_init,
4204         pass_subregs_of_mode_finish): Remove.
4205         (pass_reginfo_init): Move before loop optimizations.
4206         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
4207         * common.opt (fira-loop-pressure): New.
4208         * toplev.h (flag_ira_loop_pressure): New.
4209         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
4210         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
4211         Make external and void type functions.
4212         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
4213         pass_subregs_of_mode_finish): Remove.
4214         * ira-costs.c (init_costs): Call init_subregs_of_mode.
4215         * regmove.c: Include ira.h.
4216         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
4217         register pressure calculation in loops.
4218         * loop-invariant.c: Include REGS_H and ira.h.
4219         (struct loop_data): New members max_reg_pressure, regs_ref, and
4220         regs_live.
4221         (struct invariant): New member orig_regno.
4222         (curr_loop): New variable.
4223         (find_exits): Initialize regs_ref and regs_live.
4224         (create_new_invariant): Initialize orig_regno.
4225         (get_cover_class_and_nregs): New.
4226         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
4227         array.  Add code for flag_ira_loop_pressure.
4228         (gain_for_invariant): Make new_regs an array.  Add code for
4229         flag_ira_loop_pressure.
4230         (best_gain_for_invariant): Ditto.
4231         (set_move_mark): New parameter gain.  Use it for debugging output.
4232         (find_invariants_to_move): Make regs_needed and new_regs an array.
4233         Add code for flag_ira_loop_pressure.
4234         (move_invariant_reg): Set up orig_regno.
4235         (move_invariants): Set up reg classes for pseudos for
4236         flag_ira_loop_pressure.
4237         (free_loop_data): Clear regs_ref and regs_live.
4238         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
4239         get_regno_cover_class, change_pressure, mark_regno_live,
4240         mark_regno_death, mark_reg_store, mark_reg_clobber,
4241         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
4242         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
4243         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
4244         register pressure calculation in loops if new regs were added.
4245         Call finish_subregs_of_mode.
4246         * opts.c (decode_options): Set up flag_ira_loop_pressure.
4247         * Makefile.in (loop-invariant.o): Add ira.h.
4248         (regmove.o): Ditto.
4249         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
4250         Describe.
4251         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
4252
4253 2009-10-14  Richard Guenther  <rguenther@suse.de>
4254
4255         * lto-symtab.c (lto_symtab_compatible): Fold in ...
4256         (lto_symtab_merge): ... here.  Rewrite both to take the
4257         prevailing and a to-be-merged entry and to queue diagnostics properly.
4258         (lto_symtab_resolve_replaceable_p): New predicate for
4259         symbol resolution.
4260         (lto_symtab_resolve_can_prevail_p): Likewise.
4261         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
4262         handles merging commons by choosing the largest decl.  Fold
4263         in code that gives ODR errors.
4264         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
4265         diagnostics here.
4266         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
4267         case of no prevailing decl here.  Diagnose mismatches
4268         in object types here.  Drop all but the prevailing decls.
4269         (lto_symtab_prevailing_decl): Return the single prevailing decl.
4270         * lto-streamer-in.c (lto_input_tree_ref): Deal with
4271         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
4272
4273 2009-10-14  Richard Guenther  <rguenther@suse.de>
4274
4275         PR lto/41521
4276         * lto-streamer-in.c (input_bb): Replace debug stmts with
4277         nops instead of dropping them.
4278
4279 2009-10-14  Nick Clifton  <nickc@redhat.com>
4280
4281         * gcc/doc/extended.texi: Replace the dash character with @minus{}
4282         in situations where it is being used as a minus symbol.
4283         * gcc/doc/tm.texi: Likewise.
4284         * gcc/doc/md.texi: Likewise.
4285
4286 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4287
4288         PR preprocessor/41543
4289         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
4290         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
4291         * tree.c: Include intl.h.
4292         (expand_location): Handle BUILTINS_LOCATION.
4293         * Makefile.in (tree.o): Depend on intl.h.
4294
4295         PR debug/41695
4296         * dwarf2out.c (dwarf2out_var_location): Always clear
4297         last_postcall_label when changing last_label.
4298
4299 2009-10-14  Pascal Obry  <obry@adacore.com>
4300
4301         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
4302         (process_command): Handle -E as done with -c and -S.  Do not add
4303         the target executable suffix to the output file when -E is used.
4304         (main): Adjust error message accordingly.
4305
4306 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
4307
4308         PR debug/41343
4309         PR debug/41447
4310         PR debug/41264
4311         PR debug/41338
4312         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
4313         decl with rtl.
4314         (tree_code_size): Likewise.
4315
4316 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4317
4318         * builtins.c (fold_builtin_1): Support complex "arc" functions.
4319         * real.h (HAVE_mpc_arc): Define.
4320
4321 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
4322
4323         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
4324         (struct builtin_description): Add fndecl field.
4325         (bdesc): Remove const qualifier.  Update initializer.
4326         (sh_media_init_builtins): Remove const qualifier for d.  Record
4327         the result of add_builtin_function to the fndecl field.
4328         (sh_builtin_decl): New.
4329         (sh_media_builtin_decl): New.
4330
4331 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
4332
4333         PR target/38948
4334         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
4335         requests between special registers.
4336
4337 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
4338
4339         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
4340
4341 2009-10-13  Richard Henderson  <rth@redhat.com>
4342
4343         PR tree-optimization/41377
4344         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
4345         (cleanup_empty_eh_merge_phis): New change_region parameter;
4346         pass it on to redirect_eh_edge_1.  Update callers.
4347         (cleanup_empty_eh_unsplit): Don't require an existing EH label
4348         at the destination block.
4349
4350 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
4351
4352         * passes.c (register_pass): Replaced gcc_unreachable by
4353         fatal_error on failure. Mentions plugins in comments & messages.
4354
4355 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
4356
4357         PR target/41693
4358         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
4359         * sched-vis.c (print_value): Use it.
4360         * cselib.c (cselib_hash_rtx): Likewise.
4361         * print-rtl.c (print_rtx): Likewise.
4362         * cfgexpand.c (expand_debug_rtx): Likewise.
4363         * var-tracking.c (vt_expand_loc_callback): Likewise.
4364
4365 2009-10-13  Richard Guenther  <rguenther@suse.de>
4366
4367         PR lto/41565
4368         * opts.c (handle_option): Split out code to handle setting
4369         the options flag var ...
4370         (set_option): ... here.
4371         * opts.h (set_option): Declare.
4372         * lto-opts.c (register_user_option_p): Include -fexceptions
4373         and all position independent code variants.
4374         (handle_common_option): Remove.
4375         (lto_reissue_options): Use set_option.
4376
4377 2009-10-13  Martin Jambor  <mjambor@suse.cz>
4378
4379         PR tree-optimization/41661
4380         * ipa-prop.c (compute_complex_pass_through): Allow only operations
4381         that are tcc_comparisons or do not change the type in any
4382         un-usleless way.
4383         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
4384         folding tcc_comparison operations.
4385
4386 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4387
4388         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
4389         properly.
4390
4391 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
4392
4393         PR debug/41343
4394         PR debug/41447
4395         PR debug/41264
4396         PR debug/41338
4397         * tree.def (DEBUG_EXPR_DECL): New.
4398         * rtl.def (DEBUG_EXPR): New.
4399         * gengtype.c (adjust_field_rtx_def): Handle it.
4400         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
4401         (insert_debug_temp_for_var_def): ... this.  Drop support for
4402         moving.  Take iterator for def stmt; insert debug stmt before it.
4403         Scan early for use count and kind in debug stmts.
4404         (propagate_defs_into_debug_stmts): Rename to...
4405         (insert_debug_temps_for_defs): ... this.  Likewise.
4406         * tree.h (DEBUG_TEMP_UID): New.
4407         * tree.c (next_debug_decl_uid): New.
4408         (make_node_stat): Count debug decls separately.
4409         (copy_node_stat): Likewise.
4410         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
4411         * var-tracking.c (dv_is_decl_p): Recognize it.
4412         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
4413         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
4414         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
4415         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
4416         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
4417         (cselib_hash_rtx): Likewise.
4418         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
4419         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
4420         debug bind stmts.
4421         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
4422         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
4423         * rtl.c (copy_rtx): Likewise.
4424         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
4425         * print-rtl.c (print_rtx): Likewise.
4426         * sched-vis.c (print_value): Likewise.
4427         (print_insn): Handle DEBUG_EXPR_DECL.
4428         * tree-dump.c (dequeue_and_dump): Likewise.
4429         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
4430         * gimple-iterator (gsi_replace): Check for same lhs.
4431         (gsi_remove): Insert debug temps.
4432         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
4433         (move_computations_stmt): Drop explicit propagation into debug stmts.
4434         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
4435         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
4436         * tree-ssa-sink.c (statement_sink_location): Likewise.
4437         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
4438         * tree-ssanames.c (release_ssa_name): Adjust for rename.
4439         * tree-flow.h: Likewise.
4440         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
4441         debug temps without values.
4442         (eliminate_unnecessary_stmts): Don't discard just-inserted
4443         debug stmts.
4444
4445 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
4446
4447         PR target/26515
4448         * config/cris/cris.md (andu): Check that operand 1 is one of the
4449         general registers.  Fix typo in head comment.
4450
4451 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
4452
4453         * config/i386/i386.md (vswapmov): New.
4454         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
4455         (ix86_function_ms_hook_prologue): New.
4456         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
4457         * configure.ac: Test for swap suffix support in as.
4458         * configure: Rebuild.
4459
4460 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
4461
4462         PR target/41680
4463         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
4464         paradoxical subregs to prevent partial register stalls if the inner
4465         mode is integer mode.
4466
4467 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
4468
4469         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
4470
4471 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
4472
4473         PR c++/41570
4474         * gcc/dwarf2out.c (template_parameter_pack_die,
4475         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
4476
4477 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
4478
4479         PR debug/41616
4480         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
4481         on updates too.
4482         (maybe_register_def): Likewise.  Take stmt iterator.
4483         (rewrite_update_stmt): Take stmt iterator and pass it on.
4484         (rewrite_update_enter_block): Pass stmt iterator.
4485
4486 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4487
4488         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
4489         (spu_builtin_decl): New function.
4490
4491 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
4492
4493         * config/i386/i386.md (SWIM): New mode iterator.
4494         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
4495         using SWIM mode iterator.
4496         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
4497         patterns using SWI48 mode iterator.
4498         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
4499         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
4500         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
4501         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
4502         patterns using SWI248 mode iterator.
4503         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
4504         gen_x86_movdicc_0_m1_rex64 for renamed function
4505
4506 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
4507             Eric Botcazou  <ebotcazou@adacore.com>
4508
4509         PR target/33743
4510         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
4511         * config/sparc/sol2-unwind.h: New file.
4512
4513 2009-10-11  Olivier Hainque  <hainque@adacore.com>
4514             Eric Botcazou  <ebotcazou@adacore.com>
4515
4516         PR target/33743
4517         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
4518         * config/i386/sol2-unwind.h: New file.
4519
4520 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
4521
4522         PR target/41665
4523         * config/i386/i386.md (addsi_1_zext): Get the proper second
4524         operand for lea.
4525
4526 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
4527
4528         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
4529         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
4530         replacement value.
4531
4532 2009-10-11  Richard Guenther  <rguenther@suse.de>
4533
4534         * gimple.c (iterative_hash_type_name): Do not handle special
4535         anonymous names.
4536
4537 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
4538
4539         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
4540         (*setcc_si_1_and): Ditto.
4541         (*setcc_si_1_movzbl): Ditto.
4542         (*setcc_<mode>_2): Ditto.
4543         (*setcc_qi): Rename from *setcc_1.
4544         (*setcc_qi_slp): Rename from *setcc_2.
4545
4546         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
4547         (*zero_extendqisi2_movzbw_and splitter): Ditto.
4548
4549         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
4550         "if" condition, there is already assert with reload_completed present.
4551
4552 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
4553
4554         * plugin.c (try_init_one_plugin): Improve constness of variable err.
4555
4556 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
4557
4558         * doc/install.texi (Final install): Refer to
4559         http://gcc.gnu.org/bugs/ for bug reporting.
4560
4561 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
4562
4563         * configure.ac: Add test for dci instruction.
4564         * configure: Regenerate.
4565         * config.in: Likewise.
4566         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
4567         * doc/invoke.texi: Add cpu_type 476 and 476fp.
4568         (-mmulhw): Add 476 to description.
4569         (-mdlmzb): Likewise.
4570         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
4571         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
4572         (processor_target_table): Add 476 and 476fp entries.
4573         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
4574         (rs6000_issue_rate): Add CPU_PPC476.
4575         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
4576         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
4577         (processor_type): Add PROCESSOR_PPC476.
4578         (EXTRA_SPECS): Add asm_cpu_476 string.
4579         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
4580         (define_attr "cpu"): Add ppc476.
4581         Include 476.md.
4582         Update comments for 476.
4583         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
4584         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
4585         Update copyright year.
4586         * config/rs6000/476.md: New file.
4587         * config/rs6000/40x.md: Add description for "isel" attribute.
4588         Update copyright year.
4589         * config/rs6000/440.md: Likewise.
4590         * config/rs6000/603.md: Likewise.
4591         * config/rs6000/6xx.md: Likewise.
4592         * config/rs6000/7450.md: Likewise.
4593         * config/rs6000/7xx.md: Likewise.
4594         * config/rs6000/8540.md: Likewise.
4595         * config/rs6000/cell.md: Likewise.
4596         * config/rs6000/e300c2c3.md: Likewise.
4597         * config/rs6000/e500mc.md: Likewise.
4598         * config/rs6000/mpc.md: Likewise.
4599         * config/rs6000/power4.md: Likewise.
4600         * config/rs6000/power5.md: Likewise.
4601         * config/rs6000/power6.md: Likewise.
4602         * config/rs6000/power7.md: Likewise.
4603         * config/rs6000/rios1.md: Likewise.
4604         * config/rs6000/rios2.md: Likewise.
4605         * config/rs6000/rs64.md: Likewise.
4606
4607 2009-10-10  Richard Guenther  <rguenther@suse.de>
4608
4609         PR tree-optimization/41654
4610         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
4611         a cond expr before calling gimple_cond_set_condition_from_tree.
4612         (ifcombine_iforif): Likewise.
4613
4614 2009-10-09  Ian Lance Taylor  <iant@google.com>
4615
4616         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
4617         * configure: Rebuild.
4618
4619 2009-10-09  Neil Vachharajani <nvachhar@google.com>
4620
4621         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
4622         deprecated.
4623
4624 2009-10-09  Richard Guenther  <rguenther@suse.de>
4625
4626         PR lto/41638
4627         * target-def.h (TARGET_BUILTIN_DECL): Define.
4628         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
4629         * target.h (struct gcc_target): Add builtin_decl target hook.
4630         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
4631         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
4632         target builtins.
4633         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
4634         not gcc_unreachable.
4635         (lto_output_builtin_tree): Sorry if the target does not support
4636         streaming target builtins.
4637         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
4638         (rs6000_builtin_decl): New function.
4639         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
4640         (ix86_builtin_decl): New function.
4641
4642 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
4643
4644         PR preprocessor/41445
4645         * c-ppoutput.c (do_line_change): New function.
4646         (cb_line_change): Use it.
4647         (scan_translation_unit): Call do_line_change if
4648         avoid_paste or PREV_WHITE and token location is on a different line
4649         than print.src_line.
4650
4651         PR debug/40521
4652         * dwarf2out.c (dwarf2out_init): Test whether
4653         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
4654         it is defined.
4655
4656         PR rtl-optimization/41646
4657         * calls.c (expand_call): For BLKmode types returned in registers
4658         avoid likely spilled hard regs in copy_blkmode_from_reg generated
4659         insns.
4660
4661 2009-10-09  Richard Guenther  <rguenther@suse.de>
4662
4663         PR tree-optimization/41634
4664         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
4665         we remove the correct elements.
4666         (optimize_stmt): Make sure to update stmt operands before
4667         optimizing redundancies.
4668
4669 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4670
4671         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
4672
4673 2009-10-09  Richard Guenther  <rguenther@suse.de>
4674
4675         PR driver/41637
4676         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
4677         globals.
4678         (lto_wrapper_exit): New function.
4679         (fatal): Use it.
4680         (fatal_perror): Likewise.
4681         (fork_execute): Use global args_name, do not free it.
4682         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
4683         * lto-streamer.h: Remove duplicate prototypes.
4684
4685 2009-10-09  Richard Guenther  <rguenther@suse.de>
4686
4687         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
4688         before calling stmt_can_throw_external.
4689
4690 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
4691
4692         PR tree-optimization/40071
4693         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
4694         pointer if the original data reference doesn't conflict with the
4695         created vector data reference.  Fix long line.
4696
4697 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
4698
4699         * config/i386/i386.md (any_div): New code iterator.
4700         (u): Handle div and udiv.
4701         (sgnprefix): Ditto.
4702         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
4703         code iterator.
4704         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
4705         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
4706         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
4707         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
4708
4709 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
4710
4711         * gcc.c (main): Remove trailing "." from diagnostics.
4712
4713 2009-10-08  Cary Coutant  <ccoutant@google.com>
4714
4715         Add support for debugging with ICF (Identical Code Folding).
4716         * calls.c (debug.h): New #include.
4717         (emit_call_1): Call virtual_call_token debug hook.
4718         * common.opt (-fenable-icf-debug): New option.
4719         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
4720         locations in the source).
4721         (poc_label_num): New variable.
4722         (dcall_entry, vcall_entry): New typedefs.
4723         (dcall_table, vcall_table): New variables.
4724         (struct vcall_insn): New type.
4725         (vcall_insn_table): New variable.
4726         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
4727         (size_of_dcall_table): New function.
4728         (output_dcall_table): New function.
4729         (size_of_vcall_table): New function.
4730         (output_vcall_table): New function.
4731         (dwarf2out_direct_call): New function.
4732         (vcall_insn_table_hash): New function.
4733         (vcall_insn_table_eq): New function.
4734         (dwarf2out_virtual_call_token): New function.
4735         (dwarf2out_virtual_call): New function.
4736         (dwarf2out_init): Allocate new tables and sections.
4737         (prune_unused_types): Mark DIEs referenced from direct call table.
4738         (dwarf2out_finish): Output direct and virtual call tables.
4739         * final.c (final_scan_insn): Call direct_call and virtual_call
4740         debug hooks.
4741         * debug.h (struct gcc_debug_hooks): Add direct_call,
4742         virtual_call_token, virtual_call hooks.
4743         (debug_nothing_uid): New function.
4744         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
4745         (debug_nothing_uid): New function.
4746         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
4747         (xcoff_debug_hooks): Likewise.
4748         * sdbout.c (sdb_debug_hooks): Likewise.
4749         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
4750         * doc/invoke.texi (-fenable-icf-debug): New option.
4751
4752 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
4753
4754         PR debug/41353
4755         * regmove.c (regmove_backward_pass): Replace src with dst in the
4756         debug insn, and check for dst before rather than after.
4757
4758 2009-10-08  Janis Johnson <janis187@us.ibm.com>
4759
4760         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
4761         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
4762
4763 2009-10-08  Jan Hubicka  <jh@suse.cz>
4764
4765         PR middle-end/41626
4766         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
4767         do not mark cgraph nodes as needed.
4768         (record_references_in_initializer): Add new only_vars parameter.
4769         * cgraph.h (record_references_in_initializer): New parameter.
4770         * varasm.c (assemble_variable): Update call.
4771         * varpool.c (varpool_analyze_pending_decls): Always look for
4772         referenced vars.
4773
4774 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
4775
4776         * config/avr/avr.c (last_insn_address) Remove variable.
4777         (expand_prologue): Don't initialise last_insn_address variable.
4778         (final_prescan_insn): Don't output insn size.
4779         * config/avr/avr.opt (msize): Remove switch.
4780         * doc/invoke.texi (AVR Options): Remove documentation of -msize
4781         switch.
4782
4783 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
4784
4785         * combine.c (label_tick_ebb_start): Fix comment.
4786         (combine_instructions): Set label_tick and label_tick_ebb_start before
4787         calling setup_incoming_promotions.  Start them from 1.  Increment
4788         label_tick instead of deriving it from the BB index.  Rather than
4789         comparing ticks use the block from the previous iteration to decide
4790         whether to start a new EBB.  Remove empty lines before function.
4791
4792 2009-10-08  Michael Matz  <matz@suse.de>
4793
4794         PR middle-end/41573
4795         * builtins.c (fold_builtin_isascii): Use fold_build2.
4796         (fold_builtin_isdigit): Ditto.
4797         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
4798         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
4799         remove_useless_stmts_cond, remove_useless_stmts_tf,
4800         remove_useless_stmts_tc, remove_useless_stmts_bind,
4801         remove_useless_stmts_goto, remove_useless_stmts_label,
4802         remove_useless_stmts_1, remove_useless_stmts,
4803         pass_remove_useless_stmts): Remove.
4804         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
4805         * passes.c (init_optimization_passes): Don't add
4806         pass_remove_useless_stmts.
4807         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
4808         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
4809         static constants.
4810         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
4811         for static constants.
4812         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
4813         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
4814
4815 2009-10-08  Richard Guenther  <rguenther@suse.de>
4816
4817         * gimple.c (free_gimple_type_tables): New function.
4818         * gimple.h (free_gimple_type_tables): Declare.
4819
4820 2009-10-07  Mark Heffernan  <meheff@google.com>
4821
4822         * ipa-prop.c (ipa_print_node_params) Only print
4823         names of named arguments.
4824
4825 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
4826
4827         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
4828         being statically linked.
4829
4830 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4831
4832         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
4833
4834 2009-10-08  Jan Hubicka  <jh@suse.cz>
4835
4836         PR bootstrap/41620
4837         * ipa.c (cgraph_externally_visible_p,
4838         function_and_variable_visibility,
4839         whole_program_function_and_variable_visibility): Skip non-finalized
4840         nodes.
4841
4842 2009-10-08  Nick Clifton  <nickc@redhat.com>
4843
4844         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
4845         CONST_DOUBLEs.
4846
4847 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
4848
4849         PR bootstrap/37739
4850         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
4851
4852 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
4853
4854         PR c/41182
4855         * c-common.c (c_fully_fold_internal): Strip nops from the result
4856         of recursive calls to c_fully_fold_internal.
4857         (c_wrap_maybe_const): New.
4858         (c_save_expr): Use c_wrap_maybe_const.
4859         * c-common.h (c_wrap_maybe_const): Declare.
4860         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
4861         build_binary_op): Use c_wrap_maybe_const.
4862
4863 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4864
4865         * real.c: Fix comment to reflect actual exponent size.
4866
4867 2009-10-08  Ben Elliston  <bje@au.ibm.com>
4868
4869         * config/rs6000/a2.md: Add FSF comment header.
4870
4871 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
4872
4873         * config/i386/i386.md (any_extend): New code iterator.
4874         (u, s): New code attributes.
4875         (sgnprefix): Ditto.
4876         (DWIH): Rewrite as code iterator for SI and DI modes.
4877         (DWI): Rewrite as mode attribute.
4878         (dwi): New mode attribute.
4879         (di): Depend on SI mode and DI mode.
4880         (doubleint_general_operand): Remove mode attribute.
4881
4882         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
4883         DWIH mode iterator.
4884
4885         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
4886         (*sub<mode>3_doubleword): Ditto.
4887
4888         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
4889         using SWIM248 mode iterator.
4890         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
4891         using SWI48 mode iterator.
4892         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
4893         patterns using DWIH mode iterator and any_extend code iterator.
4894         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
4895         using any_extend code iterator.
4896         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
4897         patterns using DWIH mode iterator and any_extend code iterator.
4898         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
4899         using any_extend code iterator.
4900         (<s>mul<mode>3_highpart): Macroize expander from
4901         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
4902         and any_extend code iterator.
4903         (*<s>muldi3_highpart_1): Macroize insn from
4904         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
4905         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
4906         patterns using any_extend code iterator.
4907         (*<s>mulsi3_highpart_zext): Macroize insn from
4908         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
4909
4910 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
4911
4912         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
4913         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
4914         refering to a DIE with DW_AT_const_value.
4915
4916 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
4917
4918         PR middle-end/22072
4919         * ira-lives.c (check_and_make_def_conflict): Process all operands.
4920
4921 2009-10-06  Jan Hubicka  <jh@suse.cz>
4922
4923         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
4924         correctly.
4925
4926 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4927
4928         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
4929         *lea_2_rex64): Move before *add<mode>_1 pattern.
4930
4931 2009-10-07  Jan Hubicka  <jh@suse.cz>
4932
4933         * collect2.c (main): Add -fno-whole-program.
4934         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
4935
4936 2009-10-07  Jan Hubicka  <jh@suse.cz>
4937
4938         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
4939         has no address taken.
4940         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
4941         never needed.
4942         (cgraph_clone_node): Clear externally_visible flag for clones.
4943         * cgraph.h (cgraph_only_called_directly_p,
4944         cgraph_can_remove_if_no_direct_calls_p): New predicates.
4945         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
4946         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
4947         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
4948         ipcp_insert_stage): Likwise.
4949         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
4950         externally_visible flag.
4951         (verify_cgraph_node): Verify that inline clones look right.
4952         (process_function_and_variable_attributes): Do not set
4953         externally_visible flags.
4954         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
4955         been already run.
4956         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
4957         boundaries.
4958         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
4959         clear externally_visible when turning into inline clones
4960         (cgraph_mark_inline_edge): Use new predicates.
4961         (cgraph_estimate_growth): Likewise.
4962         (cgraph_decide_inlining): Likewise.
4963         * ipa.c (cgraph_postorder): Likewise.
4964         (cgraph_remove_unreachable_nodes): Likewise; sanity check
4965         that inline clones are not needed.
4966         (cgraph_externally_visible_p): New predicate.
4967         (function_and_variable_visibility): Add whole_program parameter;
4968         always set externally_visible flag; handle COMDAT function
4969         privatization.
4970         (local_function_and_variable_visibility): New function.
4971         (gate_whole_program_function_and_variable_visibility): New function.
4972         (whole_program_function_and_variable_visibility): New function.
4973         (pass_ipa_whole_program_visibility): New function.
4974         * passes.c  (init_optimization_passes): Add whole program visibility
4975         pass.
4976         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
4977         not care about needed/reachable flags.
4978         * varpool.c: Include flags.h
4979         (decide_is_variable_needed): When doing LTO assume whole-program mode.
4980         (varpool_finalize_decl): When we are in LTO read-back, all variables
4981         are analyzed.
4982         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
4983
4984 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4985
4986         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
4987         add MASK_HARD_DFP.
4988
4989 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4990
4991         * config.gcc: Don't include the makefile fragments intended for
4992         libgcc.
4993         * config/s390/fixdfdi.h: File removed.
4994         * config/s390/libgcc-glibc.ver: File removed.
4995         * config/s390/s390.h: Remove the fixdfdi.h hack.
4996         * config/s390/t-crtstuff: File moved to libgcc dir.
4997         * config/s390/t-linux: Likewise.
4998         * config/s390/t-tpf: libgcc specific parts removed.
4999         * config/s390/t-linux64: Likewise.
5000
5001 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
5002
5003         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
5004         (lto-compress.o): Likewise.
5005
5006 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
5007
5008         PR target/41512
5009         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
5010         dllexport to class members here.
5011         (i386_pe_determine_dllimport_p): Only check static class data for
5012         definition.
5013         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
5014         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
5015         functions for vague linkage.
5016         (i386_pe_type_dllexport_p): Fix formatting.
5017         (maybe_add_dllexport) New function.
5018         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
5019         to class members.
5020
5021 2009-10-07  Ben Elliston  <bje@au.ibm.com>
5022
5023         * config/rs6000/a2.md: Remove duplicated lines.
5024
5025 2009-10-07  Ben Elliston  <bje@au.ibm.com>
5026
5027         * config.gcc (powerpc*-*-*): Handle a2.
5028         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
5029         * config/rs6000/a2.md: New file.
5030         * config/rs6000/rs6000.opt (mno-update): New.
5031         (mupdate): Return to using a mask, not a var.
5032         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
5033         (enum processor_type): Add PROCESSOR_PPCA2.
5034         * config/rs6000/rs6000.c (ppca2_cost): New costs.
5035         (rs6000_override_options): Add "a2" to processor_target_table.
5036         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
5037         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
5038
5039 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5040
5041         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
5042         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
5043         reference to nonexistent gen_truncxfxf2 function.
5044
5045 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5046
5047         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
5048         (DWIH, g, di, doubleint_general_operand): New mode attributes.
5049         (general_operand): Handle TI mode.
5050         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
5051         using SDWIM mode iterator.
5052         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
5053         pattern from *add{di,ti}3_1 patterns and corresponding splitters
5054         using DWI mode iterator.
5055         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
5056         patterns using SWI mode iterator.
5057         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
5058         using SWI48 mode iterator.
5059         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
5060         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
5061         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
5062         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
5063         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
5064         using SDWIM mode iterator.
5065         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
5066         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
5067         using DWI mode iterator.
5068         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
5069         patterns using SWI mode iterator.
5070         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
5071         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
5072         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
5073         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
5074         patterns using plusminus code iterator.
5075         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
5076         sub<mode>3 patterns using plusminus code iterator.
5077         * config/i386/i386.c (override_options): Update the call to
5078         gen_subdi_carry_rex64 for renamed function.
5079         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
5080         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
5081         calls to instruction expanders.
5082
5083 2009-10-06  Martin Jambor  <mjambor@suse.cz>
5084
5085         PR bootstrap/41395
5086         * opts.c (decode_options): Run IPA-SRA at -O2.
5087
5088 2009-10-06  Richard Guenther  <rguenther@suse.de>
5089
5090         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
5091
5092 2009-10-06  Tobias Burnus  <burnus@net-b.de>
5093
5094         PR lto/41591
5095         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
5096         -flto and -fwhole-program flags can be combined.
5097
5098 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
5099
5100         PR driver/41217
5101         * gcc.c (process_command): Check that -o argument was specified.
5102
5103 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
5104
5105         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
5106
5107 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5108
5109         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
5110         * doc/invoke.texi (Warning Options): Annotate allowed languages
5111         for -Wunsuffixed-float-constants.
5112
5113 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
5114
5115         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
5116         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
5117         same name and isn't the main variant.
5118
5119         PR debug/41558
5120         * dwarf2out.c (loc_by_reference): Removed.
5121         (dw_loc_list_1): New function.
5122         (dw_loc_list): Remove toplev argument, add want_address argument.
5123         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
5124         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
5125         want_address == 2 to dw_loc_list.  For successful dw_loc_list
5126         set have_address to 1 only if want_address is not 0.
5127
5128 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
5129
5130         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
5131         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
5132         a code block followed by two pointers.
5133         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
5134         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
5135         (MIPS_MOVE): Likewise.
5136         (MIPS_LUI): Likewise.
5137         (MIPS_JR): Likewise.
5138         (MIPS_BAL): Likewise.
5139         (MIPS_NOP): Likewise.
5140         (mips_asm_trampoline_template): Delete.
5141         (mips_trampoline_code_size): New function.
5142         (mips_trampoline_init): Add shorter sequences for all cases
5143         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
5144         Calculate the opcodes directly, rather than copying from a template.
5145         Only flush the code part of the trampoline.
5146         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
5147
5148 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
5149
5150         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
5151         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
5152         (INCOMING_RETURN_ADDR_RTX): Likewise.
5153         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
5154         with AT_REGNUM.
5155         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
5156         with RETURN_ADDR_REGNUM.
5157         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
5158         * config/mips/mips.c (mips16_build_call_stub): Replace
5159         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
5160         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
5161         (mips_print_operand_punctuation): Likewise.
5162         (mips_frame_set): Likewise.
5163         (mips16e_output_save_restore): Likewise.
5164         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
5165         (mips_save_reg_p): Likewise.
5166         (mips_return_addr): Likewise.
5167         (mips_set_return_address): Likewise.
5168         (mips_direct_save_slot_move_p): Likewise.
5169         (mips_output_function_prologue): Likewise.
5170         (mips_restore_reg): Likewise.
5171         (mips_expand_epilogue): Likewise.
5172         (mips_epilogue_uses): Likewise.
5173         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
5174         (*mov<mode>_ra): Use it instead of a hard-coded 31.
5175         (clear_hazard_<mode>): Likewise.
5176         (call_internal): Likewise.
5177         (call_internal_direct): Likewise.
5178         (call_direct_split): Likewise.
5179         (call_value_internal): Likewise.
5180         (call_value_split): Likewise.
5181         (call_value_internal_direct): Likewise.
5182         (call_value_direct_split): Likewise.
5183         (call_value_multiple_internal): Likewise.
5184         (call_value_multiple_split): Likewise.
5185
5186 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
5187             Jakub Jelinek  <jakub@redhat.com>
5188
5189         PR rtl-optimization/41511
5190         * combine.c (record_value_for_reg): Pass explicit values as argument
5191         to get_last_value_validate.
5192         (get_last_value_validate): Document INSN parameter.
5193         For non-readonly MEMs, assume they might have been modified if INSN
5194         was in another basic block.
5195         (get_last_value): Minor reformatting.
5196
5197 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5198
5199         PR tree-opt/40992
5200         * final.c (asm_str_count): Split out from asm_insn_count.
5201         * rtl.h (asm_str_count): New prototype.
5202         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
5203         asm_str_count.
5204
5205 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
5206
5207         * doc/plugins.texi: Change plugin_pass to register_pass_info.
5208
5209 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
5210             Rafael Espindola  <espindola@google.com>
5211
5212         * gengtype.c (write_types): Moved call to write_func_for_structure
5213         into seperate loops.
5214
5215 2009-10-05  Richard Guenther  <rguenther@suse.de>
5216
5217         PR lto/41281
5218         * lto-cgraph.c (output_cgraph): Output toplevel asms.
5219         (input_cgraph_1): Input toplevel asms.
5220
5221 2009-10-05  Richard Guenther  <rguenther@suse.de>
5222
5223         PR lto/40902
5224         * lto-symtab.c (lto_compatible_attributes_p): Remove.
5225         (external_aggregate_decl_p): Likewise.
5226         (lto_symtab_compatible): Re-structure.  Remove dead code.
5227         For variables ignore toplevel qualifiers when comparing types.
5228         Issue warnings, not errors for mismatched user-alignment.
5229
5230 2009-10-05  Richard Guenther  <rguenther@suse.de>
5231
5232         PR lto/41552
5233         PR lto/41487
5234         * lto-symtab.c (struct lto_symtab_base_def): Remove.
5235         (struct lto_symtab_identifier_def): Likewise.
5236         (struct lto_symtab_decl_def): Likewise.
5237         (struct lto_symtab_entry_def): New.
5238         (lto_symtab_identifier_t): Rename to ...
5239         (lto_symtab_entry_t): ... this.
5240         (lto_symtab_decls): Remove.
5241         (lto_symtab_base_hash): Rename to ...
5242         (lto_symtab_entry_hash): ... this.
5243         (lto_symtab_base_eq): Rename to ...
5244         (lto_symtab_entry_eq): ... this.
5245         (lto_symtab_base_marked_p): Rename to ...
5246         (lto_symtab_entry_marked_p): ... this.
5247         (lto_symtab_identifier_marked_p): Remove.
5248         (lto_symtab_decl_marked_p): Likewise.
5249         (lto_symtab_maybe_init_hash_tables): Rename to ...
5250         (lto_symtab_maybe_init_hash_table): ... this.
5251         (lto_symtab_set_resolution_and_file_data): Remove.
5252         (lto_symtab_register_decl): New function.
5253         (lto_symtab_get_identifier): Remove.
5254         (lto_symtab_get): New function.
5255         (lto_symtab_get_resolution): Adjust.
5256         (lto_symtab_get_identifier_decl): Remove.
5257         (lto_symtab_set_identifier_decl): Likewise.
5258         (lto_symtab_merge_decl): Rename to ...
5259         (lto_symtab_merge): ... this.  Rewrite.
5260         (lto_symtab_merge_var): Remove.
5261         (lto_symtab_merge_fn): Likewise.
5262         (lto_symtab_prevailing_decl): Adjust.
5263         (lto_cgraph_replace_node): New function.
5264         (lto_symtab_merge_decls_2): Likewise.
5265         (lto_symtab_merge_decls_1): Likewise.
5266         (lto_symtab_fixup_var_decls): Likewise.
5267         (lto_symtab_resolve_symbols): Likewise.
5268         (lto_symtab_merge_decls): Likewise.
5269         (lto_symtab_prevailing_decl): Adjust.
5270         (lto_symtab_get_symtab_def): Remove.
5271         (lto_symtab_get_file_data): Likewise.
5272         (lto_symtab_clear_resolution): Adjust.
5273         (lto_symtab_clear_resolution): Likewise.
5274         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
5275         (input_cgraph_1): Likewise.
5276         * lto-streamer-in.c (get_resolution): Do not provide fake
5277         symbol resolutions here.
5278         (deferred_global_decls): Remove.
5279         (lto_register_deferred_decls_in_symtab): Likewise.
5280         (lto_register_var_decl_in_symtab): Change signature, register
5281         variable via lto_symtab_register_decl.
5282         (lto_register_function_decl_in_symtab): Likewise.
5283         (lto_read_tree): Adjust.
5284         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
5285         (lto_symtab_merge_var): Likewise.
5286         (lto_symtab_merge_fn): Likewise.
5287         (lto_symtab_register_decl): Declare.
5288         (lto_symtab_merge_decls): Likewise.
5289
5290 2009-10-05  Richard Guenther  <rguenther@suse.de>
5291
5292         PR tree-optimization/23821
5293         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
5294         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
5295         simple IV increments.
5296
5297 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5298
5299         * config/arm/arm.c (arm_override_options): Really initialize
5300         flag_dwarf2_cfi_asm to 0.
5301
5302 2009-10-05  Doug Kwan  <dougkwan@google.com>
5303
5304         PR rtl-optimization/41574
5305         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
5306         floating point and we are not doing unsafe math optimizations.
5307
5308 2009-10-03  Simon Baldwin  <simonb@google.com>
5309             Cary Coutant  <ccoutant@google.com>
5310             Rafael Espindola  <espindola@google.com>
5311             Richard Guenther  <rguenther@suse.de>
5312             Jan Hubicka  <jh@suse.cz>
5313             Doug Kwan <dougkwan@google.com>
5314             H.J. Lu  <hongjiu.lu@intel.com>
5315             Bill Maddox  <maddox@google.com>
5316             Ryan Mansfield  <rmansfield@qnx.com>
5317             Diego Novillo  <dnovillo@google.com>
5318             Ollie Wild  <aaw@google.com>
5319             Kenneth Zadeck <zadeck@naturalbridge.com>
5320
5321         * lto-cgraph.c: New file.
5322         * lto-compress.c: New file.
5323         * lto-compress.h: New file.
5324         * lto-opts.c: New file.
5325         * lto-section-in.c: New file.
5326         * lto-section-out.c: New file.
5327         * lto-streamer-in.c: New file.
5328         * lto-streamer-out.c: New file.
5329         * lto-streamer.c: New file.
5330         * lto-streamer.h: New file.
5331         * lto-symtab.c: New file.
5332         * lto-wpa-fixup.c: New file.
5333         * lto-wrapper.c: New file.
5334
5335 2009-10-03  Simon Baldwin  <baldwin@google.com>
5336             Ben Elliston  <bje@au.ibm.com>
5337             Rafael Espindola  <espindola@google.com>
5338             Nathan Froyd  <froydnj@codesourcery.com>
5339             Jan Hubicka  <jh@suse.cz>
5340             Doug Kwan  <dougkwan@google.com>
5341             Diego Novillo  <dnovillo@google.com>
5342             Kenneth Zadeck  <zadeck@naturalbridge.com>
5343
5344         * Makefile.in (enable_lto): New.
5345         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
5346         (LINKER_PLUGIN_API_H): Define.
5347         (LTO_SYMTAB_H): Define.
5348         (LTO_STREAMER_H): Define.
5349         (TREE_VECTORIZER_H): Define.
5350         (INCLUDES): Add LIBELFINC.
5351         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
5352         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
5353         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
5354         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
5355         (native): Add lto-wrapper$(exeext)
5356         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
5357         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
5358         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
5359         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
5360         (varasm.o): Add dependency on tree-iterator.h.
5361         (cgraph.o): Add dependency on cif-code.def.
5362         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
5363         (ipa-pure-const.o): Likewise.
5364         (GTFILES): Add lto-symtab.c.
5365         (install-lto-wrapper): New.
5366         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
5367         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
5368         * config.in: Regenerate.
5369
5370 2009-10-03  Rafael Espindola  <espindola@google.com>
5371             Diego Novillo  <dnovillo@google.com>
5372
5373         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
5374         ipa_write_summaries.
5375         Call execute_ipa_summary_passes for all_regular_ipa_passes and
5376         all_lto_gen_passes.
5377         (cgraph_optimize): Make extern.
5378
5379 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
5380             Kenneth Zadeck <zadeck@naturalbridge.com>
5381
5382         * toplev.c (in_lto_p): Declare.
5383         * collect2.c (scan_prog_file): Read all the output when reading
5384         information for LTO.
5385         (enum lto_mode_d): Declare.
5386
5387 2009-10-03  Richard Guenther  <rguenther@suse.de>
5388             Diego Novillo  <dnovillo@google.com>
5389
5390         * gimple.c: Include target.h and alias.h.
5391         (gimple_types): Declare.
5392         (type_hash_cache): Declare.
5393         (gimple_alloc_stat): Make extern.
5394         (gimple_build_eh_must_not_throw): Call
5395         gimple_eh_must_not_throw_set_fndecl.
5396         (struct type_pair_d): Declare.
5397         (type_pair_t): Declare.
5398         (type_pair_hash): New.
5399         (type_pair_eq): New.
5400         (lookup_type_pair): New.
5401         (gimple_force_type_merge): New.
5402         (compare_type_names_p): New.
5403         (compare_field_offset): New.
5404         (gimple_types_compatible_p): New.
5405         (struct sccs): Declare.
5406         (next_dfs_num): Declare.
5407         (iterative_hash_gimple_type): New.
5408         (visit): New.
5409         (iterative_hash_type_name): New.
5410         (iterative_hash_gimple_type): New.
5411         (gimple_type_hash): New.
5412         (gimple_type_eq): New.
5413         (gimple_register_type): New.
5414         (print_gimple_types_stats): New.
5415         (gimple_signed_or_unsigned_type): New.
5416         (gimple_unsigned_type): New.
5417         (gimple_signed_type): New.
5418         (gimple_get_alias_set): New.
5419         (gimple_decl_printable_name): Do not use DMGL_TYPES.
5420         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
5421         (gimple_force_type_merge): Declare.
5422         (gimple_types_compatible_p): Declare.
5423         (gimple_register_type): Declare.
5424         (print_gimple_types_stats): Declare.
5425         (gimple_unsigned_type): Declare.
5426         (gimple_signed_type): Declare.
5427         (gimple_get_alias_set): Declare.
5428         (gimple_eh_must_not_throw_set_fndecl): New.
5429
5430 2009-10-03  Jan Hubicka  <jh@suse.cz>
5431             Kenneth Zadeck <zadeck@naturalbridge.com>
5432
5433         * ipa-pure-const.c: Include lto-streamer.h.
5434         (register_hooks): Factor out of ...
5435         (generate_summary): ... here.
5436         (pure_const_write_summary): New.
5437         (pure_const_read_summary): New.
5438         (pass_ipa_pure_const): Add pure_const_write_summary and
5439         pure_const_read_summary.
5440         * ipa-reference.c: Include lto-streamer.h.
5441         (add_new_function): New.
5442         (remove_node_data): New.
5443         (duplicate_node_data): New.
5444         (ipa_init): Guard against multiple calls.
5445         Move hook setup from analyze_function.
5446         (write_node_summary_p): New.
5447         (ipa_reference_write_summary): New.
5448         (ipa_reference_read_summary): New.
5449         (pass_ipa_reference): Add ipa_reference_write_summary and
5450         ipa_reference_read_summary.
5451         * cgraph.h (cgraph_local_info): Add field lto_file_data.
5452         (struct cgraph_edge): Add fields lto_stmt_uid and
5453         call_stmt_cannot_inline_p.
5454         (cgraph_optimize): Declare.
5455         (cgraph_decide_is_function_needed): Declare.
5456         (reset_inline_failed): Declare.
5457         (enum LTO_cgraph_tags): Declare.
5458         (LTO_cgraph_tag_names): Declare.
5459         (LCC_NOT_FOUND): Define.
5460
5461 2009-10-03  Doug Kwan  <dougkwan@google.com>
5462             Rafael Espindola  <espindola@google.com>
5463             Jan Hubicka  <jh@suse.cz>
5464             Diego Novillo  <dnovillo@google.com>
5465             Kenneth Zadeck  <zadeck@naturalbridge.com>
5466
5467         * passes.c (all_regular_ipa_passes): New.
5468         (all_ipa_passes): Rename to all_small_ipa_passes.
5469         (init_optimization_passes): Init all_regular_ipa_passes.
5470         * tree-pass.h (all_regular_ipa_passes): New.
5471         (all_ipa_passes): Rename to all_small_ipa_passes.
5472         * passes.c (all_lto_gen_passes): New.
5473         (init_optimization_passes): Initialize all_lto_gen_passes.
5474         (execute_ipa_summary_passes): Make non-static.
5475         (ipa_write_summaries_1): New.
5476         (ipa_write_summaries_2): New.
5477         (ipa_write_summaries): New.
5478         (ipa_write_summaries_of_cgraph_node_set): New.
5479         (ipa_read_summaries_1): New.
5480         (ipa_read_summaries): New.
5481         (execute_ipa_pass_list): Call cgraph_process_new_functions.
5482         (execute_regular_ipa_pass_list): Remove.
5483         (init_optimization_passes): Schedule
5484         pass_rebuild_cgraph_edges and pass_early_inline outside
5485         of pass_all_early_optimizations.  Document reason.
5486         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
5487         pass_ipa_lto_finish_out): New pass.
5488         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
5489         (execute_all_ipa_transforms): New.
5490         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
5491         (dump_properties, debug_properties): New.
5492         * tree-optimize.c (gate_all_early_local_passes): Return
5493         false if we are in lto1.
5494         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
5495         * tree-pass.h (execute_all_ipa_transforms): Declare.
5496         (pass_ipa_function_and_variable_visibility): Declare.
5497         (pass_ipa_early_inline): Declare.
5498         (pass_ipa_lto_gimple_out): Declare.
5499         (pass_ipa_lto_wpa_fixup): Declare.
5500         (pass_ipa_lto_finish_out): Declare.
5501         (all_small_ipa_passes, all_regular_ipa_passes,
5502         all_lto_gen_passes): Declare.
5503         (execute_ipa_summary_passes): Declare.
5504         (execute_all_ipa_transforms): Declare.
5505         (ipa_write_summaries): Declare
5506         (ipa_write_summaries_of_cgraph_node_set): Declare.
5507         (ipa_read_summaries): Declare.
5508
5509 2009-10-03  Doug Kwan  <dougkwan@google.com>
5510             Ollie Wild  <aaw@google.com>
5511
5512         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
5513
5514         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
5515         (lto_mode): New variable.
5516         (maybe_run_lto_and_relink): Handle the -fwpa option.
5517         (main): Handle the -fwpa option.
5518         (maybe_unlink_list): New function.
5519         * gcc.c (link_lto_options): Replace -flto with -fwpa.
5520         * common.opt (flto): New flag.
5521         * toplev.c (flag_generate_lto): Declare.
5522
5523 2009-10-03  Simon Baldwin  <simonb@google.com>
5524
5525         * common.opt (flto-compression-level): New flag.
5526
5527         * opts.c: Include lto-opts.h.
5528         (handle_option): Call lto_register_user_option for each
5529         valid option handled.
5530         (decode_options): Clear registered options before the options
5531         handling loop.
5532
5533 2009-10-03  Cary Coutant  <ccoutant@google.com>
5534
5535         * collect2.c (is_elf): New function.
5536         (scan_prog_file): Require LTO object to be in ELF format.
5537
5538 2009-10-03  Rafael Espindola  <espindola@google.com>
5539
5540         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
5541         libgcc to the linker.
5542
5543         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
5544
5545         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
5546         (collect_execute): Add flags argument. Pass flags to pex_run. Update
5547         all callers.
5548         * collect2.h (collect_execute): Add flags argument.
5549         * tlink.c (tlink_execute): Update call to collect_execute.
5550         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
5551         (use_linker_plugin): New.
5552         (use_linker_plugin_spec_function): New.
5553         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
5554         (linker_plugin_file_spec): New.
5555         (lto_wrapper_spec): New.
5556         (lto_gcc_spec): New.
5557         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
5558         (static_spec_functions): Add use-linker-plugin.
5559         (process_command): Handle -use-linker-plugin.
5560         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
5561         linker_plugin_file_spec and lto_gcc_spec.
5562         (use_linker_plugin_spec_function): New.
5563
5564 2009-10-03  Richard Guenther  <rguenther@suse.de>
5565
5566         PR lto/41547
5567         PR lto/41548
5568         * tree.h (is_lang_specific): Include LANG_TYPE.
5569         * tree.c (find_decls_types_r): Manually add interesting parts
5570         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
5571
5572         * gimple.c (type_pair_hash): Make symmetric.
5573         (type_pair_eq): Likewise.
5574         (lookup_type_pair): Increase initial hashtable size.
5575         (gimple_force_type_merge): Rely on type-pair symmetry.
5576         (visit): Remove excessive checking code.
5577         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
5578         (gimple_register_type): Remove getenv calls, shrink initial
5579         hashtable size.
5580
5581         PR middle-end/41502
5582         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
5583         inline functions if not generating lto output.
5584
5585         PR lto/41379
5586         * toplev.c (finalize): In WPA mode remove the asm file.
5587
5588 2009-10-03  Doug Kwan  <dougkwan@google.com>
5589
5590         * ipa-inline.c (cgraph_mark_inline): Check
5591         edge->call_stmt_cannot_inline_p instead of calling
5592         gimple_call_cannot_inline_p.
5593         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
5594         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
5595         (inline_generate_summary): Do nothing in LTRANS.
5596         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
5597         exists before calling gimple_call_cannot_inline_p.
5598         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
5599         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
5600         Update new_edge->lto_stmt_uid.
5601         * cgraphbuild.c (reset_inline_failed): New.
5602
5603         * common.opt (fwpa): New flag.
5604         (fltrans): New option.
5605         * gcc.c (gcc_lto_option_t): New type.
5606         (current_lto_option): New variable.
5607         (lto_single_spec_function): Remove and is replaced by ..
5608         (lto_option_spec_function): New function.
5609         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
5610         passing the -flto flag.
5611         (cc1_options): Separate non-LTO related parts into ..
5612         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
5613         (lto1_options): New spec for lto FE.
5614         (link_lto_options): New spec for handling LTO flags in linker.
5615         (invoke_lto_single): Re-format to fit in 80 column.  Replace
5616         lto-single with lto-option.
5617         (static_specs): Add cc1_non_lto_options, lto1_options and
5618         link_lto_options.
5619         (static_spec_function): Replace lto-single with lto-option.
5620         (process_command): Handle -flto, -fwpa and -fltran by setting
5621         current_lto_option and not passing it to subprocess unconditionally.
5622
5623 2009-10-03  Bill Maddox  <maddox@google.com>
5624
5625         Add `gcc' driver support for link-time code generation (LTO).
5626
5627         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
5628         (lto_flag, lto_objects, lto_o_file): New variables.
5629         (struct lto_object, struct lto_object_list): New structures.
5630         (collect_exit, handler): Remove LTO temporary output file on exit.
5631         (add_lto_object): New function.
5632         (maybe_run_lto_and_relink): New function. Perform link time code
5633         generation and relinking for object files containing LTO information.
5634         (main): Invoke maybe_run_lto_and_relink().
5635         (dump_argv): New function.  For debugging, currently disabled.
5636         (scan_prog_file): Add LTO information pass.
5637         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
5638         collect2.
5639         * toplev.c (compile_file): Emit assembler directive to create
5640         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
5641
5642 2009-10-03  Diego Novillo  <dnovillo@google.com>
5643
5644         * c.opt: Add LTO to warn_abi and warn_psabi.
5645
5646         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
5647         inline function.  Ignore language-specific nodes.  Update all users.
5648         (find_decls_types_r): Do not traverse the subtrees of
5649         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
5650         * tree.h (is_lang_specific): New.
5651         * langhooks.h (struct lang_hooks_for_decls): Remove
5652         may_need_assembler_name_p.  Update all users.
5653
5654         * c-common.c (set_builtin_user_assembler_name): Move ...
5655         * builtins.c (set_builtin_user_assembler_name): ... here.
5656         (is_builtin_name): Add comment
5657         (is_builtin_fn): New.
5658         * except.c (output_ttype): Only call
5659         lookup_type_for_runtime if TYPE is not a runtime type.
5660
5661         * passes.c (register_pass): Call position_pass on
5662         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
5663         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
5664         (TV_IPA_LTO_DECL_IO): Define.
5665         (TV_IPA_LTO_CGRAPH_IO): Define.
5666         (TV_LTO): Define.
5667         (TV_WHOPR_WPA): Define.
5668         (TV_WHOPR_WPA_IO): Define.
5669         (TV_WHOPR_LTRANS): Define.
5670         (TV_WHOPR_WPA_FIXUP): Define.
5671         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
5672         * tree-cfg.c (tree_node_can_be_shared): Make extern.
5673         * tree-flow.h (tree_node_can_be_shared): Declare.
5674         * tree-inline.c (tree_can_inline_p): Check that E has a
5675         statement associated with it.
5676         * tree.c (free_lang_data_in_binf): Factor out of ...
5677         (free_lang_data_in_type): ... here.
5678         Call RECORD_OR_UNION_TYPE_P.
5679         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
5680         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
5681         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
5682         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
5683         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
5684         (gate_free_lang_data): Return true if flag_generate_lto is set.
5685         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
5686         * c-common.h (set_builtin_user_assembler_name): Move ...
5687         * tree.h (set_builtin_user_assembler_name): ... here.
5688
5689         * common.opt (flto-report): New flag.
5690         * opts.c (complain_wrong_lang): Do not complain if running lto1.
5691         * collect2.c (scan_prog_file): Send the error output of
5692         'nm' to HOST_BIT_BUCKET.
5693
5694 2009-10-03  Ollie Wild  <aaw@google.com>
5695
5696         * langhooks-def.h (lhd_begin_section): New function declaration.
5697         (lhd_write_section): New function declaration.
5698         (lhd_end_section): New function declaration.
5699         (LANG_HOOKS_BEGIN_SECTION): New macro.
5700         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
5701         (LANG_HOOKS_END_SECTION): New macro.
5702         (LANG_HOOKS_LTO): New macro.
5703         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
5704         * langhooks.c (output.h): Add include.
5705         (saved_section): New static variable.
5706         (lhd_begin_section): New function.
5707         (lhd_write_section_data): New function.
5708         (lhd_end_section): New function.
5709         * langhooks.h (struct lang_hooks_for_lto): New structure.
5710         (struct lang_hooks): Add member lto.
5711         * Makefile.in (langhooks.o): Add dependency on output.h.
5712
5713         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
5714
5715 2009-10-03  Richard Guenther  <rguenther@suse.de>
5716
5717         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
5718         Handle LTO.
5719
5720 2009-10-03  Simon Baldwin  <simonb@google.com>
5721             Richard Guenther  <rguenther@suse.de>
5722             Janis Johnson  <janis187@us.ibm.com>
5723             Doug Kwan  <dougkwan@google.com>
5724             Diego Novillo  <dnovillo@google.com>
5725             Ramana Radhakrishnan  <ramana.r@gmail.com>
5726             Ollie Wild  <aaw@google.com>
5727
5728         * doc/install.texi: Add documentation for libelf and --enable-lto.
5729         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
5730         -flto-report, -flto-compression-level and -use-linker-plugin.
5731         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
5732         Add section for LTO Testing.
5733
5734 2009-10-02  Cary Coutant  <ccoutant@google.com>
5735
5736         Add support for comdat type sections for DWARF v4.
5737         Merge from dwarf4 branch.
5738
5739         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
5740         (dw_die_ref): Define vector type.
5741         (enum dw_val_class): Add dw_val_class_data8.
5742         (struct dw_val_struct): Add v.val_data8.
5743         (comdat_type_node_ref): New type.
5744         (struct die_struct): Move die_symbol into a union; add new field
5745         die_type_node.  Change all uses.
5746         (comdat_type_node): New type.
5747         (skeleton_chain_node): New type.
5748         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
5749         (comdat_type_list): New variable.
5750         (dwarf_tag_name): Add DW_TAG_type_unit.
5751         (dwarf_attr_name): Add DW_AT_signature.
5752         (add_AT_data8): New function.
5753         (replace_child): New function.
5754         (move_all_children): New function.
5755         (print_signature): New function.
5756         (print_die): Print signature information; add dw_val_class_data8.
5757         (attr_checksum): Support dw_val_class_data8.
5758         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
5759         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
5760         (checksum_sleb128, checksum_uleb128): New functions.
5761         (checksum_die_context): New function.
5762         (loc_checksum_ordered): New function.
5763         (attr_checksum_ordered): New function.
5764         (struct checksum_attributes): New structure.
5765         (collect_checksum_attributes): New function.
5766         (die_checksum_ordered): New function.
5767         (generate_type_signature): New function.
5768         (same_dw_val_p): Add dw_val_class_data8.
5769         (is_symbol_die): Use new is_declaration_die function.
5770         (is_declaration_die): New function.
5771         (should_move_die_to_comdat): New function.
5772         (clone_die): New function.
5773         (clone_tree): New function.
5774         (clone_as_declaration): New function.
5775         (copy_declaration_context): New function.
5776         (generate_skeleton_ancestor_tree): New function.
5777         (generate_skeleton_bottom_up): New function.
5778         (generate_skeleton): New function.
5779         (remove_child_or_replace_with_skeleton): New function.
5780         (break_out_comdat_types): New function.
5781         (struct decl_table_entry): New type.
5782         (htab_decl_hash): New function.
5783         (htab_decl_eq): New function.
5784         (htab_decl_del): New function.
5785         (copy_ancestor_tree): New function.
5786         (copy_decls_walk): New function.
5787         (copy_decls_for_unworthy_types): New function.
5788         (build_abbrev_table): Don't assert on missing die_symbol when doing
5789         comdat type sections.
5790         (size_of_die): Use DW_FORM_sig8 for external references.  Add
5791         dw_val_class_data8.
5792         (unmark_dies): Don't assert for unmarked dies when doing comdat
5793         type sections.
5794         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
5795         (output_signature): New function.
5796         (output_die): Likewise.
5797         (output_compilation_unit_header): Mark output as DWARF version 3
5798         even if generating DWARF 4.
5799         (output_comdat_type_unit): New function.
5800         (output_line_info): Mark output as DWARF version 3 even if generating
5801         DWARF 4.
5802         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
5803         DWARF-4.
5804         (dwarf2out_end_source_file): Likewise.
5805         (prune_unused_types_walk_attribs): Don't follow references into
5806         comdat type sections.
5807         (prune_unused_types_mark): When generating type units, do not mark
5808         children of non-defining declarations of types; do mark children of
5809         type entries.
5810         (prune_unused_types): Process comdat type sections.
5811         (htab_ct_hash): New function.
5812         (htab_ct_eq): New function.
5813         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
5814         Add a pointer to the line table from type unit entries so
5815         DW_AT_decl_file has meaning.
5816         * varasm.c (default_elf_asm_named_section): Use identifier name as
5817         comdat key instead of lang hook.
5818
5819 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
5820
5821         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
5822
5823 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
5824
5825         * config/i386/i386.md (SWIM248): New mode iterator.
5826         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
5827         divmodhi4 patterns using SWIM248 macro.
5828         (*divmod<mode>4): Macroize insn_and_split pattern from
5829         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
5830         and their corresponding splitters usign SWIM248 macro.  Split SImode
5831         insn to generate cltd and DImode insn to generate cqto instead of
5832         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
5833         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
5834         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
5835         *divmodsi_noext patterns using SWIM248 macro.
5836         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
5837         udivmodhi4 patterns using SWIM248 macro.
5838         (*udivmod<mode>4): Macroize insn_and_split pattern from
5839         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
5840         corresponding splitters using SWIM248 macro.
5841         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
5842         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
5843
5844 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
5845
5846         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
5847         of zero-sized element is zero-sized regardless of its extent.
5848
5849 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
5850
5851         PR debug/40521
5852         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
5853         * configure: Regenerated.
5854         * config.in: Regenerated.
5855         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
5856         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
5857         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
5858         not emitting .eh_frame, emit .cfi_sections .debug_frame
5859         directive.
5860
5861         PR debug/41404
5862         PR debug/41353
5863         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
5864         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
5865         with '\0'.
5866         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
5867         vars use DECL_RTL with resetting it back to NULL afterwards.
5868         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
5869         rtx_equal_p instead of asserting it is a SYMBOL_REF.
5870         (value_format): For dw_val_class_addr only use DW_FORM_addr if
5871         the attribute type allows it, otherwise use DW_FORM_dataN.
5872         (mem_loc_descriptor): Handle CONST_STRING.
5873         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
5874         Handle MEM with CONST_STRING address using add_AT_string.
5875         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
5876         CONST_STRING for const arrays initialized with a string literal.
5877         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
5878         (dwarf2out_finish): Call resolve_addr.
5879
5880 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
5881             Maxim Kuvyrkov  <maxim@codesourcery.com>
5882
5883         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
5884
5885 2009-10-02  Nick Clifton  <nickc@redhat.com>
5886
5887         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
5888         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
5889
5890 2009-10-01  Jan Hubicka  <jh@suse.cz>
5891
5892         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
5893         (cgraph_create_virtual_clone): Just pass redirect_callers
5894         around.
5895         * cgraph.h (cgraph_clone_node): Update prototype.
5896         * ipa-pure-const.c (self_recursive_p): New function.
5897         (propagate): Use it.
5898         * ipa-inline.c (cgraph_clone_inlined_nodes,
5899         cgraph_decide_recursive_inlining): Update.
5900
5901 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
5902
5903         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
5904         instructions for TARGET_OCTEON.
5905
5906 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5907
5908         * config/arm/arm.c (arm_override_options): Turn off
5909         flag_dwarf2_cfi_asm for AAPCS variants.
5910
5911 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5912
5913         PR middle-end/12392
5914         * tree-sra.c (convert_callers): Do not call
5915         compute_inline_parameters on one caller more than once.
5916
5917 2009-10-01  Nick Clifton  <nickc@redhat.com>
5918
5919         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
5920         an empty string if not already defined.
5921
5922 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5923
5924         PR bootstrap/41395
5925         * tree-sra.c (is_va_list_type): New function.
5926         (find_var_candidates): Call is_va_list_type.
5927         (find_param_candidates): Check that the type or the type pointed
5928         to are not va_list types.
5929
5930 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5931
5932         PR c++/41503
5933         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
5934         DECL_ARTIFICIAL (param_decl) is true.
5935
5936 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
5937
5938         * tree.h (tree_decl_common::lang_flag_8): New.
5939         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
5940         keyword.
5941         * c-common.h (RID_CONSTEXPR): New.
5942
5943 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
5944
5945         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
5946         Use ref-all pointers.
5947         (alpha_gimplify_va_arg): Ditto.
5948
5949 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
5950
5951         PR target/41279
5952         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
5953         before insn counting loop now that BB_END (bb) is counted.  Ensure
5954         the return value isn't zero.
5955
5956 2009-09-30  Nick Clifton  <nickc@redhat.com>
5957
5958         * config.gcc (sh-symbianelf): Replace definition of extra_objs
5959         with separate definitions of c_target_objs and cxx_target_objs.
5960         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
5961         and symbian-base.o.
5962         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
5963         sh_symbian_import_export_class.
5964         * config/sh/sh-protos.h: Fix names of exported symbian functions.
5965         * config/sh/symbian.c: Delete, moving code into...
5966         * config/sh/symbian-base.c: ... here
5967         * config/sh/symbian-c.c: ... and here
5968         * config/sh/symbian-cxx.c: ... and here.
5969
5970 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
5971
5972         PR target/22093
5973         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
5974         of plus RTX into register.
5975
5976 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5977
5978         * doc/install.texi: Linguistic and markup fixes.
5979         (Configuration) <--disable-cpp>: Remove description.
5980         <--enable-maintainer-mode>: Autotools files are affected, too.
5981         <--with-sysroot>: Improve description.
5982         (Building): Bump required GNU make version.
5983
5984 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
5985
5986         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
5987         (x86_64-*-*): Ditto.
5988
5989         * config/i386/fma4intrin.h: New file, provide common x86 compiler
5990         intrinisics for FMA4.
5991         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
5992         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
5993         Add FMA4 check and fma4intrin.h.
5994         * config/i386/i386-c.c(ix86_target_macros_internal): Check
5995         ISA_FLAG for FMA4.
5996         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
5997         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
5998         constant for FMA4 support.
5999         (UNSPEC_FMA4_FMADDSUB): Ditto.
6000         (UNSPEC_FMA4_FMSUBADD): Ditto.
6001         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
6002         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
6003         (ix86_expand_fma4_multiple_memory): Ditto.
6004         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
6005         (OPTION_MASK_ISA_FMA4_UNSET): New.
6006         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
6007         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
6008         (ix86_handle_option): Handle -mfma4.
6009         (isa_opts): Handle -mfma4.
6010         (enum pta_flags): Add PTA_FMA4.
6011         (override_options): Add FMA4 support.
6012         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
6013         (IX86_BUILTIN_VFMADDSD): Ditto.
6014         (IX86_BUILTIN_VFMADDPS): Ditto.
6015         (IX86_BUILTIN_VFMADDPD): Ditto.
6016         (IX86_BUILTIN_VFMSUBSS): Ditto.
6017         (IX86_BUILTIN_VFMSUBSD): Ditto.
6018         (IX86_BUILTIN_VFMSUBPS): Ditto.
6019         (IX86_BUILTIN_VFMSUBPD): Ditto.
6020         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
6021         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
6022         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
6023         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
6024         (IX86_BUILTIN_VFNMADDSS): Ditto.
6025         (IX86_BUILTIN_VFNMADDSD): Ditto.
6026         (IX86_BUILTIN_VFNMADDPS): Ditto.
6027         (IX86_BUILTIN_VFNMADDPD): Ditto.
6028         (IX86_BUILTIN_VFNMSUBSS): Ditto.
6029         (IX86_BUILTIN_VFNMSUBSD): Ditto.
6030         (IX86_BUILTIN_VFNMSUBPS): Ditto.
6031         (IX86_BUILTIN_VFNMSUBPD): Ditto.
6032         (IX86_BUILTIN_VFMADDPS256): Ditto.
6033         (IX86_BUILTIN_VFMADDPD256): Ditto.
6034         (IX86_BUILTIN_VFMSUBPS256): Ditto.
6035         (IX86_BUILTIN_VFMSUBPD256): Ditto.
6036         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
6037         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
6038         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
6039         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
6040         (IX86_BUILTIN_VFNMADDPS256): Ditto.
6041         (IX86_BUILTIN_VFNMADDPD256): Ditto.
6042         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
6043         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
6044         (enum multi_arg_type): New enum for describing the various FMA4
6045         intrinsic argument types.
6046         (bdesc_multi_arg): New table for FMA4 intrinsics.
6047         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
6048         (ix86_expand_multi_arg_builtin): New function for creating FMA4
6049         intrinsics.
6050         (ix86_expand_builtin): Add FMA4 intrinsic support.
6051         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
6052         operand instructions.
6053         (ix86_expand_fma4_multiple_memory): New function to split the
6054         second memory reference from FMA4 instructions.
6055         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
6056         (ssemodesuffixf2s): Ditto.
6057         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
6058         instructions.
6059         (fma4_fmsub<mode>4): Ditto.
6060         (fma4_fnmadd<mode>4): Ditto.
6061         (fma4_fnmsub<mode>4): Ditto.
6062         (fma4_vmfmadd<mode>4): Ditto.
6063         (fma4_vmfmsub<mode>4): Ditto.
6064         (fma4_vmfnmadd<mode>4): Ditto.
6065         (fma4_vmfnmsub<mode>4): Ditto.
6066         (fma4_fmadd<mode>4256): Ditto.
6067         (fma4_fmsub<mode>4256): Ditto.
6068         (fma4_fnmadd<mode>4256): Ditto.
6069         (fma4_fnmsub<mode>4256): Ditto.
6070         (fma4_fmaddsubv8sf4): Ditto.
6071         (fma4_fmaddsubv4sf4): Ditto.
6072         (fma4_fmaddsubv4df4): Ditto.
6073         (fma4_fmaddsubv2df4): Ditto.
6074         (fma4_fmsubaddv8sf4): Ditto.
6075         (fma4_fmsubaddv4sf4): Ditto.
6076         (fma4_fmsubaddv4df4): Ditto.
6077         (fma4_fmsubaddv2df4): Ditto.
6078         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
6079         instructions for intrinsics.
6080         (fma4i_fmsub<mode>4): Ditto.
6081         (fma4i_fnmadd<mode>4): Ditto.
6082         (fma4i_fnmsub<mode>4): Ditto.
6083         (fma4i_vmfmadd<mode>4): Ditto.
6084         (fma4i_vmfmsub<mode>4): Ditto.
6085         (fma4i_vmfnmadd<mode>4): Ditto.
6086         (fma4i_vmfnmsub<mode>4): Ditto.
6087         (fma4i_fmadd<mode>4256): Ditto.
6088         (fma4i_fmsub<mode>4256): Ditto.
6089         (fma4i_fnmadd<mode>4256): Ditto.
6090         (fma4i_fnmsub<mode>4256): Ditto.
6091         (fma4i_fmaddsubv8sf4): Ditto.
6092         (fma4i_fmaddsubv4sf4): Ditto.
6093         (fma4i_fmaddsubv4df4): Ditto.
6094         (fma4i_fmaddsubv2df4): Ditto.
6095         (fma4i_fmsubaddv8sf4): Ditto.
6096         (fma4i_fmsubaddv4sf4): Ditto.
6097         (fma4i_fmsubaddv4df4): Ditto.
6098         (fma4i_fmsubaddv2df4): Ditto.
6099
6100         * doc/invoke.texi (-mfma4): Add documentation.
6101         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
6102
6103 2009-09-29  Richard Henderson  <rth@redhat.com>
6104
6105         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
6106         an edge to the new destination block.
6107
6108 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6109
6110         PR target/41393
6111         * pa.c (hppa_profile_hook): Use
6112         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
6113
6114 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
6115             Alexander Monakov  <amonakov@ispras.ru>
6116
6117         PR target/41365
6118         * config/ia64/predicates.md (not_postinc_destination_operand): New.
6119         (not_postinc_memory_operand): New.
6120         (not_postinc_move_operand): New.
6121         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
6122         (*cmovsi_internal): Ditto.
6123
6124 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
6125
6126         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
6127         restrict issue_rate in first pass when scheduling for register
6128         pressure.
6129
6130 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
6131             Rafael Avila de Espindola  <espindola@google.com>
6132
6133         * gengtype.c (plugin_output): New.
6134         (get_output_file_with_visibility): Return plugin_output for plugins.
6135         (main): Parse and use the -P option.
6136         * gty.texi: Update the command line format.
6137
6138 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
6139
6140         PR debug/41438
6141         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
6142         functions.
6143         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
6144         out if !const_ok_for_output.
6145
6146         PR debug/41474
6147         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
6148         case VAR_LOCATION>: Remove gcc_unreachable ().
6149
6150 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
6151
6152         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
6153         (x86_64-*-*): Ditto.
6154         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
6155         back to smmintrin.h.
6156         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
6157         * config/i386/x86intrin.h: Remove SSE5.
6158         * config/i386/mmintrin-common.h: Delete file.
6159         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
6160
6161 2009-09-29  Richard Guenther  <rguenther@suse.de>
6162
6163         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
6164         resulting from stack temporaries on STRICT_ALIGNMENT targets.
6165
6166 2009-09-29  Nick Clifton  <nickc@redhat.com>
6167
6168         * function.c (current_function_name): If there is no current
6169         function just return "<none>".
6170
6171 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
6172
6173         * tree-pass.h (register_pass_info): New structure.
6174         (pass_positioning_ops): Move enum from gcc-plugin.h.
6175         (register_pass): New function.
6176         * gcc-plugin.h (plugin_pass): Delete structure.
6177         (pass_positioning_ops): Delete enum.
6178         * plugin.c (regsiter_pass): Delete function.
6179         (position_pass): Delete function.
6180         (added_pass_nodes): Delete variable.
6181         (prev_added_pass_nodes): Delete variable.
6182         (pass_list_node): Delete structure.
6183         * passes.c (make_pass_instance): New function.
6184         (next_pass_1): Change to call make_pass_instance.
6185         (pass_list_node): Move structure from gcc-plugin.h.
6186         (added_pass_nodes): Move variable from plugin.c.
6187         (prev_added_pass_nodes): Move variable from plugin.c.
6188         (position_pass): New function.
6189         (register_pass): New function.
6190
6191 2009-09-28  Easwaran Raman  <eraman@google.com>
6192
6193         * ifcvt.c (noce_try_abs): Recognize pattern and call
6194         expand_one_cmpl_abs_nojump.
6195         * optabs.c (expand_one_cmpl_abs_nojump): New function.
6196         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
6197
6198 2009-09-28  Ian Lance Taylor  <iant@google.com>
6199
6200         PR middle-end/40500
6201         * c-opts.c (c_common_handle_option): Don't set
6202         warn_jump_misses_init for -Wall.
6203         * doc/invoke.texi (Warning Options): Update documentation.
6204
6205 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6206
6207         * Makefile.in ($(out_object_file)): Depend on
6208         gt-$(basename $(notdir $(out_file))).h.
6209
6210 2009-09-28  Richard Henderson  <rth@redhat.com>
6211
6212         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
6213         * except.c (gen_eh_region): Set it.
6214         (duplicate_eh_regions_1): Copy it.
6215         * tree-eh.c (lower_resx): Use it to determine which function
6216         to call to resume.
6217
6218         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
6219         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
6220         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
6221         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
6222         BUILT_IN_CXA_END_CLEANUP if necessary.
6223
6224         * c-common.c (c_define_builtins): Update call to
6225         build_common_builtin_nodes.
6226
6227 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6228
6229         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
6230
6231 2009-09-28  Michael Matz  <matz@suse.de>
6232
6233         * builtins.c (interclass_mathfn_icode): New helper.
6234         (expand_builtin_interclass_mathfn): Use it here, and split folding
6235         into ...
6236         (fold_builtin_interclass_mathfn): ... this new folder.
6237         (build_call_nofold_loc): New static helper.
6238         (build_call_nofold): New wrapper macro for above.
6239         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
6240         (expand_builtin_pow): Ditto.
6241         (expand_builtin_memset_args): Ditto.
6242         (expand_builtin_printf): Ditto.
6243         (expand_builtin_fprintf): Ditto.
6244         (expand_builtin_sprintf): Ditto.
6245         (expand_builtin_memory_chk): Ditto.
6246         (expand_builtin_mempcpy_args): Ditto and don't call folders.
6247         (expand_builtin_stpcpy): Ditto.
6248         (expand_builtin_strcmp): Ditto.
6249         (expand_builtin_strncmp): Ditto.
6250         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
6251         (expand_builtin_strcpy_args): Don't call folders.
6252         (expand_builtin_memcmp): Ditto.
6253         (expand_builtin_strncpy): Ditto, and use target.
6254         (expand_builtin_memcpy): Ditto.
6255         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
6256         expand_builtin_strpbrk, expand_builtin_memmove,
6257         expand_builtin_memmove_args, expand_builtin_bcopy,
6258         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
6259         expand_builtin_strspn, expand_builtin_strcspn,
6260         expand_builtin_fputs): Remove these.
6261         (expand_builtin): Don't call the above, change calls to other
6262         expanders that changed prototype.
6263         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
6264         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
6265         fold_builtin_interclass_mathfn.
6266         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
6267         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
6268
6269         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
6270         * passes.c (init_optimization_passes): Move pass_fold_builtins
6271         after last phiopt pass.
6272         * tree-inline.c (fold_marked_statements): When folding builtins
6273         iterate over all instruction potentially generated.
6274         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
6275         earlier.
6276         (fold_gimple_call): Use it to always fold calls (into potentially
6277         multiple instructions).
6278         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
6279         calls into zero at this time.
6280         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
6281         statements generated by builtin folding.
6282
6283 2009-09-28  Nick Clifton  <nickc@redhat.com>
6284
6285         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
6286
6287 2009-09-28  Duncan Sands  <baldrick@free.fr>
6288
6289         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
6290         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
6291         (register_callback): Dispatch it.
6292         (invoke_plugin_callbacks): Incorporate in sanity check.
6293         * ggc.h (ggc_register_cache_tab): Add declaration.
6294         * ggc-common.c (ggc_register_root_tab): Simplify.
6295         (const_ggc_cache_tab_t): New typedef.
6296         (extra_cache_vec): New vector of dynamically added cache tables.
6297         (ggc_register_cache_tab): New function.
6298         (ggc_scan_cache_tab): New function.
6299         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
6300         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
6301
6302 2009-09-27  Richard Henderson  <rth@redhat.com>
6303
6304         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
6305         which we remove __builtin_stack_restore.
6306
6307 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
6308
6309         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
6310         to test for GRD_INVARIANT.
6311         (simple_rhs_p): Anything that's function_invariant_p is fine.
6312
6313 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
6314
6315         * gengtype.c (main): Use plunge_files instead of plugin_output.
6316
6317 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
6318             Rafael Avila de Espindola  <espindola@google.com>
6319
6320         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
6321         Don't print pch related info if it is false.
6322         (main): Don't print pch info in plugin mode.
6323
6324 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
6325
6326         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
6327         with dw_val_class_const_double.
6328         (struct dw_val_struct): Replace val_long_long with val_double and
6329         adjust for above change.
6330         (output_loc_operands): Likewise.
6331         (add_AT_long_long): Rename into...
6332         (add_AT_double): ...this.
6333         (print_die): Replace dw_val_class_long_long with
6334         dw_val_class_const_double and adjust.
6335         (attr_checksum): Likewise.
6336         (same_dw_val_p): Likewise.
6337         (size_of_die): Likewise.
6338         (value_format): Likewise.
6339         (output_die): Likewise.
6340         (loc_descriptor) <CONST_DOUBLE>: Likewise.
6341         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
6342         instead of add_AT_long_long.
6343         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
6344         value with the precision of its type.
6345
6346 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
6347
6348         PR c/41476
6349         * c-typeck.c (build_conditional_expr): Use the readonly and
6350         volatile flags of the operand types, not of the operands itself.
6351
6352 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
6353
6354         * collect2.c (main): Look for -brtl before adding libraries.
6355
6356 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
6357
6358         * config.gcc: Update OpenBSD targets.
6359         * config/openbsd-stdint.h: New file.
6360         * config/openbsd-libpthread.h: New file.
6361         * config/openbsd.h: Update and break out LIB_SPEC definition.
6362         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
6363         * config/i386/openbsdelf.h: Correct types.
6364         * config/m68k/openbsd.h: Likewise.
6365         * config/mips/openbsd.h: Likewise.
6366         * config/vax/openbsd.h: Likewise.
6367
6368 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
6369
6370         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
6371         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
6372         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
6373         of the length and zero.
6374
6375 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6376
6377         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
6378         (FLAGS_H): Add options.h $(REAL_H).
6379         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
6380         (TREE_VECTORIZER_H): New.
6381         (EBITMAP_H): Renamed from EBIMAP_H.
6382         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
6383         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
6384         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
6385         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
6386         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
6387         (graphite-clast-to-gimple.o, graphite-dependences.o)
6388         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
6389         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
6390         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
6391         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
6392         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
6393         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
6394         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
6395         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
6396         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
6397         updated and fixed as per above changes and per
6398         check_makefile_deps.sh output.
6399
6400         PR bootstrap/40928
6401         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
6402         * configure: Regenerate.
6403
6404 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6405
6406         * doc/install.texi: Update minimum MPC version to 0.7.
6407
6408 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
6409
6410         * doc/install.texi (Binaries): Remove reference to the binary
6411         distribution CD-ROM from the FSF.
6412
6413 2009-09-26  Michael Matz  <matz@suse.de>
6414
6415         PR lto/40758
6416         PR middle-end/41470
6417         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
6418         that are mentioned in the body.
6419
6420 2009-09-26  Michael Matz  <matz@suse.de>
6421
6422         PR tree-optimization/41454
6423         * tree-ssa-dom (stmts_to_rescan): Remove variable.
6424         (tree_ssa_dominator_optimize): Don't allocate and free it.
6425         (dom_opt_leave_block): Don't iterate over it.
6426         (eliminate_redundant_computations): Don't return a value.
6427         (cprop_operand, cprop_into_stmt): Ditto.
6428         (optimize_stmt): Don't defer updating stmts.
6429
6430 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
6431
6432         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
6433         generic_parameter_die, template_parameter_pack_die,
6434         gen_formal_parameter_die, gen_subprogram_die): Adjust after
6435         renaming DW_TAG_formal_parameter_pack and
6436         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
6437         and DW_TAG_GNU_template_parameter_pack.
6438
6439 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
6440
6441         * config/v850/v850.h (FUNCTION_VALUE): Remove.
6442         * config/v850/v850.c (v850_function_value): New function.
6443         (TARGET_FUNCTION_VALUE): Define.
6444
6445 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
6446
6447         * tree-vect-stmts.c (vectorizable_call): Call
6448         mark_symbols_for_renaming after vect_finish_stmt_generation.
6449
6450         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
6451         to loc_descriptor_from_tree.
6452         (add_location_or_const_value_attribute): Pass 0 instead of 2
6453         for decl_by_reference_p decls.
6454
6455 2009-09-25  Richard Guenther  <rguenther@suse.de>
6456
6457         PR middle-end/41463
6458         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
6459         arrays again.
6460
6461 2009-09-25  Ben Elliston  <bje@au.ibm.com>
6462
6463         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
6464         after `power7'.
6465
6466 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
6467
6468         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
6469         form of instruction.
6470
6471 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6472
6473         PR middle-end/41435
6474         * fold-const.c (const_binop): Handle complex int division.
6475         * tree-complex.c (expand_complex_div_straight,
6476         expand_complex_div_wide): Update comments.
6477
6478 2009-09-24  DJ Delorie  <dj@redhat.com>
6479
6480         PR target/41456
6481         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
6482         (reg_class): Likewise.
6483         (REG_CLASS_NAMES): Likewise.
6484         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
6485         (m32c_override_options): Disable -fivopts for M32C.
6486
6487 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
6488
6489         * config/rs6000/predicates.md (indexed_or_indirect_operand):
6490         Delete VSX load/store with update support.
6491         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
6492         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
6493         (vsx_movti): Ditto.
6494         (VSX_U): Delete.
6495         (VSbit): Ditto.
6496         (VStype_load_update): Ditto.
6497         (VStype_store_update): Ditto.
6498         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
6499         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
6500
6501         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
6502         load/store with update builtins.
6503
6504 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
6505
6506         * libgcc2.c (L_trampoline): Prototype for getpagesize
6507         and mprotect in WINNT case.
6508
6509 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
6510
6511         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
6512         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
6513         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
6514         'outgoing' argument.
6515         (TARGET_FUNCTION_VALUE): Define.
6516
6517 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
6518
6519         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
6520
6521 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
6522
6523         PR bootstrap/41405
6524         * common.opt: Initialize dwarf_strict to -1.
6525         * toplev.c (process_options): Catch unset dwarf_strict
6526         and set to 0 for all targets not overriding.
6527         * config/darwin.c (darwin_override_options): Catch unset
6528         dwarf_strict and override to 1.
6529
6530 2009-09-24  Jeff Law  <law@redhat.com>
6531
6532         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
6533
6534 2009-09-24  Richard Guenther  <rguenther@suse.de>
6535
6536         PR tree-optimization/36143
6537         PR tree-optimization/38747
6538         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
6539         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
6540
6541 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
6542
6543         PR bootstrap/41457
6544         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
6545         return false instead of gcc_unreachable ().  For CONST return the
6546         value returned by recursive call instead of always returning true.
6547         (tree_add_const_value_attribute): Return the value returned by
6548         add_const_value_attribute instead of always returning true if rtl
6549         is non-NULL.
6550
6551 2009-09-23  Justin Seyster  <jrseys@gmail.com>
6552
6553         * Makefile.in (PLUGIN_HEADERS): Include real.h.
6554
6555 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
6556
6557         * cgraphunit.c (cgraph_lower_function): Revert last change.
6558         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
6559         instead of DECL_NO_STATIC_CHAIN.
6560         * tree-cfg.c (verify_gimple_call): Likewise.
6561         * tree-nested.c (get_chain_decl, get_chain_field,
6562         convert_tramp_reference_op, convert_gimple_call): Likewise.
6563         (convert_all_function_calls): Likewise.  Always set or clear
6564         DECL_STATIC_CHAIN initially, for !n->outer clear it.
6565         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
6566         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
6567         if nested.
6568         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
6569         DECL_NO_STATIC_CHAIN.
6570         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
6571         instead of DECL_NO_STATIC_CHAIN.
6572         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
6573         decl_function_context.
6574         * varasm.c (initializer_constant_valid_p): Likewise.
6575         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
6576         (DECL_STATIC_CHAIN): ... this.
6577         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
6578         instead of DECL_NO_STATIC_CHAIN.
6579
6580 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
6581             Rafael Avila de Espindola  <espindola@google.com>
6582
6583         * gengtype.c (nb_plugin_files): Make it unsigned to match
6584         num_gt_files. Adjust other variables to avoid warnings.
6585         (main): Allocate an all zero lang_bitmap before each plugin file name
6586         to match regular file names.
6587
6588 2009-09-23  Richard Henderson  <rth@redhat.com>
6589
6590         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
6591         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
6592         static chain passed in memory.
6593         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
6594         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
6595         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
6596         STATIC_CHAIN_REGNUM defined.
6597
6598         * config/picochip/picochip-protos.h: s/class/klass/.
6599         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
6600         (picochip_static_chain): New.
6601         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
6602         (STATIC_CHAIN_INCOMING): Remove.
6603
6604         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
6605         (xtensa_static_chain): New.
6606         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
6607         (STATIC_CHAIN_INCOMING): Remove.
6608
6609 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
6610
6611         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
6612         * config/pa/pa-protos.h (function_value): Remove.
6613         * config/pa/pa.c (pa_function_value): Rename from function_value.
6614         Make static, add 'outgoing' argument.
6615         (TARGET_FUNCTION_VALUE): Define.
6616
6617 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
6618
6619         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
6620         instead of cfun->machine->is_leaf.
6621         * config/avr/avr.h (machine_function): Remove is_leaf field.
6622
6623 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
6624
6625         PR debug/41439
6626         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
6627         DW_OP_piece after DW_OP_stack_value, adjust size calculations
6628         for it, when DW_OP_stack_value and DW_OP_implicit_value has
6629         the same size, prefer DW_OP_stack_value.
6630         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
6631         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
6632
6633 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
6634
6635         PR debug/41353
6636         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
6637
6638 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
6639
6640         PR debug/41248
6641         * cfgexpand.c (convert_debug_memory_address): New.
6642         (expand_debug_expr): Convert base address and offset to the same
6643         mode.  Use it to convert addresses to other modes.  Accept
6644         ptr_mode addresses.
6645
6646 2009-09-23  Dodji Seketeli <dodji@redhat.com>
6647
6648         PR debug/41065
6649         * function.h (types_used_by_vars_hash): Declare new hash table.
6650         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
6651         equality and hash function for the hash table.
6652         (types_used_by_cur_var_decl): Declare a new global chained list.
6653         (types_used_by_var_decl_insert): Declare new function.
6654         * function.c (types_used_by_vars_hash): Define the hashtable ...
6655         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
6656         its equality and hash functions.
6657         (hash_types_used_by_vars_entry): New hash helper.
6658         (types_used_by_cur_var_decl): Define the global chained list.
6659         (used_types_insert): Update the list of types used by the global
6660         variable being parsed.
6661         (types_used_by_var_decl_insert): Define new function.
6662         * c-common.h (record_types_used_by_current_var_decl): Declare ...
6663         * c-common.c (record_types_used_by_current_var_decl): ... new
6664         function.
6665         * c-decl.c (finish_decl): Record the types used by the global
6666         variable declaration we've just parsed.
6667         * dwarf2out.c (premark_used_types): Insert a new line between
6668         comment and function.
6669         (premark_used_types_helper): Fix comment.
6670         (premark_types_used_by_global_vars_helper,
6671         premark_types_used_by_global_vars): New functions.
6672         (prune_unused_types): Do not prune types used by global variables.
6673
6674 2009-09-23  Richard Guenther  <rguenther@suse.de>
6675
6676         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
6677         produced for bigendian targets with promoted subregs.
6678
6679 2009-09-23  Richard Guenther  <rguenther@suse.de>
6680
6681         * value-prof.c (gimple_ic): Purge old EH edges only after building
6682         the new ones.
6683
6684 2009-09-23  Nick Clifton  <nickc@redhat.com>
6685
6686         * config/arc/arc.c (arc_trampoline_init): Fix typo.
6687
6688 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
6689
6690         PR bootstrap/41405
6691         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
6692
6693         PR bootstrap/41436
6694         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
6695         on non-nested functions.
6696
6697 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
6698             Jan Hubicka  <jh@suse.cz>
6699
6700         * dwarf2out.c (loc_list_plus_const): Only define if
6701         DWARF2_DEBUGGING_INFO.
6702         (address_of_int_loc_descriptor): Likewise.
6703
6704         PR debug/41411
6705         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
6706
6707 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
6708
6709         PR c/39779
6710         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
6711         constant is more than zero.
6712
6713 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
6714
6715         PR target/40473
6716         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
6717         call final to emit non-scheduled prologue, instead insert at entry.
6718
6719 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
6720             Joseph S. Myers  <joseph@codesourcery.com>
6721
6722         * doc/install.texi (*-*-freebsd*): Add proper format codes.
6723
6724 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
6725             Rafael Avila de Espindola  <espindola@google.com>
6726
6727         * gengtype.c (is_file_equal): New function.
6728         (close_output_files): Use is_file_equal. Free of->buf.
6729
6730 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
6731             Rafael Avila de Espindola  <espindola@google.com>
6732
6733         * gengtype.c (write_types, write_local): Add the output_header
6734         argument. Update all callers.
6735
6736 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
6737
6738         * dwarf2out.c (template_parameter_pack_die,
6739         gen_formal_parameter_pack_die ): New functions.
6740         (make_ith_pack_parameter_name): Remove this function.
6741         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
6742         DW_TAG_formal_parameter_pack.
6743         (gen_generic_params_dies): Represent each template parameter pack
6744         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
6745         represented by usual DW_TAG_template_*_parameter DIEs that are
6746         children of the DW_TAG_template_parameter_pack element DIE.
6747         (generic_parameter_die): This doesn't deal with parameter pack
6748         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
6749         of parameter pack DIEs.
6750         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
6751         in certain cases, e.g. for pack elements.
6752         (gen_formal_types_die, gen_decl_die): Adjust usage of
6753         gen_formal_parameter_die.
6754         (gen_subprogram_die): Represent each function parameter pack by a
6755         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
6756         represented by usual DW_TAG_formal_parameter DIEs that are children
6757         of the DW_TAG_formal_parameter_pack DIE. Remove references to
6758         ____builtin_va_alist decls as no part of the compiler uses those
6759         anymore.
6760         * langhooks.h (struct lang_hooks_for_decls): Add
6761         function_parm_expanded_from_pack_p, get_generic_function_decl
6762         and function_parameter_pack_p hooks.  Fix comment for
6763         get_innermost_generic_parms hook.
6764         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
6765         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
6766         macros and use them to initialize lang_hook.
6767
6768 2009-09-22  Richard Henderson  <rth@redhat.com>
6769
6770         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
6771         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
6772         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
6773         on TRAMPOLINE_TEMPLATE.
6774         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
6775         TRAMPOLINE_ADJUST_ADDRESS.
6776         * targhooks.c (default_asm_trampoline_template): Remove.
6777         (default_trampoline_adjust_address): Remove.
6778         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
6779         * targhooks.h: Update decls.
6780
6781 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6782
6783         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
6784         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
6785         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
6786
6787 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
6788
6789         PR debug/41295
6790         * reload1.c (reload): Reset debug insns with pseudos without
6791         equivalences.
6792
6793 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
6794
6795         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
6796         unconditional true for decimal float modes.
6797         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
6798         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
6799
6800 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
6801
6802         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
6803         Enable a new case for __FreeBSD__ >= 7.
6804         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
6805         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
6806         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
6807         and USE_LD_AS_NEEDED.
6808
6809         * doc/install.texi (*-*-freebsd*): Update target information.
6810
6811 2009-09-22  Richard Guenther  <rguenther@suse.de>
6812
6813         PR middle-end/41395
6814         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
6815         arrays really properly.
6816
6817 2009-09-22  Richard Henderson  <rth@redhat.com>
6818
6819         PR target/41246
6820         * target.h (struct gcc_target): Add asm_out.trampoline_template,
6821         calls.static_chain, calls.trampoline_init,
6822         calls.trampoline_adjust_address.
6823         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6824         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
6825         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6826         * builtins.c (expand_builtin_setjmp_receiver): Use
6827         targetm.calls.static_chain; only clobber registers.
6828         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
6829         set up memory attributes properly for the trampoline block.
6830         (expand_builtin_adjust_trampoline): Use
6831         targetm.calls.trampoline_adjust_address.
6832         * calls.c (prepare_call_address): Add fndecl argument.  Use
6833         targetm.calls.static_chain.
6834         * df-scan.c (df_need_static_chain_reg): Remove.
6835         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
6836         consolodate static chain handling.
6837         * doc/tm.texi: Document new hooks.
6838         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
6839         (init_emit_regs): Don't initialize them.
6840         * expr.h (prepare_call_address): Update decl.
6841         * final.c (profile_function): Use targetm.calls.static_chain.
6842         * function.c (expand_function_start): Likewise.
6843         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
6844         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
6845         only clobber registers.
6846         * targhooks.c (default_static_chain): New.
6847         (default_asm_trampoline_template, default_trampoline_init): New.
6848         (default_trampoline_adjust_address): New.
6849         * targhooks.h: Declare them.
6850         * varasm.c (assemble_trampoline_template): Use
6851         targetm.asm_out.trampoline_template.  Make the memory block const
6852         and set its size.
6853
6854         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
6855         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
6856         differences into the TARGET_ABI_OPEN_VMS code block.
6857         (TARGET_TRAMPOLINE_INIT): New.
6858         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
6859         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
6860         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
6861         (INITIALIZE_TRAMPOLINE): Remove.
6862
6863         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
6864         (TRAMPOLINE_TEMPLATE): Merge with ...
6865         (INITIALIZE_TRAMPOLINE): ... this and move ...
6866         * config/arc/arc.c (arc_trampoline_init): ... here.
6867         (TARGET_TRAMPOLINE_INIT): New.
6868
6869         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6870         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6871         (arm_asm_trampoline_template): New.
6872         (arm_trampoline_init, arm_trampoline_adjust_address): New.
6873         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
6874         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
6875         code to arm_asm_trampoline_template.
6876         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
6877         arm_trampoline_adjust_address.
6878         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
6879         adjust for target hook parameters.
6880
6881         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
6882         Remove.
6883
6884         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
6885         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
6886         (bfin_trampoline_init): Rename from initialize_trampoline;
6887         make static; update for target hook parameters.
6888         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
6889         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
6890         bfin_asm_trampoline_template.
6891         (INITIALIZE_TRAMPOLINE): Remove.
6892
6893         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6894         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
6895         cris_trampoline_init): New.
6896         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
6897         cris_asm_trampoline_template.
6898         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
6899         adjust for target hook parameters.
6900
6901         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
6902
6903         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6904         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
6905         fr30_trampoline_init): New.
6906         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
6907         fr30_asm_trampoline_template.
6908         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
6909         adjust for target hook parameters.
6910
6911         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
6912         (frv_trampoline_init): Rename from frv_initialize_trampoline;
6913         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
6914         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
6915         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
6916
6917         * config/h8300/h8300.c (h8300_trampoline_init): New.
6918         (TARGET_TRAMPOLINE_INIT): New.
6919         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
6920         to h8300_trampoline_init and adjust for hook parameters.
6921
6922         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
6923         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
6924         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
6925         make static; adjust for hook parameters.
6926         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
6927
6928         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6929         (TARGET_TRAMPOLINE_INIT): New.
6930         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
6931         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
6932         iq2000_asm_trampoline_template.
6933         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
6934         (TRAMPOLINE_CODE_SIZE): New.
6935         (TRAMPOLINE_SIZE): Use it.
6936         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
6937
6938         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
6939         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
6940         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
6941         adjust for hook parameters.
6942         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
6943
6944         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
6945         (m32r_trampoline_init): New.
6946         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
6947         m32r_trampoline_init.
6948
6949         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
6950         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
6951         make static; update for hook parameters.
6952         * config/m68hc11/m68hc11-protos.h: Update.
6953         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
6954
6955         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6956         (TARGET_TRAMPOLINE_INIT): New.
6957         (mcore_function_value): Fix typo.
6958         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
6959         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
6960         to mcore_asm_trampoline_template.
6961         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
6962
6963         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
6964         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
6965         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
6966         update for hook parameters.
6967         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
6968
6969         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6970         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6971         mips_trampoline_init): New.
6972         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
6973         mips_asm_trampoline_template.
6974         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
6975         update for hook parameters.
6976
6977         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6978         (TARGET_TRAMPOLINE_INIT): New.
6979         (mmix_trampoline_size): Remove.
6980         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
6981         make static.  Remove out-of-date tetra vs octa comment.
6982         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
6983         make static; update for hook parameters.
6984         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
6985         (INITIALIZE_TRAMPOLINE): Remove.
6986         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
6987         (TRAMPOLINE_ALIGNMENT): New.
6988         * gcc/config/mmix/mmix-protos.h: Update.
6989
6990         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6991         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6992         mn10300_trampoline_init): New.
6993         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
6994         mn10300_asm_trampoline_template.
6995         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
6996
6997         * config/moxie/moxie.c (moxie_static_chain,
6998         moxie_asm_trampoline_template, moxie_trampoline_init,
6999         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
7000         TARGET_TRAMPOLINE_INIT): New.
7001         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
7002         moxie_trampoline_init.
7003         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
7004         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
7005
7006         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7007         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
7008         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
7009         pa_trampoline_adjust_address): New.
7010         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
7011         pa_asm_trampoline_template.
7012         (TRAMPOLINE_ALIGNMENT): New.
7013         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
7014         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
7015         adjust for hook parameters.
7016         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
7017
7018         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
7019         (TARGET_TRAMPOLINE_INIT): New.
7020         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
7021         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
7022
7023         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
7024
7025         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
7026         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
7027         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
7028         make static; adjust parameters for the hook.
7029         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
7030
7031         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
7032         s390_trampoline_template; make static.
7033         (s390_trampoline_init): Rename from s390_initialize_trampoline;
7034         make static; adjust for target hook.
7035         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
7036         * config/s390/s390-protos.h: Remove trampoline decls.
7037         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
7038         (TRAMPOLINE_TEMPLATE): Remove.
7039         (TRAMPOLINE_ALIGNMENT): New.
7040
7041         * config/score/score-protos.h (score_initialize_trampoline): Remove.
7042         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7043         (TARGET_TRAMPOLINE_INIT): New.
7044         (score_asm_trampoline_template): New.
7045         (score_trampoline_init): Rename from score_initialize_trampoline;
7046         make static; adjust for hook parameters.
7047         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
7048         score[37]_asm_trampoline_template.
7049         (INITIALIZE_TRAMPOLINE): Remove.
7050         * config/score/score3.c (score3_asm_trampoline_template): New.
7051         (score3_trampoline_init): Rename from score3_initialize_trampoline;
7052         adjust for target hook.
7053         * config/score/score7.c (score7_asm_trampoline_template): New.
7054         (score7_trampoline_init): Rename from score7_initialize_trampoline;
7055         adjust for target hook.
7056         * config/score/score3.h, config/score/score7.h: Update.
7057
7058         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
7059         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
7060         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7061         (sh_trampoline_init): Rename from sh_initialize_trampoline;
7062         make static; adjust for target hook parameters.
7063         (sh_trampoline_adjust_address): New.
7064         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
7065         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
7066
7067         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
7068         (sparc32_initialize_trampoline): Rename from
7069         sparc_initialize_trampoline; make static; replace tramp parameter
7070         with m_tramp and update memory accesses.
7071         (sparc64_initialize_trampoline): Similarly.
7072         (sparc_trampoline_init): New.
7073         * config/sparc/sparc-protos.h: Remove trampoline decls.
7074         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
7075         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
7076
7077         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
7078         (array_to_constant): Make ARR parameter const.
7079         (spu_trampoline_init): Rename from spu_initialize_trampoline;
7080         make static; update for hook parameters.
7081         * config/spu/spu-protos.h: Update decls.
7082         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
7083
7084         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
7085         from xstormy16_initialize_trampoline; make static; update for
7086         hook parameters.
7087         (TARGET_TRAMPOLINE_INIT): New.
7088         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
7089
7090         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7091         (TARGET_TRAMPOLINE_INIT): New.
7092         (v850_can_eliminate): Make static.
7093         (v850_asm_trampoline_template, v850_trampoline_init): New.
7094         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
7095         v850_asm_trampoline_template.
7096         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
7097         and adjust for target hook parameters.
7098
7099         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7100         (TARGET_TRAMPOLINE_INIT): New.
7101         (vax_asm_trampoline_template, vax_trampoline_init): New.
7102         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
7103         vax_asm_trampoline_template.
7104         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
7105
7106         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7107         (TARGET_TRAMPOLINE_INIT): New.
7108         (xtensa_asm_trampoline_template): Rename from
7109         xtensa_trampoline_template; make static.
7110         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
7111         make static; update for hook parameters.
7112         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
7113         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
7114         (INITIALIZE_TRAMPOLINE): Remove.
7115
7116         * config/i386/i386.c (ix86_function_regparm): Do not issue an
7117         error for nested functions with regparm=3.
7118         (ix86_compute_frame_layout): Adjust frame pointer offset for
7119         ix86_static_chain_on_stack.
7120         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
7121         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
7122         don't reset to UNITS_PER_WORD.
7123         (ix86_emit_leave): Adjust ix86_cfa_state.
7124         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
7125         (ix86_static_chain): New.
7126         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
7127         make static; update for target hook parameters; use ix86_static_chain.
7128         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
7129         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
7130         (INITIALIZE_TRAMPOLINE): Remove.
7131         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
7132         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
7133         to the end.  Add static_chain_on_stack.
7134         (ix86_static_chain_on_stack): New.
7135
7136         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
7137         (m68k_output_mi_thunk): Don't use static_chain_rtx.
7138         (m68k_trampoline_init): New.
7139         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
7140         m68k_trampoline_init and adjust for hook parameters.
7141         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
7142         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
7143
7144 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
7145
7146         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
7147         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
7148
7149         * reload1.c (reload): Call wrap_constant when substituting
7150         reg for equiv inside of DEBUG_INSNs.
7151
7152         PR bootstrap/41405
7153         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
7154         add_call_src_coords_attributes, add_high_low_attributes,
7155         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
7156         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
7157         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
7158         when -gdwarf-2 -gstrict-dwarf.
7159         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
7160         -gdwarf-[23] -gstrict-dwarf.
7161         (address_of_int_loc_descriptor, loc_descriptor,
7162         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
7163         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
7164         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
7165
7166 2009-09-22  Richard Guenther  <rguenther@suse.de>
7167
7168         PR tree-optimization/41428
7169         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
7170         (ccp_finalize): Pass it to substitute_and_fold.
7171
7172 2009-09-22  Richard Guenther  <rguenther@suse.de>
7173
7174         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
7175         (substitute_and_fold): Adjust prototype.
7176         * tree-vrp.c (vrp_evaluate_conditional): Make static.
7177         (simplify_stmt_using_ranges): Likewise.
7178         (fold_predicate_in): Move here from tree-ssa-propagate.c.
7179         (vrp_fold_stmt): New function.
7180         (vrp_finalize): Pass it to substitute_and_fold.
7181         * tree-flow.h (vrp_evaluate_conditional): Remove.
7182         (simplify_stmt_using_ranges): Likewise.
7183         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
7184         * tree-ssa-copy.c (fini_copy_prop): Likewise.
7185         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
7186         member.
7187         (fold_predicate_in): Move to tree-vrp.c.
7188         (substitute_and_fold): Use the callback instead of calling into
7189         tree-vrp.c functions directly.
7190
7191 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
7192
7193         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
7194         comparison warning on rs6000.
7195
7196         PR middle-end/41429
7197         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
7198         GIMPLE_EH_MUST_NOT_THROW cleanup.
7199         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
7200
7201 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
7202
7203         PR middle-end/41260
7204         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
7205         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
7206         LIB_SPEC for darwin10 and later since it always uses the unwinder in
7207         libSystem which is derived from the gcc 4.2.1 unwinder.
7208
7209 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7210
7211         PR middle-end/41357
7212         * varasm.c (default_encode_section_info): Copy TLS model into
7213         sym_ref flags regardless of backend support for TLS, for all
7214         model types except TLS_MODEL_EMULATED.
7215
7216 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7217
7218         PR bootstrap/41404
7219         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
7220         we can handle it correctly.
7221
7222 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
7223
7224         * doc/install.texi (os2): Remove section.
7225
7226 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
7227
7228         * doc/standards.texi (Objective-C): Adjust two URLs.
7229
7230 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
7231
7232         * tree-tailcall.c (process_assignment): Don't check if a
7233         multiplication or an addition are already present.
7234         (find_tail_calls): Combine multiple additions and multiplications.
7235         (adjust_accumulator_values): Emit accumulators.
7236
7237 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
7238
7239         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
7240         xmm register restore.
7241
7242 2009-09-21  Jan Hubicka  <jh@suse.cz>
7243
7244         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
7245         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
7246         restore at the end.
7247
7248 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
7249
7250         * stor-layout.c (layout_type): Remove obsolete code.
7251
7252 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
7253
7254         PR middle-end/41395
7255         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
7256
7257 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7258
7259         PR middle-end/30789
7260         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
7261         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
7262         (fold_builtin_2, do_mpc_arg1): Update accordingly.
7263         * fold-const.c (const_binop): Likewise.
7264         * real.h (do_mpc_arg2): Update prototype.
7265
7266 2009-09-20  Jan Hubicka  <jh@suse.cz>
7267
7268         * dwarf2out.c (add_const_value_attribute): Return true if successful.
7269         (add_location_or_const_value_attribute): Rewrite using
7270         loc_list_from_tree.
7271         (tree_add_const_value_attribute): Return true if successful.
7272         (tree_add_const_value_attribute_for_decl): Likewise.
7273
7274         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
7275         (loc_descriptor): ... here;
7276         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7277         (cst_pool_loc_descr): Break out from ...; do not reffer constant
7278         pool items that was not marked for output.
7279         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
7280         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7281         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7282         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
7283         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
7284         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
7285         DW_OP_stack_value to get address of items that are not available
7286         as addresses.
7287         (dw_loc_list): Handle single element lists correctly.
7288
7289 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
7290             Pascal Obry  <obry@adacore.com>
7291
7292         * unwind-dw2-fde.c (classify_object_over_fdes):
7293         Cast the constant 1 to _Unwind_Ptr.
7294         (add_fdes): Likewise.
7295         (linear_search_fdes): Likewise.
7296
7297 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
7298
7299         * stor-layout.c (set_sizetype): Avoid useless type copy.
7300
7301 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
7302
7303         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
7304         feature check.
7305         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
7306         * configure, config.in: Regenerate.
7307         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
7308         DW_EH_PE_absptr.
7309         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
7310         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
7311         for global data if the output could be used in a shared library.
7312         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
7313         to 0 if TARGET_WRITABLE_EH_FRAME.
7314
7315 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
7316
7317         PR rtl-optimization/39886
7318         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
7319         just when insn is equal to BB_END (bb).
7320
7321 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
7322
7323         * config/mips/mips.opt (mrelax-pic-calls): New option.
7324         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
7325         the file.
7326         (mips_unspec_call): Change "unspec_call" expander into this.
7327         (mips_strip_unspec_call): New function.
7328         (mips_got_load): Call mips_unspec_call instead of
7329         gen_unspec_call<mode>.
7330         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
7331         MIPS_CALL.
7332         (mips_cfg_in_reorg): New function.
7333         (mips16_lay_out_constants): Use it to decide whether to call
7334         CFG-aware insn splitting.
7335         (r10k_insert_cache_barriers): Move CFG set-up code from here to
7336         mips_reorg.  Move DF set-up code from here ...
7337         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
7338         from here.
7339         (mips_reorg): Call mips_df_reorg instead of
7340         r10k_insert_cache_barriers.  Move CFG set-up code here from
7341         r10k_insert_cache_barriers.
7342         (mips_call_expr_from_insn): New function.
7343         (mips_pic_call_symbol_from_set): Likewise.
7344         (mips_find_pic_call_symbol): Likewise.
7345         (mips_annotate_pic_call_expr): Likewise.
7346         (mips_get_pic_call_symbol): Likewise.
7347         (mips_annotate_pic_calls): Likewise.
7348         (mips_override_options): Disable -mrelax-pic-calls unless PIC
7349         calls are used.
7350         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
7351         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
7352         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
7353         directive.
7354         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
7355         (unspec_call<mode>): Remove it.
7356         (sibcall_internal, sibcall_value_internal,
7357         sibcall_value_multiple_internal, call_internal, call_split,
7358         call_value_internal, call_value_split,
7359         call_value_multiple_internal, call_value_multiple_split): Pass
7360         SIZE_OPNO to MIPS_CALL.
7361         (call_internal_direct, call_direct_split,
7362         call_value_internal_direct, call_value_direct_split): Pass -1 as
7363         SIZE_OPNO to MIPS_CALL.
7364         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
7365         * configure: Regenerate.
7366         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
7367         and -mno-relax-pic-calls.
7368         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
7369
7370 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7371
7372         PR bootstrap/35619
7373         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
7374         in the directory this rule is called from, rather than the
7375         toplevel 'gcc' directory, to fix in-tree build.
7376
7377 2009-09-19  Chris Demetriou  <cgd@google.com>
7378
7379         PR preprocessor/28435:
7380         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
7381         to cpplib that the preprocessor output is needed.
7382
7383 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
7384
7385         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
7386         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
7387         *return_and_restore_fpregs_<mode>,
7388         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
7389
7390         PR bootstrap/41397
7391         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
7392         instead of assuming it has always a REG inside of it.
7393
7394 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
7395
7396         * config/freebsd.h: Update comment on types.
7397         (WINT_TYPE): Define.
7398
7399 2009-09-18  Jason Merrill  <jason@redhat.com>
7400
7401         * c.opt: Add -fno-deduce-init-list.
7402
7403 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
7404
7405         * value-prof.c (interesting_stringop_to_profile_p): Added output
7406         argument to indicate which parameter is the size parameter.
7407         * value-prof.c (gimple_stringop_fixed_value): Use
7408         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
7409         * value-prof.c (gimple_stringops_transform): Update call sites to
7410         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
7411
7412 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
7413
7414         PR target/38288
7415         From David Binderman <dcb314@hotmail.com>:
7416         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
7417         local variable f.  Remove stale comments.
7418         (ix86_compute_frame_layout): Remove useless local variable total_size.
7419         Remove #if 0'd code.
7420         (legitimate_address_p): Remove useless local variables
7421         reason_rtx and reason.
7422         (ix86_split_copysign_const): Remove useless local variable op1.
7423         (scale_counter): Remove useless local variable piece_size_mask.
7424
7425 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
7426
7427         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
7428         output decl.
7429
7430 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
7431
7432         PR target/40913
7433         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
7434
7435 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
7436
7437         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
7438         TYPE_STUB_DECL.
7439
7440 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
7441
7442         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
7443         DW_OP_implicit_value even without dwarf_version 4.
7444
7445 2009-09-17  Jan Hubicka  <jh@suse.cz>
7446
7447         * dwarf2out.c: Include tree-pass.h and gimple.h.
7448         (loc_list_plus_const): New function.
7449         (loc_descriptor_from_tree_1): Rename to ...
7450         (loc_descriptor_from_tree): ... remove original.
7451         (loc_list_from_tree): New function.
7452         (add_AT_location_description): Accept location list.
7453         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
7454         (concatn_mem_loc_descriptor): Remove.
7455         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
7456         returning NULL.
7457         (secname_for_decl): Move up.
7458         (hidden_reference_p): New function; break out from ...
7459         (loc_by_refernece): ... here; move up.
7460         (dw_loc_list): New function.
7461         (single_element_loc_list): New function.
7462         (single_element_loc_list_p): New function.
7463         (add_loc_descr_to_each): New function.
7464         (add_loc_list): New function.
7465         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
7466         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
7467         add diagnostics why expansion failed.
7468         (add_location_or_const_value_attribute): Support location lists.
7469         (add_bound_info): Likewise.
7470         (descr_info_loc): Update call of loc_descriptor_from_tree.
7471         (gen_variable_die): Work on location lists.
7472         * final.c (pass_final): Add dump file.
7473         * Makefile.in (dwarf2out.o): Add new dependencies.
7474
7475 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
7476
7477         PR c/41049
7478         * real.c decimal_from_integer, decimal_integer_string): New.
7479         (real_from_integer): Use them as special case for decimal float.
7480         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
7481         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
7482         Do not append zero after the decimal point in string to convert.
7483
7484 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
7485
7486         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
7487         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
7488
7489 2009-09-17  Martin Jambor  <mjambor@suse.cz>
7490
7491         * common.opt (fipa-sra): New switch.
7492         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
7493         * timevar.def (TV_IPA_SRA): New timevar.
7494         * params.def (ipa-sra-ptr-growth-factor): New parameter.
7495         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
7496         * tree-sra.c: Include cgraph.c.
7497         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
7498         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
7499         and grp_not_necessarilly_dereferenced.
7500         (func_param_count): New variable.
7501         (encountered_apply_args): New variable.
7502         (bb_dereferences): New variable.
7503         (final_bbs): New variable.
7504         (no_accesses_representant): New variable.
7505         (no_accesses_p): New function.
7506         (dump_access): Dump the new fields.
7507         (sra_initialize): Set encountered_apply_args to false.
7508         (get_ssa_base_param): New function.
7509         (mark_parm_dereference): New function.
7510         (create_access): Caring for INIDRECT_REFs and different handling of
7511         varialble length accesses in early IPA SRA.  Store the stmt - a new
7512         parameter - to the new access.
7513         (build_access_from_expr_1): New parameter stmt, passed to
7514         create_access.  Handle INDIRECT_REFs.
7515         (build_access_from_expr): Pass the current statement to
7516         build_access_from_expr_1.
7517         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
7518         passes.
7519         (build_accesses_from_assign): Pass the current statement to
7520         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
7521         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
7522         final_bbs when necessary.  Check for calls to __builtin_apply_args.
7523         Fixup EH info if anythng was changed.
7524         (is_unused_scalar_param): New function.
7525         (ptr_parm_has_direct_uses): New function.
7526         (find_param_candidates): New function.
7527         (mark_maybe_modified): New function.
7528         (analyze_modified_params): New function.
7529         (propagate_dereference_distances): New function.
7530         (dump_dereferences_table): New function.
7531         (analyze_caller_dereference_legality): New function.
7532         (unmodified_by_ref_scalar_representative): New function.
7533         (splice_param_accesses): New function.
7534         (decide_one_param_reduction): New function.
7535         (enum ipa_splicing_result): New type.
7536         (splice_all_param_accesses): New function.
7537         (get_param_index): New function.
7538         (turn_representatives_into_adjustments): New function.
7539         (analyze_all_param_acesses): New function.
7540         (get_replaced_param_substitute): New function.
7541         (get_adjustment_for_base): New function.
7542         (replace_removed_params_ssa_names): New function.
7543         (sra_ipa_reset_debug_stmts): New function.
7544         (sra_ipa_modify_expr): New function.
7545         (sra_ipa_modify_assign): New function.
7546         (convert_callers): New function.
7547         (modify_function): New function.
7548         (ipa_sra_preliminary_function_checks): New function.
7549         (ipa_early_sra): New function.
7550         (ipa_early_sra_gate): New function.
7551         (pass_early_ipa_sra): New variable.
7552         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
7553
7554 2009-09-17  Michael Matz  <matz@suse.de>
7555
7556         PR middle-end/41347
7557         * tree.c (build_type_attribute_qual_variant): Export.
7558         * tree.h (build_type_attribute_qual_variant): Declare.
7559         * tree-inline.c (remap_type_1): Use it to build variants with
7560         the original qualifiers and attributes.
7561
7562 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7563
7564         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
7565         without a fallthrough edge.
7566
7567 2009-09-16  DJ Delorie  <dj@redhat.com>
7568
7569         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
7570         chip and ignore the "fast_interrupt" attribute if so.
7571
7572 2009-09-16  Richard Henderson  <rth@redhat.com>
7573
7574         PR middle-end/41360
7575         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
7576         barrier fix.
7577
7578 2009-09-16  Richard Henderson  <rth@redhat.com>
7579
7580         PR target/41246
7581         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
7582         is set only if DECL_NO_STATIC_CHAIN is unset.
7583         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
7584         (FOR_EACH_NEST_INFO): New.
7585         (walk_all_functions): Use it.
7586         (finalize_nesting_tree): Likewise.
7587         (unnest_nesting_tree): Likewise.
7588         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
7589         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
7590         (convert_gimple_call): Early out if gimple_call_chain already set.
7591         (convert_all_function_calls): Iterate until no new functions
7592         require a static chain.
7593         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
7594         when building a trampoline.  Use dump_function_to_file instead
7595         of dump_function.
7596         (lower_nested_functions): Open dump_file.  Validate that decls
7597         that have DECL_NO_STATIC_CHAIN from the front end don't have that
7598         bit reset by this pass.
7599
7600 2009-09-16  Michael Matz  <matz@suse.de>
7601
7602         PR fortran/41212
7603         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
7604         shorten decl_common_unused.
7605         (DECL_RESTRICTED_P): New accessor.
7606         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
7607         to disambiguate marked decls and restrict pointers.
7608
7609 2009-09-16  Richard Henderson  <rth@redhat.com>
7610
7611         PR middle-end/41360
7612         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
7613
7614 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
7615
7616         * integrate.c (set_block_abstract_flags): Call
7617         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
7618
7619 2009-09-16  Richard Guenther  <rguenther@suse.de>
7620
7621         PR middle-end/34011
7622         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
7623         as non-aliased.
7624
7625 2009-09-16  DJ Delorie  <dj@redhat.com>
7626             Kaz Kojima  <kkojima@gcc.gnu.org>
7627
7628         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
7629         (sh_expand_prologue): Update calls to output_stack_adjust.
7630         (sh_expand_epilogue): Likewise.
7631
7632 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
7633
7634         PR bootstrap/41349
7635         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
7636         trying to limit the extent of searches in the insn stream.
7637
7638 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
7639             Jakub Jelinek  <jakub@redhat.com>
7640
7641         PR target/41175
7642         PR target/40677
7643         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
7644         problem.
7645         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
7646         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
7647         (rs6000_savres_strategy): Always save FP registers inline if the
7648         target doesn't support hardware double-precision.  Set the above
7649         bits in return value when needed.
7650         (rs6000_savres_routine_sym): Fix computation for cache selector.
7651         Mark the generated symbol as a function.  Rename exitp argument to
7652         lr.  Move code for determining the name of the symbol...
7653         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
7654         getting the names right on AIX and 64-bit Linux.
7655         (savres_routine_name): New variable.
7656         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
7657         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
7658         on what the target routine uses as a base register.  If savep && lr
7659         describe saving of r0 into memory slot.
7660         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
7661         line calls for AIX ABI.
7662         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
7663         determine FP save/restore functions.
7664         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
7665         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
7666         gen_addsi3.
7667         (rs6000_emit_epilogue): Adjust computation of restore_lr.
7668         Duplicate restoration of LR and execute the appropriate one
7669         depending on whether GPRs are being restored inline.  Set r11 from
7670         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
7671         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
7672         Fix out of line calls for AIX ABI.
7673         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
7674         New insn.
7675         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
7676         register 11.
7677         (*restore_gpregs_spe): Likewise.
7678         (*return_and_restore_gpregs_spe): Likewise.
7679         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
7680         Define to empty string unconditionally.
7681         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
7682         Define to empty string unconditionally.
7683         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
7684         !TARGET_64BIT.
7685
7686 2009-09-15  Jan Hubicka  <jh@suse.cz>
7687
7688         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
7689         * params.def (inline-insns-auto): Likewise.
7690
7691 2009-09-15  Martin Jambor  <mjambor@suse.cz>
7692
7693         * ipa-inline.c (estimate_function_body_sizes): Dump info about
7694         individual statements only at TDF_DETAILS dump level.  Format
7695         source for 80 characters per line.
7696
7697 2009-09-15  Christian Bruel  <christian.bruel@st.com>
7698
7699         * regrename.c (do_replace): Update REG_DEAD notes.
7700
7701 2009-09-15  Revital Eres  <eres@il.ibm.com>
7702
7703         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
7704         * targhooks.c (default_builtin_support_vector_misalignment):
7705         New builtin function.
7706         * targhooks.h (default_builtin_support_vector_misalignment):
7707         Declare.
7708         * target.h (builtin_support_vector_misalignment):
7709         New field in struct gcc_target.
7710         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
7711         new builtin function.
7712         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
7713         Define.
7714         * config/rs6000/rs6000.c
7715         (rs6000_builtin_support_vector_misalignment): New function.
7716         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
7717
7718 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
7719
7720         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
7721         instead of INSN_P.
7722         (bfin_optimize_loop): Likewise.
7723         (bfin_gen_bundles): Likewise.
7724         (workaround_speculation): Likewise.
7725         (find_load): Return NULL_RTX for debug_insn.
7726
7727 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
7728
7729         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
7730         (sminsf3): Ditto.
7731
7732 2009-09-14  DJ Delorie  <dj@redhat.com>
7733
7734         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
7735         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
7736         VLIW mode.
7737
7738 2009-09-14  Richard Henderson  <rth@redhat.com>
7739             Jakub Jelinek  <jakub@redhat.com>
7740
7741         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
7742         * cfgbuild.c (make_edges): Handle asm goto.
7743         * cfglayout.c (fixup_reorder_chain): Likewise.
7744         * cfgrtl.c (patch_jump_insn): Likewise.
7745         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
7746         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
7747         (gimple_build_asm_vec): Add and use labels parameter.
7748         (gimple_build_asm): Remove.
7749         (walk_gimple_asm): Walk labels too.
7750         * gimple.def (GIMPLE_ASM): Update docs.
7751         * gimple.h: Update decls.
7752         (struct gimple_statement_asm): Change nc to use unsigned char;
7753         add nl member.
7754         (gimple_asm_nlabels): New.
7755         (gimple_asm_label_op, gimple_asm_set_label_op): New.
7756         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
7757         into gimple_build_asm_vec.
7758         * jump.c (mark_jump_label_asm): New.
7759         (mark_jump_label): Use it.
7760         (redirect_jump_1): Handle asm goto.
7761         (invert_jump_1): Soft fail if X is null.
7762         * recog.c (extract_asm_operands): New.
7763         (asm_noperands): Use it; handle asm labels.
7764         (decode_asm_operands): Use extract_asm_operands.
7765         (asm_operand_ok): Properly handle empty string.
7766         * reg-stack.c (get_asm_operands_in_out): Rename from
7767         get_asm_operand_n_inputs; use extract_asm_operands; return both
7768         inputs and outputs by reference; update all callers.
7769         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
7770         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
7771         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
7772         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
7773         (extract_asm_operands): Declare.
7774         * stmt.c (expand_asm_operands): Add and use labels parameter.
7775         (check_unique_operand_names): Likewise.
7776         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
7777         (expand_asm_stmt): Handle asm labels.
7778         * tree-cfg.c (make_gimple_asm_edges): New.
7779         (make_edges): Use it.
7780         (cleanup_dead_labels): Handle asm labels.
7781         (is_ctrl_altering_stmt): Likewise.
7782         (gimple_redirect_edge_and_branch): Likewise.
7783         * tree.def (ASM_EXPR): Add 5th operand.
7784         * tree.h (ASM_LABELS): New.
7785         (resolve_asm_operand_names): Update decl.
7786
7787         * c-parser.c (c_parser_asm_statement): Parse asm goto.
7788         (c_parser_asm_goto_operands): New.
7789         * c-tree.h (build_asm_expr): Update decl.
7790         * c-typeck.c (build_asm_expr): Add and use labels parameter.
7791         * doc/extend.texi: Document asm goto.
7792
7793 2009-09-14  Richard Henderson  <rth@redhat.com>
7794
7795         * except.h: Update declarations.
7796         (struct pointer_map_t): Forward declare.
7797         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
7798         (struct eh_landing_pad_d, eh_landing_pad): New.
7799         (struct eh_catch_d, eh_catch): New.
7800         (struct eh_region_d): Remove next_region_sharing_label, aka,
7801         label, tree_label, landing_pad, post_landing_pad, resume,
7802         may_contain_throw.  Rename region_number to index.  Remove
7803         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
7804         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
7805         (VEC(eh_landing_pad,gc)): New.
7806         (struct eh_status): Remove last_region_number.  Add lp_array,
7807         throw_stmt_table, ttype_data, ehspec_data.
7808         (ehr_next, FOR_ALL_EH_REGION_AT): New.
7809         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
7810         * except.c (lang_protect_cleanup_actions): Return tree.
7811         (struct ehl_map_entry): Remove.
7812         (init_eh_for_function): Push zero entries for region and lp_array.
7813         (gen_eh_region): Add to region_array immediately.
7814         (gen_eh_region_catch): Operate on eh_catch objects.
7815         (gen_eh_landing_pad): New.
7816         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
7817         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
7818         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
7819         (get_eh_landing_pad_from_number_fn): New.
7820         (get_eh_landing_pad_from_number): New.
7821         (get_eh_region_from_lp_number_fn): New.
7822         (get_eh_region_from_lp_number): New.
7823         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
7824         (get_exception_pointer, get_exception_filter): Remove.
7825         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
7826         (current_function_has_exception_handlers): Simplify.
7827         (bring_to_root, eh_region_replaceable_by_p): Remove.
7828         (replace_region, hash_type_list, hash_eh_region): Remove.
7829         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
7830         (label_to_region_map, num_eh_regions): Remove.
7831         (get_next_region_sharing_label, must_not_throw_labels): Remove.
7832         (find_exception_handler_labels): Remove.
7833         (duplicate_eh_regions_0, find_prev_try): Remove.
7834         (struct duplicate_eh_regions_data): New.
7835         (duplicate_eh_regions_1): Rewrite.
7836         (duplicate_eh_regions): Return a pointer map instead of an
7837         integer offset.
7838         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
7839         (redirect_eh_edge_to_label): Remove.
7840         (eh_region_outermost): Rewrite using eh_region pointers
7841         instead of integers.
7842         (add_ttypes_entry): Update for ttype_data move to eh_status.
7843         (add_ehspec_entry): Rewrite with VEC instead of varray.
7844         (assign_filter_values): Likewise.  Export.
7845         (build_post_landing_pads, connect_post_landing_pads): Remove.
7846         (dw2_build_landing_pads): Rewrite to use lp_array.
7847         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
7848         (sjlj_assign_call_site_values): Rewrite to use lp_array.
7849         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
7850         (sjlj_mark_call_sites): Update for landing pad numbers.
7851         (finish_eh_generation): Rewrite.
7852         (gate_handle_eh): Do nothing for no eh tree.
7853         (pass_rtl_eh): Move up near finish_eh_generation.
7854         (remove_eh_landing_pad): New.
7855         (remove_eh_handler): Export.
7856         (remove_eh_region, remove_eh_handler_and_replace): Remove.
7857         (for_each_eh_label): Rewrite to use lp_array.
7858         (make_reg_eh_region_note): New.
7859         (make_reg_eh_region_note_nothrow_nononlocal): New.
7860         (insn_could_throw_p): New.
7861         (copy_reg_eh_region_note_forward): New.
7862         (copy_reg_eh_region_note_backward): New.
7863         (check_handled, add_reachable_handler): Remove.
7864         (reachable_next_level, foreach_reachable_handler): Remove.
7865         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
7866         (get_eh_region_and_lp_from_rtx): New.
7867         (get_eh_region_from_rtx): New.
7868         (can_throw_internal_1, can_throw_external_1): Remove.
7869         (can_throw_internal): Use get_eh_region_from_rtx.
7870         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
7871         (insn_nothrow_p, can_nonlocal_goto): New.
7872         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
7873         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
7874         (add_action_record): Use VEC not varray.
7875         (collect_one_action_chain): Update for eh_region changes.
7876         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
7877         Use get_eh_region_and_lp_from_rtx.
7878         (gate_convert_to_eh_region_ranges): New.
7879         (pass_convert_to_eh_region_ranges): Use it.
7880         (push_uleb128, push_sleb128): Use VEC not varray.
7881         (output_one_function_exception_table): Likewise.
7882         (dump_eh_tree): Update for eh_region changes.
7883         (verify_eh_tree): Likewise.
7884         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
7885         * tree-eh.c: Include target.h.
7886         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
7887         Don't disallow GIMPLE_RESX; adjust argument check.
7888         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
7889         (record_stmt_eh_region): Update for landing pad numbers;
7890         generate a landing pad if necessary.
7891         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
7892         (remove_stmt_from_eh_lp_fn): Similarly.
7893         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
7894         Update for lp numbers; don't special case missing throw_stmt_table.
7895         (lookup_expr_eh_lp): Similarly.
7896         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
7897         (eh_seq, eh_region_may_contain_throw): New.
7898         (struct leh_state): Add ehp_region.
7899         (struct leh_tf_state): Remove eh_label.
7900         (emit_post_landing_pad): New.
7901         (emit_resx, emit_eh_dispatch): New.
7902         (note_eh_region_may_contain_throw): New.
7903         (frob_into_branch_around): Take eh_region not eh label;
7904         emit eh code into eh_seq.
7905         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
7906         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
7907         lower_eh_must_not_throw.  Emit code to eh_seq.
7908         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
7909         (lower_try_finally_onedest): Likewise.
7910         (lower_try_finally_copy): Likewise.
7911         (lower_try_finally_switch): Likewise.
7912         (lower_try_finally): Initialize ehp_region.
7913         (lower_catch): Update for eh_catch objects.
7914         (lower_eh_filter): Don't handle must_not_throw.
7915         (lower_eh_must_not_throw): New.
7916         (lower_cleanup): Don't set eh_label.
7917         (lower_eh_constructs_2): Resolve eh builtins.
7918         Handle GIMPLE_EH_MUST_NOT_THROW.
7919         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
7920         Add eh_seq to the end of the function body.
7921         (make_eh_dispatch_edges): New.
7922         (make_eh_edge): Remove.
7923         (make_eh_edges): Simplify for landing pads.
7924         (redirect_eh_edge_1): New.
7925         (redirect_eh_edge): Use it.
7926         (redirect_eh_dispatch_edge): New.
7927         (stmt_could_throw_p): Use a switch.  Allow RESX.
7928         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
7929         (stmt_can_throw_internal): Likewise.
7930         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
7931         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
7932         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
7933         (gate_refactor_eh): New.
7934         (pass_refactor_eh): Use it.
7935         (lower_resx, execute_lower_resx, pass_lower_resx): New.
7936         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
7937         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
7938         (remove_unreachable_handlers): Rename from
7939         tree_remove_unreachable_handlers; rewrite for landing pads;
7940         call remove_eh_handler directly.
7941         (remove_unreachable_handlers_no_lp): New.
7942         (unsplit_eh, unsplit_all_eh): New.
7943         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
7944         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
7945         (cleanup_empty_eh_unsplit): New.
7946         (cleanup_empty_eh): Rewrite.
7947         (cleanup_all_empty_eh): New.
7948         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
7949         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
7950         (gate_cleanup_eh): New.
7951         (pass_cleanup_eh): Use it.
7952         (verify_eh_edges): Move later in file.  Expect one EH edge.
7953         (verify_eh_dispatch_edge): New.
7954
7955         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
7956         (gtype-desc.o): Add TARGET_H.
7957         (tree.o): Use EXCEPT_H, not except.h.
7958         (cfgbuild.o): Add EXPR_H.
7959         (GTFILES): Add vecprim.h.
7960         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
7961         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
7962         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
7963         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
7964         * calls.c (emit_call_1): Use make_reg_eh_region_note.
7965         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
7966         calls to can_throw_internal.
7967         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
7968         (make_edges): Don't handle RESX; use can_nonlocal_goto.
7969         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
7970         (expand_gimple_stmt): Use make_reg_eh_region_note.
7971         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
7972         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
7973         or find_exception_handler_labels.
7974         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
7975         there is exacly one EH edge.  Use can_nonlocal_goto and
7976         can_throw_internal.
7977         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
7978         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
7979         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
7980         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
7981         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
7982         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
7983         * dse.c (scan_insn): Use insn_could_throw_p.
7984         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
7985         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
7986         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
7987         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
7988         EXC_PTR_EXPR or FILTER_EXPR.
7989         (tree_expr_nonzero_warnv_p): Likewise.
7990         * function.h: Include vecprim.h, not varray.h
7991         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
7992         move ttype_data and ehspec_data members to struct eh_status; change
7993         action_record_data member to a VEC.
7994         * gcse.c (hash_scan_set): Use can_throw_internal.
7995         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
7996         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
7997         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
7998         (block_may_fallthru): Don't handle RESX_EXPR.
7999         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
8000         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
8001         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
8002         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
8003         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
8004         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
8005         (gimple_size): Likewise.
8006         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
8007         (gimple_build_resx): Use gimple_build_with_ops.
8008         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
8009         (is_gimple_val): Likewise.
8010         (is_gimple_stmt): Remove RESX_EXPR.
8011         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
8012         (GIMPLE_RESX): Reorder with other EH constructs.
8013         * gimple.h (struct gimple_statement_eh_mnt): New.
8014         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
8015         (gimple_eh_filter_must_not_throw): Remove.
8016         (gimple_eh_filter_set_must_not_throw): Remove.
8017         (gimple_eh_must_not_throw_fndecl): New.
8018         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
8019         (is_gimple_resx): New.
8020         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
8021         Don't copy EH_FILTER_MUST_NOT_THROW.
8022         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
8023         * ipa-inline.c (estimate_function_body_sizes): Don't try to
8024         handle must_not_throw_labels specially.
8025         * ipa-pure-const.c (check_call): Update debug statement for LP.
8026         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
8027         * ipa-utils.c (get_base_var): Likewise.
8028         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
8029         * lower-subreg.c (move_eh_region_note): Remove.
8030         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
8031         * omp-low.c (new_omp_context): Update for eh_lp_nr.
8032         (create_task_copyfn): Likewise.
8033         (maybe_catch_exception): Use gimple_build_eh_filter.
8034         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
8035         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
8036         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
8037         and pass_lower_resx.
8038         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
8039         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
8040         can_throw_internal, can_nonlocal_goto.
8041         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
8042         copy_reg_eh_region_note_forward.
8043         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
8044         (emit_output_reload_insns): Likewise.
8045         (copy_eh_notes): Remove.
8046         * rtl.def (RESX): Remove.
8047         * rtl.h: Update declarations.
8048         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
8049         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
8050         (update_eh_label): Remove.
8051         (cleanup_dead_labels_eh): New.
8052         (cleanup_deal_labels): Use it instead of update_eh_label.
8053         (gimple_merge_blocks): Update landing pad data structure when
8054         removing a landing pad label.
8055         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
8056         test; handle GIMPLE_EH_MUST_NOT_THROW.
8057         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
8058         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
8059         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
8060         (verify_stmt): Likewise.  Verify landing pads.
8061         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
8062         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
8063         (struct move_stmt_d): Add eh_map.
8064         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
8065         (move_stmt_r): Remap eh region numbers in builtin calls,
8066         resx and eh_dispatch.
8067         (move_block_to_fn): Remove eh_offset parameter.  Use
8068         maybe_duplicate_eh_stmt_fn.
8069         (find_outermost_region_in_block): Operate on eh_region pointers
8070         instead of region numbers.
8071         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
8072         duplicate_eh_regions.
8073         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
8074         test earlier.  Disallow EH landing pads.
8075         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
8076         * tree-flow.h: Update declarations.
8077         (struct tree_ann_common_d): Replace rn with lp_nr.
8078         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
8079         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
8080         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
8081         resx and eh_dispatch.
8082         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
8083         (copy_edges_for_bb): Use make_eh_dispatch_edges.
8084         (copy_cfg_body): Expect eh_map instead of eh_region_offset
8085         from duplicate_eh_regions.
8086         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
8087         update RESX; handle EH_DISPATCH.
8088         (expand_call_inline): Set eh_lp_nr, not eh_region.
8089         (maybe_inline_call_in_expr): Likewise.
8090         * tree-inline.h (struct copy_body_data): Replace eh_region with
8091         eh_lp_nr, eh_region_offset with eh_map.
8092         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
8093         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
8094         * tree-pretty-print.c (dump_generic_node): Don't handle
8095         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
8096         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
8097         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
8098         EXC_PTR_EXPR, FILTER_EXPR.
8099         * tree-ssa-operands.c (get_expr_operands): Likewise.
8100         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
8101         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
8102         (ao_ref_init_from_vn_reference): Likewise.
8103         * tree-ssa-sink.c (statement_sink_location): Likewise.
8104         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
8105         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
8106         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
8107         EXC_PTR_EXPR, FILTER_EXPR.
8108         (is_exception_related): Remove.
8109         (compute_avail): Don't call it.
8110         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
8111         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
8112         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
8113         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
8114         Build EH builtins.
8115         (build_resx): Remove.
8116         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
8117         * tree.h: Update declarations.
8118         (EH_FILTER_MUST_NOT_THROW): Remove.
8119         (struct tree_label_decl): Add eh_landing_pad_nr.
8120         (EH_LANDING_PAD_NR): New.
8121         * value-prof.c (gimple_ic): Tidy variable names.  Update for
8122         landing pad numbers.
8123         (gimple_stringop_fixed_value): Tidy variable names.  Assert
8124         that neither call stmt can throw.
8125         * vecprim.h (uchar): New.
8126         (VEC(uchar,heap), VEC(uchar,gc)): New.
8127
8128         * c-common.c (c_define_builtins): Update call to
8129         build_common_builtin_nodes.
8130         * c-parser.c (c_parse_file): Don't call
8131         default_init_unwind_resume_libfunc.
8132
8133 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
8134
8135         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
8136         (mips_cprestore_address_p): Likewise.
8137         (mips_save_gp_to_cprestore_slot): Likewise.
8138         (mips_restore_gp): Rename to...
8139         (mips_restore_gp_from_cprestore_slot): ...this.
8140         (mips_must_initialize_gp_p): Declare.
8141         (mips_emit_save_slot_move): Likewise.
8142         (mips_output_load_label): Return nothing.
8143         (mips_eh_uses): Declare.
8144         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
8145         (TARGET_CPRESTORE_DIRECTIVE): New macro.
8146         (TARGET_ABSOLUTE_JUMPS): Likewise.
8147         (EH_USES): Likewise.
8148         (FIRST_PSEUDO_REGISTER): Update comment.
8149         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
8150         (MIPS_CALL): ...here.
8151         (REGISTER_NAMES): Add $cprestore.
8152         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
8153         Add load_label_length, has_inflexible_gp_insn_p,
8154         has_flexible_gp_insn_p, must_initialize_gp_p and
8155         must_restore_gp_when_clobbered_p.
8156         (mips_expand_call): Don't generate split instructions here.
8157         (mips_split_call): Update the call to mips_restore_gp after
8158         the above name change.
8159         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
8160         (mips_find_gp_ref): New function.
8161         (mips_insn_has_inflexible_gp_ref_p): Likewise.
8162         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
8163         (mips_insn_has_flexible_gp_ref_p): Likewise.
8164         (mips_cfun_has_flexible_gp_ref_p): Likewise.
8165         (mips_function_has_gp_insn): Delete.
8166         (mips_global_pointer): Drop the df_regs_ever_live_p check.
8167         Use the new functions above.  Only return INVALID_REGNUM
8168         for TARGET_ABSOLUTE_JUMPS.
8169         (mips_must_initialize_gp_p): New function.
8170         (mips_get_cprestore_base_and_offset): New function, extracted from...
8171         (mips_cprestore_slot): ...here.  Take a bool parameter.
8172         (mips_cfun_has_cprestore_slot_p): New function.
8173         (mips_cprestore_address_p): Likewise.
8174         (mips_save_gp_to_cprestore_slot): Likewise.
8175         (mips_restore_gp): Rename to...
8176         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
8177         epilogue_completed.  Update the call to mips_cprestore_slot.
8178         Test cfun->machine->must_restore_gp_when_clobbered_p.
8179         (mips_direct_save_slot_move_p): New function.
8180         (mips_emit_save_slot_move): Likewise.
8181         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
8182         of cfun->machine->global_pointer.
8183         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
8184         (mips_save_reg): Use mips_emit_save_slot_move.
8185         (mips_expand_prologue): Set must_initialize_gp_p.
8186         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
8187         for all cprestore saves.  Emit a use_cprestore instruction after
8188         setting up the cprestore slot.
8189         (mips_restore_reg): Use mips_emit_save_slot_move.
8190         (mips_process_load_label): New function.
8191         (mips_load_label_length): Likewise.
8192         (mips_output_load_label): Don't return asm: output it here instead.
8193         Use mips_process_load_label.
8194         (mips_adjust_insn_length): Adjust the length of branch instructions
8195         that have length MAX_PIC_BRANCH_LENGTH.
8196         (mips_output_conditional_branch): Update the call to
8197         mips_output_load_label.  Assume the branch target is OPERANDS[0]
8198         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
8199         (mips_output_order_conditional_branch): Swap the meaning of
8200         OPERANDS[0] and OPERANDS[1].
8201         (mips_variable_issue): Don't count ghost instructions.
8202         (mips_expand_ghost_gp_insns): New function.
8203         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
8204         (mips_output_mi_thunk): Set must_initialize_gp_p.
8205         (mips_eh_uses): New function.
8206         * config/mips/predicates.md (cprestore_save_slot_operand)
8207         (cprestore_load_slot_operand): New predicates.
8208         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
8209         (UNSPEC_MOVE_GP): Likewise.
8210         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
8211         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
8212         (CPRESTORE_SLOT_REGNUM): New register.
8213         (MAX_PIC_BRANCH_LENGTH): New constant.
8214         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
8215         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
8216         branches.  Fix commentary.
8217         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
8218         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
8219         Change type to "ghost".
8220         (loadgp_absolute_<mode>): Likewise.
8221         (loadgp_rtp_<mode>): Likewise.
8222         (copygp_mips16): Likewise.
8223         (loadgp_blockage): Remove redundant mode attribute.
8224         (potential_cprestore): New instruction.
8225         (cprestore): Turn into an unspec set.
8226         (use_cprestore): New instruction.
8227         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
8228         (*branch_fp_inverted): Likewise.
8229         (*branch_order<mode>): Likewise.
8230         (*branch_order<mode>_inverted): Likewise.
8231         (*branch_equality<mode>): Likewise.
8232         (*branch_equality<mode>_inverted): Likewise.
8233         (*branch_bit<bbv><mode>): Likewise.
8234         (*branch_bit<bbv><mode>_inverted): Likewise.
8235         (*branch_equality<mode>_mips16): Remove redundant mode.
8236         (jump): Turn into a define_expand.
8237         (*jump_absolute): New instruction.
8238         (*jump_pic): Likewise.
8239         (*jump_mips16): Rename previously-unnamed pattern.  Remove
8240         redundant mode attribute.
8241         (restore_gp): Split on epilogue_completed rather than
8242         reload_completed.  Change type to "ghost".
8243         (move_gp<mode>): New instruction.
8244         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
8245         Remove redundant mode attribute.
8246         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
8247         (bc1any4f, bc1any2t, bc1any2f): Likewise.
8248         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
8249
8250 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
8251
8252         PR target/41210
8253         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
8254         are returned in the same register (vs34 or v2) that Altivec vector
8255         types are returned in.
8256         (rs6000_libcall_value): Ditto.
8257
8258         PR target/41331
8259         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
8260         instead of explicit addsi3/adddi3 calls.
8261         (rs6000_split_multireg_move): Ditto.
8262         (rs6000_emit_allocate_stack): Ditto.
8263         (rs6000_emit_prologue): Ditto.
8264         (rs6000_output_mi_thunk): Ditto.
8265
8266         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
8267         size is 64 bits if we can use 64-bit registers.
8268
8269 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
8270
8271         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
8272         symbols.
8273
8274         From Jie Zhang <jie.zhang@analog.com>:
8275         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
8276         save FP and RETS with saveall attribute.
8277         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
8278         with saveall attribute.
8279
8280         * config/bfin/bfin.c (bfin_expand_builtin,
8281         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
8282         operands.
8283
8284         From Jie Zhang <jie.zhang@analog.com>:
8285         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
8286         before use in two places.
8287         * config/bfin/bfin.md (AREG): Define mode iterator.
8288         (reload_in, reload_out): Use mode iterator AREG.
8289
8290 2009-09-14  Richard Guenther  <rguenther@suse.de>
8291
8292         PR middle-end/41350
8293         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
8294         EH personality path.
8295
8296 2009-09-13  Richard Guenther  <rguenther@suse.de>
8297             Rafael Avila de Espindola  <espindola@google.com>
8298
8299         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
8300         (LANG_HOOKS_EH_PERSONALITY): Likewise.
8301         (LANG_HOOKS_INITIALIZER): Adjust.
8302         (lhd_pass_through_t): Declare.
8303         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
8304         eh_personality.
8305         * langhooks.c (lhd_pass_through_t): New function.
8306         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
8307         dwarf2out_begin_prologue): Use personality from current_function_decl.
8308         * expr.h (get_personality_function): Declare.
8309         * expr.c (get_personality_function): New function.
8310         (build_personality_function): Likewise.
8311         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
8312         (eh_personality_libfunc): Remove.
8313         * optabs.c (build_libfunc_function): New function split out from ...
8314         (init_one_libfunc): ... here.
8315         * tree.h (DECL_FUNCTION_PERSONALITY): New.
8316         (tree_function_decl): Add personality.
8317         (lhd_gcc_personality): Declare.
8318         (build_personality_function): Likewise.
8319         * tree.c (gcc_eh_personality_decl): New.
8320         (lhd_gcc_personality): New function.
8321         * except.h (lang_eh_runtime_type): Remove.
8322         (enum eh_personality_kind): New.
8323         (build_personality_function): Declare.
8324         (function_needs_eh_personality): Declare.
8325         * except.c (lang_eh_runtime_type): Remove.
8326         (function_needs_eh_personality): New function.
8327         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
8328         (sjlj_emit_function_enter, output_function_exception_table):
8329         Use personality from current_function_decl.
8330         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
8331         * tree-inline.c (tree_can_inline_p): Do not inline across different
8332         EH personalities.
8333         (expand_call_inline): Likewise.  Adjust the callers EH personality.
8334         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
8335         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
8336         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
8337         (c-parser.o): Likewise
8338         * c-tree.h (c_eh_initialized_p): Remove.
8339         (c_maybe_initialize_eh): Likewise.
8340         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
8341         (finish_decl): Don't call c_maybe_initialize_eh.
8342         (c_eh_initialized_p): Remove.
8343         (c_maybe_initialize_eh): Likewise.
8344         * c-parser.c (c_parser_omp_construct): Likewise.
8345         (c_parse_file): Initialize exception handling.
8346
8347 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
8348
8349         * config.gcc (tm_file): Remove i386/biarch32.h
8350         for i?86-w64-mingw* case.
8351         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
8352         support.
8353         * config.host: Set for x64 mingw the option
8354         use_long_long_for_widest_fast_int to yes.
8355
8356 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
8357
8358         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
8359         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
8360         (dbxout_begin_function): Likewise.
8361         * final.c (dwarf2_debug_info_emitted_p): New predicate.
8362         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
8363         set on the function.
8364         (final_end_function): Likewise.
8365         (final_scan_insn): Likewise.
8366         (rest_of_handle_final): Likewise.
8367         * varasm.c (assemble_start_function): Likewise.
8368         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
8369
8370 2009-09-12  Jason Merrill  <jason@redhat.com>
8371
8372         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
8373         * opts.c (common_handle_option): constify.
8374
8375 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
8376
8377         * doc/install.texi (avr): Remove obsolete reference site.
8378
8379 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
8380
8381         * doc/install.texi (Binaries): Adjust AIX link.
8382
8383 2009-09-12  Akim Demaille  <demaille@gostai.com>
8384
8385         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
8386         Use an imperative sentence.
8387
8388 2009-09-11  Richard Henderson  <rth@redhat.com>
8389
8390         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
8391         structure-name and has-tree-operands arguments; update all entries.
8392         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
8393         update all entries.
8394         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
8395         (gsstruct_code_size): New.
8396         (gss_for_code_): New.
8397         (gss_for_code): Remove.
8398         (gimple_size): Rewrite using gsstruct_code_size.
8399         (gimple_statement_structure): Move to gimple.h.
8400         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
8401         (gss_for_code, gimple_statement_structure): New.
8402         (gimple_ops): Use new arrays; tidy.
8403
8404 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8405
8406         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
8407         operand to be a PLUS expression.
8408         * config/pa/pa.c (pa_secondary_reload): Likewise.
8409
8410 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
8411
8412         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
8413
8414         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
8415         XEXP (in_rtx, 8).
8416
8417 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8418
8419         From Jie Zhang <jie.zhang@analog.com>:
8420         * doc/extend.texi (node Function Attributes): Document l2
8421         function attribute.
8422         (node Blackfin Variable Attributes): Document l2 variable attributes.
8423
8424 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
8425
8426         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
8427         to match the system compiler's configuration at inflection point.
8428         Add comment to remark a remaining difference with system compiler.
8429
8430         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
8431         * configure: Regenerate.
8432
8433 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8434
8435         From Jie Zhang <jie.zhang@analog.com>:
8436         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
8437         (bfin_handle_l2_attribute): New.
8438         (bfin_attribute_table): Add l2 attribute.
8439
8440 2009-09-11  Michael Matz  <matz@suse.de>
8441
8442         PR middle-end/41275
8443         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
8444         on the local_decls list.
8445
8446 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
8447
8448         PR debug/41276
8449         PR debug/41307
8450         * cselib.c (cselib_expand_value_rtx_cb): Document callback
8451         interface.
8452         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
8453         for VALUEs, to implement the documented interface.
8454         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
8455         Adjust for VALUEs and anything else, to implement the
8456         documented interface.
8457
8458 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
8459
8460         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
8461         with actual SPE/paired vector modes before using 64-bit alignment.
8462         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
8463
8464 2009-09-10  DJ Delorie  <dj@redhat.com>
8465
8466         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
8467         emitted.
8468
8469         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
8470         * config/mep/mep.c (mep_legitimate_constant_p): New.
8471         * config/mep/mep-protos.h: Prototype it.
8472
8473 2009-09-10  Richard Henderson  <rth@redhat.com>
8474
8475         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
8476
8477 2009-09-10  Jason Merrill  <jason@redhat.com>
8478
8479         * tree.c (chain_index): New fn.
8480         * tree.h: Declare it.
8481
8482 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8483
8484         * config/sol2-c.c (cmn_err_length_specs): Initialize
8485         scalar_identity_flag.
8486
8487 2009-09-10  Richard Henderson  <rth@redhat.com>
8488
8489         * tree.h (struct tree_decl_common): Move align member earlier;
8490         move label_decl_uid member ...
8491         (struct tree_label_decl): ... here.
8492         (LABEL_DECL_UID): Update to match.
8493
8494         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
8495         not TDF_DETAILS.
8496
8497         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
8498         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
8499
8500         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
8501         dest_prev if the edge is complex.
8502
8503         * tree-cfg.c (is_ctrl_stmt): Use a switch.
8504
8505         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
8506         loop latch tests earlier.
8507
8508         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
8509         before GIMPLE_RETURN, not after its predecessor; insert
8510         before GIMPLE_RESX.
8511
8512         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
8513         gimple_seq_empty_p to test for no PHI nodes.
8514         * tree-cfg.c (split_critical_edges): Likewise.
8515
8516         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
8517
8518 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
8519
8520         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
8521         introduced by the VTA branch merge.
8522
8523 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
8524
8525         * ira-conflicts.c: Use fputs or putc instead of fprintf
8526         where appropriate.
8527         * cfg.c: Ditto.
8528         * toplev.c: Ditto.
8529         * tree-switch-conversion.c: Ditto.
8530
8531 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
8532
8533         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
8534         introduced by the VTA branch merge.
8535
8536 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
8537
8538         Revert:
8539         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
8540
8541         PR rtl-optimization/39779
8542         * expr.c (convert_modes): Return when mode == oldmode after
8543         CONST_INTs are processed.
8544
8545 2009-09-10  Nick Clifton  <nickc@redhat.com>
8546
8547         * config/mep/mep.c (mep_encode_section_info): Copy weakness
8548         attribute and referring decl when creating renamed symbol.
8549
8550 2009-09-10  Richard Guenther  <rguenther@suse.de>
8551
8552         PR middle-end/41257
8553         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
8554         reachable nodes.
8555         (cgraph_finalize_compilation_unit): Compute reachability
8556         before emitting thunks.  Properly process aliases before
8557         possibly removing unreachable nodes.
8558
8559 2009-09-10  Richard Guenther  <rguenther@suse.de>
8560
8561         PR middle-end/41254
8562         * tree.c (struct free_lang_data_d): Add worklist member.
8563         (find_decls_types_r): Push onto the worklist instead of recursing.
8564         Handle TREE_BINFOs properly.
8565         (find_decls_types): New function wrapped around find_decls_types_r
8566         to process the worklist.
8567         (find_decls_types_in_eh_region): Use it.
8568         (find_decls_types_in_node): Likewise.
8569         (find_decls_types_in_var): Likewise.
8570         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
8571         * tree.h (RECORD_OR_UNION_TYPE_P): New.
8572         (AGGREGATE_TYPE_P): Adjust.
8573
8574 2009-09-09  Jason Merrill  <jason@redhat.com>
8575
8576         * configure.ac: Check glibc version even if we have an in-tree
8577         assembler.
8578
8579 2009-09-09  Anthony Green  <green@moxielogic.com>
8580
8581         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
8582         the constant 0 when appropriate.
8583         * config/moxie/constraints.md: Add constraint O.
8584
8585         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
8586         to pass up to 6 32-bit argument values in registers.
8587         (moxie_function_arg): Ditto.
8588         (moxie_arg_partial_bytes): Ditto.
8589         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
8590         (REG_PARM_STACK_SPACE): Ditto.
8591         (FUNCTION_ARG_REGNO_P): Ditto.
8592
8593         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
8594         instruction to allocate stack space.
8595
8596 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
8597
8598         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
8599         unnecessarily stringent constraints.  Fix address
8600         calculation in the splitters.
8601
8602 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
8603
8604         PR rtl-optimization/39779
8605         * expr.c (convert_modes): Return when mode == oldmode after
8606         CONST_INTs are processed.
8607
8608 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
8609
8610         PR/41315
8611         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
8612         (ix86_expand_prologue): Take frame.padding0 into logic of
8613         to_allocate checks.
8614         (ix86_expand_epilogue): Likewise.
8615
8616 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
8617
8618         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
8619         New variables.
8620         (SHLIB_LINK, SHLIB_INSTALL): Use them.
8621         * config/t-slibgcc-libgcc: New file.
8622         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
8623
8624 2009-09-09  Martin Jambor  <mjambor@suse.cz>
8625
8626         PR tree-optimization/41089
8627         * tree-sra.c (find_var_candidates): Do not consider va_lists in
8628         early SRA.
8629
8630 2009-09-09  Richard Henderson  <rth@redhat.com>
8631
8632         * gimple.h (CASE_GIMPLE_OMP): New.
8633         (is_gimple_omp): Use it.
8634         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
8635         (verify_gimple_debug): Likewise.
8636
8637 2009-09-09  Richard Guenther  <rguenther@suse.de>
8638
8639         PR tree-optimization/41101
8640         * tree-ssa-pre.c (maximal_set): Remove.
8641         (compute_antic_aux): Treat the maximal set as implicitly all ones.
8642         Defer all blocks we didn't visit at least one successor.
8643         (add_to_exp_gen): Do not add to the maximal set.
8644         (make_values_for_phi): Likewise.
8645         (compute_avail): Likewise.
8646         (init_pre): Do not allocate the maximal set.
8647         (execute_pre): Do not dump it.
8648
8649 2009-09-09  Martin Jambor  <mjambor@suse.cz>
8650
8651         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
8652         an SSA_NAME rather than a is_gimple_variable.
8653
8654 2009-09-09  Richard Guenther  <rguenther@suse.de>
8655
8656         PR middle-end/41317
8657         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
8658         code dealing with plain pointer bases.
8659         (maybe_fold_offset_to_reference): Likewise.
8660         (maybe_fold_stmt_addition): Adjust.
8661
8662 2009-09-09  Richard Guenther  <rguenther@suse.de>
8663
8664         * tree.c (free_lang_data_in_type): Do not free the type variant
8665         chains.
8666         (free_lang_data): Merge char_type_node with its properly signed
8667         variant.
8668         (pass_ipa_free): Collect after freeing language specific data.
8669
8670 2009-09-09  Michael Matz  <matz@suse.de>
8671
8672         PR middle-end/41268
8673         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
8674         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
8675         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
8676         to reflect reality.
8677
8678 2009-09-08  DJ Delorie  <dj@redhat.com>
8679
8680         * config/mep/mep.c (conversions[]): Add "ml" pattern.
8681
8682 2009-09-04  Jason Merrill  <jason@redhat.com>
8683
8684         * tree.c (tree_find_value): Remove.
8685         * tree.h: Remove prototype.
8686         * varasm.c (assemble_external): Use value_member instead.
8687
8688 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8689
8690         * toplev.c (process_options): Choose default debugging type when
8691         gtoggle enables debug info and type is unset.
8692
8693 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8694
8695         PR debug/41276
8696         PR debug/41307
8697         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
8698         invalid subreg.
8699
8700 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8701
8702         * configure: Rebuilt with modified libtool.m4.
8703
8704 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8705
8706         PR debug/41229
8707         PR debug/41291
8708         PR debug/41300
8709         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
8710
8711 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8712
8713         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
8714         (remove_statement): Likewise.
8715         (rewrite_use_nonlinear_expr): Adjust.
8716         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
8717         * tree-ssa.c (release_defs_bitset): ... this.  New.
8718         * tree-flow.h (release_defs_bitset): Declare.
8719
8720 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8721
8722         PR debug/41232
8723         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
8724         in the middle block.
8725
8726 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
8727
8728         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
8729         via intptr_t to long type.
8730         (insert_operand_rank): Cast long type via intptr_t to
8731         pointer type.
8732         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
8733         pointer to scalar.
8734         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
8735         from pointer to unsigned via uintptr_t.
8736
8737         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
8738         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
8739         and HAVE_INTPTR_T.
8740         * configure: Regenerated.
8741         * config.in: Regenerated
8742         * system.h (stdint.h): Add include.
8743         (inttypes.h): Likewise.
8744         * Makefile.in (aclocal): Add config/stdint.m4.
8745         * aclocal.m4: Regenerated.
8746
8747 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
8748
8749         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
8750         variables.
8751         (note_np_check_stores): New function.
8752         (harmless_null_pointer_p): New function.
8753         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
8754         changed.  Take into account whether we're in the shadow of a condjump
8755         that tested NP_REG for NULL.
8756         Lose all code that tested for SEQUENCEs.
8757         (workaround_speculation): Avoid inserting NOPs for loads that are
8758         either always executed or a NULL pointer.
8759
8760 2009-09-08  Jan Hubicka  <jh@suse.cz>
8761
8762         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
8763         * params.def (early-inlining-insns): Likewise.
8764
8765 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
8766
8767         PR rtl-optimization/41239
8768         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
8769         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
8770         lists.
8771         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
8772         across calls, as the calls might not always return normally.
8773         (call_may_noreturn_p): New function.
8774         (deps_analyze_insn): Update last_function_call_may_noreturn list.
8775         (init_deps): Initialize it.
8776         (remove_from_deps): Also remove calls from
8777         last_function_call_may_noreturn list.
8778
8779 2009-09-07  Richard Henderson  <rth@redhat.com>
8780
8781         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
8782         more VR->OPERANDS than LHS operands.  Free LHS before returning.
8783
8784 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
8785
8786         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
8787         (attr "addrtype"): New member "spreg".
8788         Use it if mem_spfp_address_operand is true for the address.
8789         (attr "type"): New entry "stall".
8790         (cpu_unit "load"): New.
8791         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
8792         "load".
8793         (insn_reservation "loadsp"): New.
8794         (insn_reservation "load_stall1"): New.
8795         (insn_reservation "load_stall3"): New.
8796         (stall): New insn.
8797         * config/bfin/predicates.md (const1_operand, const3_operand): New.
8798         (mem_p_address_operand): Exclude stack and frame pointer based
8799         addresses.
8800         (mem_spfp_address_operand): New; match them here.
8801         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
8802         (bfin_reorg): Call it if scheduling insns.
8803         (bfin_gen_bundles): Remove dummy insns created by
8804         add_sched_insns_for_speculation.
8805
8806         From Jie Zhang <jie.zhang@analog.com>:
8807         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
8808         bfin_si_revision, bfin_workarounds): Move these ...
8809         * config/bfin/bfin.h: ... here.
8810
8811         From Mike Frysinger  <michael.frysinger@analog.com>
8812         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
8813         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
8814         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
8815         bf547m, bf548m, and bf549m.
8816         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
8817         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
8818         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
8819         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
8820         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
8821         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
8822         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
8823         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
8824         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
8825         bf542m, bf544m, bf547m, bf548m, and bf549m.
8826
8827         From Jie Zhang <jie.zhang@analog.com>:
8828         * config/bfin/predicates.md (p_register_operand): New predicate.
8829         (dp_register_operand): New predicate.
8830         * config/bfin/bfin-protos.h (WA_05000074): Define.
8831         (ENABLE_WA_05000074): Define.
8832         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
8833         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
8834         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
8835         (define_attr addrtype): Allow load/store register to be P register.
8836         (define_attr storereg): New.
8837         (define_cpu_unit anomaly_05000074): New.
8838         (define_insn_reservation dsp32shiftimm): New.
8839         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
8840         (define_insn_reservation loadp): Cannot use slot2.
8841         (define_insn_reservation loadsp): Cannot use slot2.
8842         (define_insn_reservation storep): Cannot use slot2. Does not
8843         apply when working around 05000074.
8844         (define_insn_reservation storep_anomaly_05000074): New.
8845         (define_insn_reservation storei): Does not apply when working
8846         around 05000074.
8847         (define_insn_reservation storei_anomaly_05000074): New.
8848         (define_attr length): Add dsp32shiftimm case.
8849         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
8850         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
8851         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
8852         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
8853         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
8854
8855 2009-09-07  Martin Jambor  <mjambor@suse.cz>
8856
8857         PR middle-end/41282
8858         * tree-sra.c (create_artificial_child_access): Return NULL if
8859         build_ref_for_offset fails.
8860         (propagate_subacesses_accross_link): Allow build_ref_for_offset
8861         and create_artificial_child_access to fail.
8862
8863 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
8864
8865         PR c++/41214
8866         * unwind-dw2.c (uw_init_context_1): Mark noinline.
8867         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
8868         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
8869
8870 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
8871
8872         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
8873         block, ensure it has an exit edge.  Emit a barrier after a jump.
8874
8875 2009-09-07  Nick Clifton  <nickc@redhat.com>
8876
8877         * gcc.c (this_is_linker_script): New variable.  Like
8878         this_is_library_file but for the %T constructor.
8879         (end_going_arg): If this_is_linker_script is set then locate the
8880         script and insert a --script switch before it
8881         (do_spec_2): Initialise this_is_linker_script.
8882         (do_spec_1): Likewise.  Handle %T construct.
8883         (eval_spec_function): Preserve this_is_linker_script.
8884         * doc/invoke.texi: Document %T construct in spec files.
8885         * config/m32c/m32c.h (LIB_SPEC): Use it.
8886
8887 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
8888
8889         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
8890         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
8891         when volatile flag is set.
8892         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
8893
8894 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
8895
8896         PR bootstrap/41241
8897         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
8898         (combine_stack_adjustments_for_block): Allow insns between stack
8899         adjustments and stores with corresponding pre-(dec|inc)rement or
8900         pre-modify operation.
8901
8902 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
8903
8904         PR bootstrap/41241
8905         * combine-stack-adj.c (struct csa_memlist): Rename to...
8906         (struct csa_reflist): ... this.  Rename mem field to ref.
8907         (free_csa_memlist): Rename to...
8908         (free_csa_reflist): ... this.
8909         (record_one_stack_memref): Rename to...
8910         (record_one_stack_ref): ... this.  Handle also REG_P.
8911         (try_apply_stack_adjustment): Handle also REG_P.
8912         (struct record_stack_memrefs_data): Rename to...
8913         (struct record_stack_refs_data): ... this.  Rename memlist field to
8914         reflist.
8915         (record_stack_memrefs): Rename to...
8916         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
8917         subexpressions instead of failing when a MEM contains SP references.
8918         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
8919         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
8920
8921 2009-09-06  Richard Guenther  <rguenther@suse.de>
8922
8923         PR middle-end/41144
8924         * tree.c (build_array_type): Do not record types marked
8925         with structural equality in the canonical type hashtable.
8926
8927 2009-09-06  Richard Guenther  <rguenther@suse.de>
8928
8929         PR middle-end/41261
8930         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
8931
8932 2009-09-05  Richard Guenther  <rguenther@suse.de>
8933
8934         PR middle-end/41181
8935         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
8936
8937 2009-09-05  Richard Guenther  <rguenther@suse.de>
8938
8939         PR debug/41273
8940         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
8941
8942 2009-09-05  Richard Guenther  <rguenther@suse.de>
8943
8944         PR middle-end/41271
8945         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
8946         before comparing function argument types.
8947
8948 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
8949
8950         PR target/41024
8951         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
8952         the assembler.
8953
8954 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
8955
8956         Revert:
8957         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
8958
8959         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
8960         locators before emit_insn is called.
8961
8962 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
8963
8964         PR bootstrap/41241
8965         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
8966         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
8967         (reginfo_init): Don't call allocate_reg_info.
8968
8969 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
8970
8971         PR target/41262
8972         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
8973         NONDEBUG_INSN_P instead of INSN_P.
8974
8975 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8976
8977         PR debug/41225
8978         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
8979
8980 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8981
8982         PR target/41252
8983         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
8984         pattern of the split.
8985
8986 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8987
8988         * toplev.c (process_options): Move setter of flag_var_tracking
8989         before other tests that depend on it.  Move down setter of
8990         flag_rename_registers.  Don't enable var-tracking-assignments
8991         by default if selective scheduling is enabled.  Warn if both
8992         are enabled.
8993
8994 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8995
8996         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
8997         comment.  Use switch statement to catch overlaps between rtx
8998         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
8999         (IS_DECL_CODE): ... here. Remove.
9000         (check_value_is_not_decl): Remove.
9001         (dv_from_decl, dv_from_value): Check after conversion.
9002
9003 2009-09-04  Richard Guenther  <rguenther@suse.de>
9004
9005         PR middle-end/41257
9006         * (cgraph_finalize_compilation_unit): Move finalizing aliases
9007         after emitting tunks.  Move emitting thunks and ctors from ...
9008         (cgraph_optimize): ... here.  Remove redundant
9009         cgraph_analyze_functions.
9010         * varasm.c (find_decl_and_mark_needed): Remove no longer
9011         necessary check.
9012         (finish_aliases_1): Adjust check for thunk aliases.
9013
9014 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
9015
9016         * config/arm/arm.md (ctzsi2): Added braces
9017         to avoid warning that broke booststrap.
9018
9019 2009-09-04  Martin Jambor  <mjambor@suse.cz>
9020
9021         PR tree-optimization/41112
9022         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
9023         handle variable-bounded arrays.
9024         (expr_with_var_bounded_array_refs_p): New function.
9025         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
9026
9027 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
9028
9029         * config/s390/2097.md: Removed two incorrect bypasses.
9030         (z10_fsimpdf): Fixed latency.
9031         (z10_fhex): New insn_reservation.
9032         (z10_floaddf): Fixed latency.
9033         (z10_floadsf): Fixed latency.
9034         (z10_ftrunctf): Fixed latency.
9035         (z10_ftruncdf): Fixed latency.
9036         * config/s390/s390.c (z10_cost): Fixed values.
9037         (s390_adjust_priority): Added z10 path.
9038         * config/s390/s390.md (type): Added fhex.
9039         (*mov<mode>_64dfp): Updated type attribute.
9040         (*mov<mode>_64): Updated type attribute.
9041         (*mov<mode>_31): Updated type attribute.
9042         (*mov<mode>"): Likewise.
9043         * config/s390/2084.md (x_fsimpdf): Updated condition.
9044
9045 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
9046
9047         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
9048         RTXs in the predicate for operand 1.
9049
9050 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
9051
9052         * config/arm/arm.md (UNSPEC_RBIT): New constant.
9053         (rbitsi2): New insn.
9054         (ctzsi2): New expand.
9055         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
9056
9057 2009-09-03  Martin Jambor  <mjambor@suse.cz>
9058
9059         * tree-sra.c (duplicate_expr_for_different_base): Removed.
9060         (create_artificial_child_access): Use build_ref_for_offset instead
9061         of duplicate_expr_for_different_base.
9062         (propagate_subacesses_accross_link): Likewise.
9063
9064 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
9065
9066         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
9067         of INSN_P.
9068         (mips16e_collect_argument_saves): Skip debug instructions.
9069         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
9070         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
9071         (r10k_insert_cache_barriers): Likewise.
9072         (mips_reorg_process_insns): Likewise.
9073
9074 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
9075
9076         PR bootstrap/41241
9077         * ira.c (update_equiv_reg): Remove check on class likely spill.
9078
9079 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
9080
9081         PR debug/41236
9082         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
9083         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
9084         it or SUBREG.
9085
9086         PR debug/41238
9087         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
9088         the stack slot if it is passed by invisible reference.
9089         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
9090         by invisible reference.
9091
9092 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
9093
9094         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
9095         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
9096         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
9097         0.
9098         * config/bfin/sync.md: New file.
9099         * config/bfin/bfin.md: Include it.
9100         (UNSPEC_ATOMIC): New.
9101         (UNSPEC_ONES): Provide a unique number.
9102
9103         From Jie Zhang <jie.zhang@analog.com>:
9104         * config/bfin/bfin.c (ret_regs): New.
9105         (must_save_fp_p): Don't return true because of frame_pointer_needed.
9106         (must_save_rets_p): New.
9107         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
9108         current_function_is_leaf.
9109         (do_link): Likewise.
9110         (do_unlink): Likewise.
9111         (expand_interrupt_handler_prologue): Use ret_regs array.
9112         (expand_interrupt_handler_epilogue): Use ret_regs array and
9113         pass return register to gen_return_internal.
9114         (bfin_expand_epilogue): Pass return register to
9115         gen_return_internal.
9116         (bfin_expand_call): Explicitly clobber RETS.
9117         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
9118         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
9119         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
9120         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
9121         RETS.
9122         (return_internal): Take a reg rtx rather than the register number.
9123
9124 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
9125
9126         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
9127         when comparing against estimated_loop_iterations_int return.
9128
9129 2009-09-03  Richard Guenther  <rguenther@suse.de>
9130
9131         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
9132         eh_personality_libfunc.
9133
9134 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9135
9136         * tree-parloops.c (separate_decls_in_region): Add space.
9137
9138 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9139
9140         * tree-parloops.c (separate_decls_in_region): Change the condition
9141         checking if there are reductions in the loop.
9142
9143 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9144
9145         PR tree-optimization/38275
9146         * tree-parloops.c (parallelize_loops): Replace profitability condition
9147         for expected number of iterations.
9148
9149 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
9150
9151         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
9152         (bootstrap-debug): Explain conditions in which it becomes default.
9153         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
9154         make it add to it.
9155
9156 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
9157
9158         * doc/invoke.texi (Optimize Options): Move
9159         -finline-small-functions to the -O2 list.
9160
9161 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
9162
9163         * toplev.c (process_options): Enable var-tracking-assignments
9164         by default if var-tracking is enabled.
9165
9166 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
9167
9168         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
9169         barrier.
9170         * emit-rtl.c (prev_nonnote_insn_bb): New function.
9171         * rtl.h (prev_nonnote_insn_bb): Declare it.
9172
9173 2009-09-03  Diego Novillo  <dnovillo@google.com>
9174
9175         * cgraph.c (cgraph_node_for_decl): New.
9176         * cgraph.h (cgraph_node_for_decl): Declare.
9177         * tree.c (host_integerp): Return 0 if T is NULL.
9178
9179 2009-09-03  Diego Novillo  <dnovillo@google.com>
9180
9181         * tree.h (struct alias_pair): Move from varasm.c.
9182         (alias_pairs): Likewise.
9183         (TYPE_MAXVAL): Define.
9184         (TYPE_MINVAL): Define.
9185         (iterative_hash_host_wide_int): Declare.
9186         (remove_unreachable_alias_pairs): Declare.
9187         * tree-pass.h (pass_ipa_free_lang_data): Declare.
9188         * diagnostic.c (default_diagnostic_starter): Make extern.
9189         (default_diagnostic_finalizer): Make extern.
9190         * diagnostic.h (default_diagnostic_starter): Declare.
9191         (default_diagnostic_finalizer): Declare.
9192         (default_tree_printer): Declare.
9193         * toplev.c (default_tree_printer): Make extern.
9194
9195 2009-09-03  Richard Guenther  <rguenther@suse.de>
9196             Diego Novillo  <dnovillo@google.com>
9197
9198         * cgraph.c (cgraph_add_new_function): Remove gimplification.
9199         * cgraphunit.c (cgraph_expand_function): Do not emit
9200         associated thunks from here.
9201         (cgraph_emit_thunks): New.
9202         (cgraph_optimize): Call it.
9203         Return if any IPA pass finds an error.
9204         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
9205         by thunks.
9206
9207 2009-09-03  Simon Baldwin  <simonb@google.com>
9208             Rafael Espindola  <espindola@google.com>
9209             Richard Guenther  <rguenther@suse.de>
9210             Doug Kwan  <dougkwan@google.com>
9211             Diego Novillo  <dnovillo@google.com>
9212
9213         * tree.c: Include tree-pass.h, langhooks-def.h,
9214         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
9215         (free_lang_data_in_type): New.
9216         (need_assembler_name_p): New.
9217         (free_lang_data_in_block): New.
9218         (free_lang_data_in_decl): New.
9219         (struct free_lang_data_d): New.
9220         (add_tree_to_fld_list): New.
9221         (find_decls_types_r): New.
9222         (get_eh_types_for_runtime): New.
9223         (find_decls_types_in_eh_region): New.
9224         (find_decls_types_in_node): New.
9225         (find_decls_types_in_var): New.
9226         (free_lang_data_in_cgraph): New.
9227         (free_lang_data): New.
9228         (gate_free_lang_data): New.
9229         (pass_ipa_free_lang_data): New.
9230
9231 2009-09-03  Diego Novillo  <dnovillo@google.com>
9232
9233         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
9234         * langhooks.h (struct lang_hooks): Add field free_lang_data.
9235         (lang_hooks): Remove const qualifier.
9236         * ipa.c (cgraph_remove_unreachable_nodes): Call
9237         remove_unreachable_alias_pairs.
9238         * except.c (add_type_for_runtime): Check if TYPE has
9239         already been converted.
9240         (lookup_type_for_runtime): Likewise.
9241         (check_handled): Handle converted types.
9242         * varasm.c (remove_unreachable_alias_pairs): New.
9243         * gimple.c: Include demangle.h.
9244         (gimple_decl_printable_name): New.
9245         (gimple_fold_obj_type_ref): New.
9246         * gimple.h (gimple_decl_printable_name): Declare.
9247         (gimple_fold_obj_type_ref): Declare.
9248         * passes.c (init_optimization_passes): Add pass
9249         pass_ipa_free_lang_data.
9250         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
9251         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
9252
9253 2009-09-03  Diego Novillo  <dnovillo@google.com>
9254
9255         * c-lang.c (lang_hooks): Remove const qualifier.
9256
9257 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
9258
9259         * doc/install.texi (*-*-freebsd*): Update target information.
9260
9261 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
9262
9263         * hard-reg-set.h (call_fixed_regs): Remove.
9264         * reginfo.c (call_fixed_regs): Remove.
9265         (init_reg_sets_1): Remove initialization of call_fixed_regs.
9266         (globalize_reg): Don't use call_fixed_regs.
9267         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
9268         call_fixed_regs.
9269
9270 2009-09-01  Michael Matz  <matz@suse.de>
9271
9272         * expr.h (emit_storent_insn, expand_expr_real_1,
9273         expand_expr_real_2): Declare.
9274         * expr.c (emit_storent_insn, expand_expr_real_1,
9275         expand_expr_real_2): Export.
9276         (store_expr): Setting and evaluating dont_return_target is useless.
9277         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
9278         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
9279         * except.c (expand_resx_expr): Rename to ...
9280         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
9281         * except.h (expand_resx_stmt): Declare.
9282         * stmt.c: Add include gimple.h
9283         (expand_asm_expr): Rename to ...
9284         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
9285         (expand_case): Rewrite to take gimple statement.
9286         * tree.h (expand_asm_stmt): Declare.
9287         (expand_case): Change prototype.
9288         * Makefile.in (stmt.o): Depend on gimple.h.
9289         * builtins.c (expand_builtin_synchronize): Build gimple asm
9290         statement, not an ASM_EXPR.
9291         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
9292         gimple_to_tree, release_stmt_tree): Remove.
9293         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
9294         ggc_free, but hold comparison code and operands separately.
9295         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
9296         (expand_call_stmt, expand_gimple_stmt_1,
9297         expand_gimple_stmt): New helpers.
9298         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
9299         release_stmt_tree.  Call expand_gimple_stmt instead.
9300         (expand_gimple_basic_block): Ditto.
9301
9302         * calls.c (emit_call_1): Don't look at EH regions here, make
9303         fntree parameter useless.
9304         (expand_call): New local rettype for TREE_TYPE(exp), use it
9305         throughout.  Remove local p, use addr instead.
9306         Don't look at EH regions here.
9307
9308 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
9309
9310         * doc/invoke.texi (-fsched-pressure): Document it.
9311         (-fsched-reg-pressure-heuristic): Remove it.
9312
9313         * reload.c (ira.h): Include.
9314         (find_reloads): Add choosing reload on number of small spilled
9315         classes.
9316
9317         * haifa-sched.c (ira.h): Include.
9318         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
9319         saved_reg_pressure, curr_reg_live, saved_reg_live,
9320         region_ref_regs): New variables.
9321         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
9322         initiate_reg_pressure_info, setup_ref_regs,
9323         initiate_bb_reg_pressure_info, save_reg_pressure,
9324         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
9325         functions.
9326         (setup_insn_reg_pressure_info): New function.
9327         (rank_for_schedule): Add pressure checking and insn issue time.
9328         Remove comparison of insn reg weights.
9329         (ready_sort): Set insn reg pressure info.
9330         (update_register_pressure, setup_insn_max_reg_pressure,
9331         update_reg_and_insn_max_reg_pressure,
9332         sched_setup_bb_reg_pressure_info): New functions.
9333         (schedule_insn): Add code for printing and updating reg pressure info.
9334         (find_set_reg_weight, find_insn_reg_weight): Remove.
9335         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
9336         (debug_ready_list): Print reg pressure info.
9337         (schedule_block): Ditto.  Check insn issue time.
9338         (sched_init): Set up sched_pressure_p.  Allocate and set up some
9339         reg pressure related info.
9340         (sched_finish): Free some reg pressure related info.
9341         (fix_tick_ready): Make insn always ready if pressure_p.
9342         (init_h_i_d): Don't call find_insn_reg_weight.
9343         (haifa_finish_h_i_d): Free insn reg pressure info.
9344
9345         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
9346         ira_memory_move_cost, ira_class_hard_regs,
9347         ira_class_hard_regs_num, ira_no_alloc_regs,
9348         ira_available_class_regs, ira_reg_class_cover_size,
9349         ira_reg_class_cover, ira_class_translate): Move to ira.h.
9350
9351         * ira-lives.c (single_reg_class): Check mode to find how many
9352         registers are necessary for operand.
9353         (ira_implicitly_set_insn_hard_regs): New.
9354
9355         * common.opt (fsched-pressure): New options.
9356         (fsched-reg-pressure-heuristic): Remove.
9357
9358         * ira.c (setup_eliminable_regset): Rename to
9359         ira_setup_eliminable_regset.  Make it external.
9360         (expand_reg_info): Pass cover class to setup_reg_classes.
9361         (ira): Call resize_reg_info instead of allocate_reg_info.
9362
9363         * sched-deps.c: Include ira.h.
9364         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
9365         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
9366         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
9367         mark_insn_hard_regno_birth, mark_insn_reg_birth,
9368         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
9369         mark_insn_reg_store, mark_insn_reg_clobber,
9370         setup_insn_reg_pressure_info): New.
9371         (sched_analyze_1): Update implicit_reg_pending_uses.
9372         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
9373         Use them to create dependencies.  Set insn reg uses and pressure
9374         info.  Process reg_pending_uses in one place.
9375         (free_deps): Free implicit sets.
9376         (remove_from_deps): Remove implicit sets if necessary.  Check
9377         implicit sets when clearing reg_last_in_use.
9378         (init_deps_global): Clear implicit_reg_pending_clobbers and
9379         implicit_reg_pending_uses.
9380
9381         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
9382         ira_memory_move_cost, ira_class_hard_regs,
9383         ira_class_hard_regs_num, ira_no_alloc_regs,
9384         ira_available_class_regs, ira_reg_class_cover_size,
9385         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
9386         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
9387         ira_implicitly_set_insn_hard_regs): New prototypes.
9388
9389         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
9390         cost_elements_num): New variables.
9391         (allocno_costs, total_costs): Rename to costs and
9392         total_allocno_costs.
9393         (COSTS_OF_ALLOCNO): Rename to COSTS.
9394         (allocno_pref): Rename to pref.
9395         (allocno_pref_buffer): Rename to pref_buffer.
9396         (common_classes): Rename to regno_cover_class.
9397         (COST_INDEX): New.
9398         (record_reg_classes): Set allocno attributes only if allocno_p.
9399         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
9400         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
9401         and COSTS_OF_ALLOCNO.
9402         (print_costs): Rename to print_allocno_costs.
9403         (print_pseudo_costs): New.
9404         (process_bb_node_for_costs): Split into 2 functions with new
9405         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
9406         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
9407         new parameter dump_file.  Use cost_elements_num instead of
9408         ira_allocnos_num.  Make one iteration if preferred classes were
9409         already calculated for scheduler.  Make 2 versions of code
9410         depending on allocno_p.
9411         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
9412         regno_cover_class and COSTS instead of common_classes and
9413         COSTS_OF_ALLOCNO.
9414         (init_costs, finish_costs): New.
9415         (ira_costs): Set up allocno_p and cost_elements_num.  Call
9416         init_costs and finish_costs.
9417         (ira_set_pseudo_classes): New.
9418
9419         * rtl.h (allocate_reg_info): Remove.
9420         (resize_reg_info): Change return type.
9421         (reg_cover_class): New.
9422         (setup_reg_classes): Add new parameter.
9423
9424         * sched-int.h (struct deps_reg): New member implicit_sets.
9425         (sched_pressure_p, sched_regno_cover_class): New external definitions.
9426         (INCREASE_BITS): New macro.
9427         (struct reg_pressure_data, struct reg_use_data): New.
9428         (struct _haifa_insn_data): Remove reg_weight.  Add members
9429         reg_pressure, reg_use_list, reg_set_list, and
9430         reg_pressure_excess_cost_change.
9431         (struct deps): New member implicit_sets.
9432         (pressure_p): New variable.
9433         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
9434         (struct reg_pressure_data, struct reg_use_data): New.
9435         (INSN_REG_WEIGHT): Remove.
9436         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
9437         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
9438         (sched_init_region_reg_pressure_info,
9439         sched_setup_bb_reg_pressure_info): New prototypes.
9440
9441         * reginfo.c (struct reg_pref): New member coverclass.
9442         (reg_cover_class): New function.
9443         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
9444         (reg_info_size): New variable.
9445         (allocate_reg_info): Make static.  Setup reg_info_size.
9446         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
9447         (setup_reg_classes): Add a new parameter.  Setup cover class too.
9448
9449         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
9450         the dependencies.
9451
9452         * sched-rgn.c (deps_join): Set up implicit_sets.
9453         (schedule_region): Set up region and basic blocks pressure
9454         relative info.
9455
9456         * passes.c (init_optimization_passes): Move
9457         pass_subregs_of_mode_init before pass_sched.
9458
9459 2009-09-02  Martin Jambor  <mjambor@suse.cz>
9460
9461         * tree-sra.c (struct access): New field grp_hint.
9462         (dump_access): Dump grp_hint.
9463         (sort_and_splice_var_accesses): Set grp_hint if a group is read
9464         multiple times.
9465         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
9466         those which have been specifically read and somehow written to.
9467         (propagate_subacesses_accross_link): Set grp_hint of right child and
9468         also possibly of the left child.
9469
9470 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
9471
9472         * tree-object-size.c (addr_object_size): Always use object_size_type
9473         0 or 2 when determining the pointer pointed object size.
9474
9475 2009-09-02  Richard Guenther  <rguenther@suse.de>
9476
9477         Revert
9478         2009-08-31  Richard Guenther  <rguenther@suse.de>
9479
9480         * builtins.c (fold_builtin_memory_op): Use the alias oracle
9481         to query if the memory regions for memmove overlap.
9482         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
9483         asserts on pointers, instead deal with odd trees.
9484         (ptr_derefs_may_alias_p): Likewise.
9485         (refs_may_alias_p_1): Constructor bases also never alias.
9486
9487 2009-08-01  Christian Bruel  <christian.bruel@st.com>
9488
9489         Revert:
9490         2009-07-31  Christian Bruel  <christian.bruel@st.com>
9491         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
9492
9493 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
9494
9495         * doc/invoke.texi (-fvar-tracking-assignments): New.
9496         (-fvar-tracking-assignments-toggle): New.
9497         (-fdump-final-insns=file): Mark filename as optional.
9498         (--param min-nondebug-insn-uid): New.
9499         (-gdwarf-@{version}): Mention version 4.
9500         * opts.c (common_handle_option): Accept it.
9501         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
9502         * regrename.c (regrename_optimize): Drop last.  Don't count debug
9503         insns as uses.  Don't reject change because of debug insn.
9504         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
9505         from the chain starter, and check for inexact matches in DEBUG_INSNS.
9506         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
9507         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
9508         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
9509         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
9510         * doc/gimple.texi (is_gimple_debug): New.
9511         (gimple_debug_bind_p): New.
9512         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
9513         * doc/install.texi (bootstrap-debug): More details.
9514         (bootstrap-debug-big, bootstrap-debug-lean): Document.
9515         (bootstrap-debug-lib): More details.
9516         (bootstrap-debug-ckovw): Update.
9517         (bootstrap-time): New.
9518         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
9519         (insert_phi_nodes_for): Insert debug stmts.
9520         (rewrite_stmt): Take iterator.  Insert debug stmts.
9521         (rewrite_enter_block): Adjust.
9522         (maybe_replace_use_in_debug_stmt): New.
9523         (rewrite_update_stmt): Use it.
9524         (mark_use_interesting): Return early for debug stmts.
9525         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
9526         stmts before replacing stmt.
9527         (move_computations_stmt): Likewise.
9528         * ira-conflicts.c (add_copies): Skip debug insns.
9529         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
9530         (regstat_bb_compute_ri): Skip debug insns.
9531         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
9532         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
9533         check_loop_closed_ssa_stmt): Skip debug stmts.
9534         * tree-tailcall.c (find_tail_calls): Likewise.
9535         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
9536         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
9537         (build_var_debug_value_stat): Declare.
9538         (build_var_debug_value): Define.
9539         (target_for_debug_bind): Declare.
9540         * reload.c (find_equiv_reg): Skip debug insns.
9541         * rtlanal.c (reg_used_between_p): Skip debug insns.
9542         (side_effects_p): Likewise.
9543         (canonicalize_condition): Likewise.
9544         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
9545         insns never depend on debug insns.
9546         (create_ddg_dep_no_link): Likewise.
9547         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
9548         Don't add inter-loop dependencies for debug insns.
9549         (build_intra_loop_deps): Likewise.
9550         (create_ddg): Count debug insns.
9551         * ddg.h (struct ddg::num_debug): New.
9552         (num_backargs): Pair up with previous int field.
9553         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
9554         -fcompare-debug-second.
9555         * final.c (get_attr_length_1): Skip debug insns.
9556         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
9557         * gcc.c (invoke_as): Call compare-debug-dump-opt.
9558         (driver_self_specs): Map -fdump-final-insns to
9559         -fdump-final-insns=..
9560         (get_local_tick): New.
9561         (compare_debug_dump_opt_spec_function): Test for . argument and
9562         compute output name.  Compute temp output spec without flag name.
9563         Compute -frandom-seed.
9564         (OPT): Undef after use.
9565         * cfgloopanal.c (num_loop_insns): Skip debug insns.
9566         (average_num_loop_insns): Likewise.
9567         * params.h (MIN_NONDEBUG_INSN_UID): New.
9568         * gimple.def (GIMPLE_DEBUG): New.
9569         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
9570         * auto-inc-dec.c (merge_in_block): Skip debug insns.
9571         (merge_in_block): Fix whitespace.
9572         * toplev.c (flag_var_tracking): Update comment.
9573         (flag_var_tracking_assignments): New.
9574         (flag_var_tracking_assignments_toggle): New.
9575         (process_options): Don't open final insns dump file if we're not
9576         going to write to it.  Compute defaults for var_tracking.
9577         * df-scan.c (df_insn_rescan_debug_internal): New.
9578         (df_uses_record): Handle debug insns.
9579         * haifa-sched.c (ready): Initialize n_debug.
9580         (contributes_to_priority): Skip debug insns.
9581         (dep_list_size): New.
9582         (priority): Use it.
9583         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
9584         they're ready.  Disregard previous debug insns to make decisions.
9585         (queue_insn): Never queue debug insns.
9586         (ready_add, ready_remove_first, ready_remove): Count debug insns.
9587         (schedule_insn): Don't reject debug insns because of issue rate.
9588         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
9589         (queue_to_ready): Skip and discount debug insns.
9590         (choose_ready): Let debug insns through.
9591         (schedule_block): Check boundary debug insns.  Discount debug
9592         insns, schedule them early.  Adjust whitespace.
9593         (set_priorities): Check for boundary debug insns.
9594         (add_jump_dependencies): Use dep_list_size.
9595         (prev_non_location_insn): New.
9596         (check_cfg): Use it.
9597         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
9598         stmts.
9599         (remove_unused_ivs): Reset debug stmts.
9600         * modulo-sched.c (const_iteration_count): Skip debug insns.
9601         (res_MII): Discount debug insns.
9602         (loop_single_full_bb_p): Skip debug insns.
9603         (sms_schedule): Likewise.
9604         (sms_schedule_by_order): Likewise.
9605         (ps_has_conflicts): Likewise.
9606         * caller-save.c (refmarker_fn): New.
9607         (save_call_clobbered_regs): Replace regs with saved mem in
9608         debug insns.
9609         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
9610         Call refmarker_fn mark for hardregnos.
9611         (mark_reg_as_referenced): New.
9612         (replace_reg_with_saved_mem): New.
9613         * ipa-pure-const.c (check_stmt): Skip debug stmts.
9614         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
9615         searching back.
9616         (cse_extended_basic_block): Skip debug insns.
9617         (count_reg_usage): Likewise.
9618         (is_dead_reg): New, split out of...
9619         (set_live_p): ... here.
9620         (insn_live_p): Use it for debug insns.
9621         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
9622         (execute_optimize_stdarg): Likewise.
9623         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
9624         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
9625         changes in debug stmts as changes.
9626         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
9627         (moveup_expr): Don't move across debug insns.  Don't move
9628         debug insn if it would create a bookkeeping block.
9629         (moveup_expr_cached): Don't use cache for debug insns that
9630         are heads of blocks.
9631         (compute_av_set_inside_bb): Skip debug insns.
9632         (sel_rank_for_schedule): Schedule debug insns first.  Remove
9633         dead code.
9634         (block_valid_for_bookkeeping_p); Support lax searches.
9635         (create_block_for_bookkeeping): Adjust block numbers when
9636         encountering debug-only blocks.
9637         (find_place_for_bookkeeping): Deal with debug-only blocks.
9638         (generate_bookkeeping_insn): Accept no place to insert.
9639         (remove_temp_moveop_nops): New argument full_tidying.
9640         (prepare_place_to_insert): Deal with debug insns.
9641         (advance_state_on_fence): Debug insns don't start cycles.
9642         (update_boundaries): Take fence as argument.  Deal with
9643         debug insns.
9644         (schedule_expr_on_boundary): No full_tidying on debug insns.
9645         (fill_insns): Deal with debug insns.
9646         (track_scheduled_insns_and_blocks): Don't count debug insns.
9647         (need_nop_to_preserve_insn_bb): New, split out of...
9648         (remove_insn_from_stream): ... this.
9649         (fur_orig_expr_not_found): Skip debug insns.
9650         * rtl.def (VALUE): Move up.
9651         (DEBUG_INSN): New.
9652         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
9653         (nearest_common_dominator_of_uses): Take debug_stmts argument.
9654         Set it if debug stmts are found.
9655         (statement_sink_location): Skip debug stmts.  Propagate
9656         moving defs into debug stmts.
9657         * ifcvt.c (first_active_insn): Skip debug insns.
9658         (last_active_insns): Likewise.
9659         (cond_exec_process_insns): Likewise.
9660         (noce_process_if_block): Likewise.
9661         (check_cond_move_block): Likewise.
9662         (cond_move_convert_if_block): Likewise.
9663         (block_jumps_and_fallthru_p): Likewise.
9664         (dead_or_predicable): Likewise.
9665         * dwarf2out.c (debug_str_hash_forced): New.
9666         (find_AT_string): Add comment.
9667         (gen_label_for_indirect_string): New.
9668         (get_debug_string_label): New.
9669         (AT_string_form): Use it.
9670         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
9671         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
9672         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
9673         several operations that cannot be represented with DWARF opcodes.
9674         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
9675         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
9676         (dwarf2out_var_location): Take during-call mark into account.
9677         (output_indirect_string): Update comment.  Output if there are
9678         label and references.
9679         (prune_indirect_string): New.
9680         (prune_unused_types): Call it if debug_str_hash_forced.
9681         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
9682         (dw_long_long_const): Remove.
9683         (struct dw_val_struct): Change val_long_long type to rtx.
9684         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
9685         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
9686         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
9687         component instead of HOST_BITS_PER_LONG.
9688         (output_loc_operands): Likewise.  For const8* assert
9689         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
9690         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
9691         rather than HOST_BITS_PER_LONG is >= 64.
9692         (add_AT_long_long): Remove val_hi and val_lo arguments, add
9693         val_const_double.
9694         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
9695         HOST_BITS_PER_LONG for dw_val_class_long_long.
9696         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
9697         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
9698         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
9699         DW_OP_stack_value.
9700         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
9701         Handle DW_OP_implicit_value.
9702         (extract_int): Move prototype earlier.
9703         (mem_loc_descriptor): For SUBREG punt if inner
9704         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
9705         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
9706         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
9707         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
9708         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
9709         instead of Pmode size.
9710         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
9711         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
9712         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
9713         (concat_loc_descriptor, concatn_loc_descriptor,
9714         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
9715         (add_location_or_const_value_attribute): Likewise.  For single
9716         location loc_lists attempt to use add_const_value_attribute
9717         for constant decls.  Add DW_AT_const_value even if
9718         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
9719         in its expression.
9720         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
9721         (control_flow_insn_p): Likewise.
9722         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
9723         (separate_decls_in_region_debug_bind): New.
9724         (separate_decls_in_region): Process debug bind stmts afterwards.
9725         * recog.c (verify_changes): Handle debug insns.
9726         (extract_insn): Likewise.
9727         (peephole2_optimize): Skip debug insns.
9728         * dse.c (scan_insn): Skip debug insns.
9729         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
9730         Pass it on.
9731         (setup_id_for_insn): Handle debug insns.
9732         (maybe_tidy_empty_bb): Adjust whitespace.
9733         (tidy_control_flow): Skip debug insns.
9734         (sel_remove_insn): Adjust for debug insns.
9735         (sel_estimate_number_of_insns): Skip debug insns.
9736         (create_insn_rtx_from_pattern): Handle debug insns.
9737         (create_copy_of_insn_rtx): Likewise.
9738         * sel-sched-.h (sel_bb_end): Declare.
9739         (sel_bb_empty_or_nop_p): New.
9740         (get_all_loop_exits): Use it.
9741         (_eligible_successor_edge_p): Likewise.
9742         (return_nop_to_pool): Adjust.
9743         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
9744         * ira-lives.c (process_bb_node_lives): Skip debug insns.
9745         * gimple-pretty-print.c (dump_gimple_debug): New.
9746         (dump_gimple_stmt): Use it.
9747         (dump_bb_header): Skip gimple debug stmts.
9748         * regmove.c (optimize_reg_copy_1): Discount debug insns.
9749         (fixup_match_2): Likewise.
9750         (regmove_backward_pass): Likewise.  Simplify combined
9751         replacement.  Handle debug insns.
9752         * function.c (instantiate_virtual_regs): Handle debug insns.
9753         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
9754         * print-rtl.h: Include cselib.h.
9755         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
9756         * df.h (df_inns_rescan_debug_internal): Declare.
9757         * gcse.c (alloc_hash_table): Estimate n_insns.
9758         (cprop_insn): Don't regard debug insns as changes.
9759         (bypass_conditional_jumps): Skip debug insns.
9760         (one_pre_gcse_pass): Adjust.
9761         (one_code_hoisting_pass): Likewise.
9762         (compute_ld_motion_mems): Skip debug insns.
9763         (one_cprop_pass): Adjust.
9764         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
9765         (if_convertible_stmt_p): Handle debug stmts.
9766         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
9767         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
9768         * ira-build.c (create_bb_allocnos): Skip debug insns.
9769         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
9770         (has_single_use): Likewise.
9771         (single_imm_use): Likewise.
9772         (num_imm_uses): Likewise.
9773         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
9774         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
9775         (create_outofssa_var_map): Likewise.
9776         * lower-subreg.c (adjust_decomposed_uses): New.
9777         (resolve_debug): New.
9778         (decompose_multiword_subregs): Use it.
9779         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
9780         * emit-rtl.c: Include params.h.
9781         (cur_debug_insn_uid): Define.
9782         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
9783         (copy_rtx_if_shared_1): Handle debug insns.
9784         (reset_used_flags): Likewise.
9785         (set_used_flags): LIkewise.
9786         (get_max_insn_count): New.
9787         (next_nondebug_insn): New.
9788         (prev_nondebug_insn): New.
9789         (make_debug_insn_raw): New.
9790         (emit_insn_before_noloc): Handle debug insns.
9791         (emit_jump_insn_before_noloc): Likewise.
9792         (emit_call_insn_before_noloc): Likewise.
9793         (emit_debug_insn_before_noloc): New.
9794         (emit_insn_after_noloc): Handle debug insns.
9795         (emit_jump_insn_after_noloc): Likewise.
9796         (emit_call_insn_after_noloc): Likewise.
9797         (emit_debug_insn_after_noloc): Likewise.
9798         (emit_insn_after): Take loc from earlier non-debug insn.
9799         (emit_jump_insn_after): Likewise.
9800         (emit_call_insn_after): Likewise.
9801         (emit_debug_insn_after_setloc): New.
9802         (emit_debug_insn_after): New.
9803         (emit_insn_before): Take loc from later non-debug insn.
9804         (emit_jump_insn_before): Likewise.
9805         (emit_call_insn_before): Likewise.
9806         (emit_debug_insn_before_setloc): New.
9807         (emit_debug_insn_before): New.
9808         (emit_insn): Handle debug insns.
9809         (emit_debug_insn): New.
9810         (emit_jump_insn): Handle debug insns.
9811         (emit_call_insn): Likewise.
9812         (emit): Likewise.
9813         (init_emit): Take min-nondebug-insn-uid into account.
9814         Initialize cur_debug_insn_uid.
9815         (emit_copy_of_insn_after): Handle debug insns.
9816         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
9817         location of single rhs in place.
9818         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
9819         (floor_sdiv_adjust): New.
9820         (cell_sdiv_adjust): New.
9821         (cell_udiv_adjust): New.
9822         (round_sdiv_adjust): New.
9823         (round_udiv_adjust): New.
9824         (wrap_constant): Moved from cselib.
9825         (unwrap_constant): New.
9826         (expand_debug_expr): New.
9827         (expand_debug_locations): New.
9828         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
9829         debug bind stmts.
9830         (gimple_expand_cfg): Expand debug locations.
9831         * cselib.c: Include tree-pass.h.
9832         (struct expand_value_data): New.
9833         (cselib_record_sets_hook): New.
9834         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
9835         (cselib_clear_table): Move, and implemnet in terms of...
9836         (cselib_reset_table_with_next_value): ... this.
9837         (cselib_get_next_unknown_value): New.
9838         (discard_useless_locs): Don't discard preserved values.
9839         (cselib_preserve_value): New.
9840         (cselib_preserved_value_p): New.
9841         (cselib_preserve_definitely): New.
9842         (cselib_clear_preserve): New.
9843         (cselib_preserve_only_values): New.
9844         (new_cselib_val): Take rtx argument.  Dump it in details.
9845         (cselib_lookup_mem): Adjust.
9846         (expand_loc): Take regs_active in struct.  Adjust.  Silence
9847         dumps unless details are requested.
9848         (cselib_expand_value_rtx_cb): New.
9849         (cselib_expand_value_rtx): Rename and reimplment in terms of...
9850         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
9851         without details.  Copy more subregs.  Try to resolve values
9852         using a callback.  Wrap constants.
9853         (cselib_subst_to_values): Adjust.
9854         (cselib_log_lookup): New.
9855         (cselib_lookup): Call it.
9856         (cselib_invalidate_regno): Don't count preserved values as useless.
9857         (cselib_invalidate_mem): Likewise.
9858         (cselib_record_set): Likewise.
9859         (struct set): Renamed to cselib_set, moved to cselib.h.
9860         (cselib_record_sets): Adjust.  Call hook.
9861         (cselib_process_insn): Reset table when it would be cleared.
9862         (dump_cselib_val): New.
9863         (dump_cselib_table): New.
9864         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
9865         (remove_forwarder_block): Support moving debug stmts.
9866         * cselib.h (cselib_record_sets_hook): Declare.
9867         (cselib_expand_callback): New type.
9868         (cselib_expand_value_rtx_cb): Declare.
9869         (cselib_reset_table_with_next_value): Declare.
9870         (cselib_get_next_unknown_value): Declare.
9871         (cselib_preserve_value): Declare.
9872         (cselib_preserved_value_p): Declare.
9873         (cselib_preserve_only_values): Declare.
9874         (dump_cselib_table): Declare.
9875         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
9876         (try_crossjump_to_edge): Likewise.
9877         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
9878         dominated blocks when debug stmts are present.
9879         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
9880         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
9881         (set_var_live_on_entry): Likewise.
9882         * loop-invariant.c (find_invariants_bb): Skip debug insns.
9883         * cfglayout.c (curr_location, last_location): Make static.
9884         (set_curr_insn_source_location): Don't avoid bouncing.
9885         (get_curr_insn_source_location): New.
9886         (get_curr_insn_block): New.
9887         (duplicate_insn_chain): Handle debug insns.
9888         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
9889         into debug stmts.
9890         * common.opt (fcompare-debug): Move to sort order.
9891         (fdump-unnumbered-links): Likewise.
9892         (fvar-tracking-assignments): New.
9893         (fvar-tracking-assignments-toggle): New.
9894         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
9895         because of debug stmts.
9896         (mark_stmt_if_obviously_necessary): Mark debug stmts.
9897         (eliminate_unnecessary_stmts): Walk dominated blocks before
9898         dominators.
9899         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
9900         * ira.c (memref_used_between_p): Skip debug insns.
9901         (update_equiv_regs): Likewise.
9902         * sched-deps.c (sd_lists_size): Accept empty list.
9903         (sd_init_insn): Mark debug insns.
9904         (sd_finish_insn): Unmark them.
9905         (sd_add_dep): Reject non-debug deps on debug insns.
9906         (fixup_sched_groups): Give debug insns group treatment.
9907         Skip debug insns.
9908         (sched_analyze_reg): Don't mark debug insns for sched before call.
9909         (sched_analyze_2): Handle debug insns.
9910         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
9911         insns.
9912         (deps_analyze_insn): Handle debug insns.
9913         (deps_start_bb): Skip debug insns.
9914         (init_deps): Initialize last_debug_insn.
9915         * tree-ssa.c (target_for_debug_bind): New.
9916         (find_released_ssa_name): New.
9917         (propagate_var_def_into_debug_stmts): New.
9918         (propagate_defs_into_debug_stmts): New.
9919         (verify_ssa): Skip debug bind stmts without values.
9920         (warn_uninialized_vars): Skip debug stmts.
9921         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
9922         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
9923         (rtx_equal_p): Likewise.
9924         * ira-costs.c (scan_one_insn): Skip debug insns.
9925         (process_bb_node_for_hard_reg_moves): Likewise.
9926         * rtl.h (DEBUG_INSN_P): New.
9927         (NONDEBUG_INSN_P): New.
9928         (MAY_HAVE_DEBUG_INSNS): New.
9929         (INSN_P): Accept debug insns.
9930         (RTX_FRAME_RELATED_P): Likewise.
9931         (INSN_DELETED_P): Likewise
9932         (PAT_VAR_LOCATION_DECL): New.
9933         (PAT_VAR_LOCATION_LOC): New.
9934         (PAT_VAR_OCATION_STATUS): New.
9935         (NOTE_VAR_LOCATION_DECL): Reimplement.
9936         (NOTE_VAR_LOCATION_LOC): Likewise.
9937         (NOTE_VAR_LOCATION_STATUS): Likewise.
9938         (INSN_VAR_LOCATION): New.
9939         (INSN_VAR_LOCATION_DECL): New.
9940         (INSN_VAR_LOCATION_LOC): New.
9941         (INSN_VAR_LOCATION_STATUS): New.
9942         (gen_rtx_UNKNOWN_VAR_LOC): New.
9943         (VAR_LOC_UNKNOWN_P): New.
9944         (NOTE_DURING_CALL_P): New.
9945         (SCHED_GROUP_P): Accept debug insns.
9946         (emit_debug_insn_before): Declare.
9947         (emit_debug_insn_before_noloc): Declare.
9948         (emit_debug_insn_beore_setloc): Declare.
9949         (emit_debug_insn_after): Declare.
9950         (emit_debug_insn_after_noloc): Declare.
9951         (emit_debug_insn_after_setloc): Declare.
9952         (emit_debug_insn): Declare.
9953         (make_debug_insn_raw): Declare.
9954         (prev_nondebug_insn): Declare.
9955         (next_nondebug_insn): Declare.
9956         (delegitimize_mem_from_attrs): Declare.
9957         (get_max_insn_count): Declare.
9958         (wrap_constant): Declare.
9959         (unwrap_constant): Declare.
9960         (get_curr_insn_source_location): Declare.
9961         (get_curr_insn_block): Declare.
9962         * tree-inline.c (insert_debug_decl_map): New.
9963         (processing_debug_stmt): New.
9964         (remap_decl): Don't create new mappings in debug stmts.
9965         (remap_gimple_op_r): Don't add references in debug stmts.
9966         (copy_tree_body_r): Likewise.
9967         (remap_gimple_stmt): Handle debug bind stmts.
9968         (copy_bb): Skip debug stmts.
9969         (copy_edges_for_bb): Likewise.
9970         (copy_debug_stmt): New.
9971         (copy_debug_stmts): New.
9972         (copy_body): Copy debug stmts at the end.
9973         (insert_init_debug_bind): New.
9974         (insert_init_stmt): Take id.  Skip and emit debug stmts.
9975         (setup_one_parameter): Remap variable earlier, register debug mapping.
9976         (estimate_num_insns): Skip debug stmts.
9977         (expand_call_inline): Preserve debug_map.
9978         (optimize_inline_calls): Check for no debug_stmts left-overs.
9979         (unsave_expr_now): Preserve debug_map.
9980         (copy_gimple_seq_and_replace_locals): Likewise.
9981         (tree_function_versioning): Check for no debug_stmts left-overs.
9982         Init and destroy debug_map as needed.  Split edges unconditionally.
9983         (build_duplicate_type): Init and destroy debug_map as needed.
9984         * tree-inline.h: Include gimple.h instead of pointer-set.h.
9985         (struct copy_body_data): Add debug_stmts and debug_map.
9986         * sched-int.h (struct ready_list): Add n_debug.
9987         (struct deps): Add last_debug_insn.
9988         (DEBUG_INSN_SCHED_P): New.
9989         (BOUNDARY_DEBUG_INSN_P): New.
9990         (SCHEDULE_DEBUG_INSN_P): New.
9991         (sd_iterator_cond): Accept empty list.
9992         * combine.c (create_log_links): Skip debug insns.
9993         (combine_instructions): Likewise.
9994         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
9995         return value is always unshared.
9996         (struct rtx_subst_pair): New.
9997         (auto_adjust_pair): New.
9998         (propagate_for_debug_subst): New.
9999         (propagate_for_debug): New.
10000         (try_combine): Skip debug insns.  Propagate removed defs into
10001         debug insns.
10002         (next_nonnote_nondebug_insn): New.
10003         (distribute_notes): Use it.  Skip debug insns.
10004         (distribute_links): Skip debug insns.
10005         * tree-outof-ssa.c (set_location_for_edge): Likewise.
10006         * resource.c (mark_target_live_regs): Likewise.
10007         * var-tracking.c: Include cselib.h and target.h.
10008         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
10009         MO_VAL_SET.
10010         (micro_operation_type_name): New.
10011         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
10012         (struct micro_operation_def): Update comments.
10013         (decl_or_value): New type.  Use instead of decls.
10014         (struct emit_note_data_def): Add vars.
10015         (struct attrs_def): Use decl_or_value.
10016         (struct variable_tracking_info_def): Add permp, flooded.
10017         (struct location_chain_def): Update comment.
10018         (struct variable_part_def): Use decl_or_value.
10019         (struct variable_def): Make var_part a variable length array.
10020         (valvar_pool): New.
10021         (scratch_regs): New.
10022         (cselib_hook_called): New.
10023         (dv_is_decl_p): New.
10024         (dv_is_value_p): New.
10025         (dv_as_decl): New.
10026         (dv_as_value): New.
10027         (dv_as_opaque): New.
10028         (dv_onepart_p): New.
10029         (dv_pool): New.
10030         (IS_DECL_CODE): New.
10031         (check_value_is_not_decl): New.
10032         (dv_from_decl): New.
10033         (dv_from_value): New.
10034         (dv_htab_hash): New.
10035         (variable_htab_hash): Use it.
10036         (variable_htab_eq): Support values.
10037         (variable_htab_free): Free from the right pool.
10038         (attrs_list_member, attrs_list_insert): Use decl_or_value.
10039         (attrs_list_union): Adjust.
10040         (attrs_list_mpdv_union): New.
10041         (tie_break_pointers): New.
10042         (canon_value_cmp): New.
10043         (unshare_variable): Return possibly-modified slot.
10044         (vars_copy_1): Adjust.
10045         (var_reg_decl_set): Adjust.  Split out of...
10046         (var_reg_set): ... this.
10047         (get_init_value): Adjust.
10048         (var_reg_delete_and_set): Adjust.
10049         (var_reg_delete): Adjust.
10050         (var_regno_delete): Adjust.
10051         (var_mem_decl_set): Split out of...
10052         (var_mem_set): ... this.
10053         (var_mem_delete_and_set): Adjust.
10054         (var_mem_delete): Adjust.
10055         (val_store): New.
10056         (val_reset): New.
10057         (val_resolve): New.
10058         (variable_union): Adjust.  Speed up merge of 1-part vars.
10059         (variable_canonicalize): Use unshared slot.
10060         (VALUED_RECURSED_INTO): New.
10061         (find_loc_in_1pdv): New.
10062         (struct dfset_merge): New.
10063         (insert_into_intersection): New.
10064         (intersect_loc_chains): New.
10065         (loc_cmp): New.
10066         (canonicalize_loc_order_check): New.
10067         (canonicalize_values_mark): New.
10068         (canonicalize_values_star): New.
10069         (variable_merge_over_cur): New.
10070         (variable_merge_over_src): New.
10071         (dataflow_set_merge): New.
10072         (dataflow_set_equiv_regs): New.
10073         (remove_duplicate_values): New.
10074         (struct dfset_post_merge): New.
10075         (variable_post_merge_new_vals): New.
10076         (variable_post_merge_perm_vals): New.
10077         (dataflow_post_merge_adjust): New.
10078         (find_mem_expr_in_1pdv): New.
10079         (dataflow_set_preserve_mem_locs): New.
10080         (dataflow_set_remove_mem_locs): New.
10081         (dataflow_set_clear_at_call): New.
10082         (onepart_variable_different_p): New.
10083         (variable_different_p): Use it.
10084         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
10085         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
10086         if not needed.
10087         (track_loc_p): Pass it true.
10088         (struct count_use_info): New.
10089         (find_use_val): New.
10090         (replace_expr_with_values): New.
10091         (log_op_type): New.
10092         (use_type): New, partially split out of...
10093         (count_uses): ... this.  Count new micro-ops.
10094         (count_uses_1): Adjust.
10095         (count_stores): Adjust.
10096         (count_with_sets): New.
10097         (VAL_NEEDS_RESOLUTION): New.
10098         (VAL_HOLDS_TRACK_EXPR): New.
10099         (VAL_EXPR_IS_COPIED): New.
10100         (VAL_EXPR_IS_CLOBBERED): New.
10101         (add_uses): Adjust.  Generate new micro-ops.
10102         (add_uses_1): Adjust.
10103         (add_stores): Generate new micro-ops.
10104         (add_with_sets): New.
10105         (find_src_status): Adjust.
10106         (find_src_set_src): Adjust.
10107         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
10108         Handle new micro-ops.  Canonicalize value equivalances.
10109         (vt_find_locations): Compute total size of hash tables for
10110         dumping.  Perform merge for var-tracking-assignments.  Don't
10111         disregard single-block loops.
10112         (dump_attrs_list): Handle decl_or_value.
10113         (dump_variable): Take variable.  Deal with decl_or_value.
10114         (dump_variable_slot): New.
10115         (dump_vars): Use it.
10116         (dump_dataflow_sets): Adjust.
10117         (set_slot_part): New, extended to support one-part variables
10118         after splitting out of...
10119         (set_variable_part): ... this.
10120         (clobber_slot_part): New, split out of...
10121         (clobber_variable_part): ... this.
10122         (delete_slot_part): New, split out of...
10123         (delete_variable_part): .... this.
10124         (check_wrap_constant): New.
10125         (vt_expand_loc_callback): New.
10126         (vt_expand_loc): New.
10127         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
10128         EMIT_NOTE_AFTER_CALL_INSN.
10129         (emit_notes_for_differences_1): Adjust.  Handle values.
10130         (emit_notes_for_differences_2): Likewise.
10131         (emit_notes_for_differences): Adjust.
10132         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
10133         Adjust.  Handle new micro-ops.
10134         (vt_add_function_parameters): Adjust.  Create and bind values.
10135         (vt_initialize): Adjust.  Initialize scratch_regs and
10136         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
10137         operations.  Move some code to count_with_sets and add_with_sets.
10138         (delete_debug_insns): New.
10139         (vt_debug_insns_local): New.
10140         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
10141         cselib.
10142         (var_tracking_main): If var-tracking-assignments is enabled
10143         but var-tracking isn't, delete debug insns and leave.  Likewise
10144         if we exceed limits or fail the stack adjustments tests, and
10145         after all var-tracking processing.
10146         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
10147         (dataflow_set): Add traversed_vars.
10148         (value_chain, const_value_chain): New typedefs.
10149         (value_chain_pool, value_chains): New variables.
10150         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
10151         add_value_chains, add_cselib_value_chains, remove_value_chain,
10152         remove_value_chains, remove_cselib_value_chains): New functions.
10153         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
10154         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
10155         static inlines.
10156         (shared_hash_find_slot_unshare, shared_hash_find_slot,
10157         shared_hash_find_slot_noinsert, shared_hash_find): Update.
10158         (dst_can_be_shared): New variable.
10159         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
10160         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
10161         different from set->vars, look up slot again instead of using the
10162         passed in slot.
10163         (dataflow_set_init): Initialize traversed_vars.
10164         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
10165         lookup if set->vars is shared.  Don't keep slot cleared before
10166         calling unshare_variable.  Unshare set->vars if needed.  Adjust
10167         unshare_variable callers.  Clear dst_can_be_shared if needed.
10168         Even ->refcount == 1 vars must be unshared if set->vars is shared
10169         and var needs to be modified.
10170         (dataflow_set_union): Set traversed_vars during canonicalization.
10171         (VALUE_CHANGED, DECL_CHANGED): Define.
10172         (set_dv_changed, dv_changed_p): New static inlines.
10173         (track_expr_p): Clear DECL_CHANGED.
10174         (dump_dataflow_sets): Set it.
10175         (variable_was_changed): Call set_dv_changed.
10176         (emit_note_insn_var_location): Likewise.
10177         (changed_variables_stack): New variable.
10178         (check_changed_vars_1, check_changed_vars_2): New functions.
10179         (emit_notes_for_changes): Do nothing if changed_variables is
10180         empty.  Traverse changed_variables with check_changed_vars_1,
10181         call check_changed_vars_2 on each changed_variables_stack entry.
10182         (emit_notes_in_bb): Add SET argument.  Just clear it at the
10183         beginning, use it instead of local &set, don't destroy it at the end.
10184         (vt_emit_notes): Call dataflow_set_clear early on all
10185         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
10186         computed set, dataflow_set_clear also VTI(bb)->in when we are
10187         done with the basic block.  Initialize changed_variables_stack,
10188         free it afterwards.  If ENABLE_CHECKING verify that after noting
10189         differences to an empty set value_chains hash table is empty.
10190         (vt_initialize): Initialize value_chains and value_chain_pool.
10191         (vt_finalize): Delete value_chains htab, free value_chain_pool.
10192         (variable_tracking_main): Call dump_dataflow_sets before calling
10193         vt_emit_notes, not after it.
10194         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
10195         (propagate_var_def_into_debug_stmts): Declare.
10196         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
10197         (df_set_note): Reject debug insns.
10198         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
10199         add notes to debug insns.
10200         (df_note_bb_compute): Adjust.  Likewise.
10201         (df_simulate_uses): Skip debug insns.
10202         (df_simulate_initialize_backwards): Likewise.
10203         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
10204         (subst_stack_regs_pat): Reject debug insns.
10205         (convert_regs_1): Handle debug insns.
10206         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
10207         (print-rtl.o): Depend on cselib.h.
10208         (cselib.o): Depend on TREE_PASS_H.
10209         (var-tracking.o): Depend on cselib.h and TARGET_H.
10210         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
10211         (init_ready_list): Skip boundary debug insns.
10212         (add_branch_dependences): Skip debug insns.
10213         (free_block_dependencies): Check for blocks with only debug insns.
10214         (compute_priorities): Likewise.
10215         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
10216         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
10217         all callers.
10218         (gimple_build_debug_bind_stat): New.
10219         (empty_body_p): Skip debug stmts.
10220         (gimple_has_side_effects): Likewise.
10221         (gimple_rhs_has_side_effects): Likewise.
10222         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
10223         (gimple_build_debug_bind_stat): Declare.
10224         (gimple_build_debug_bind): Define.
10225         (is_gimple_debug): New.
10226         (gimple_debug_bind_p): New.
10227         (gimple_debug_bind_get_var): New.
10228         (gimple_debug_bind_get_value): New.
10229         (gimple_debug_bind_get_value_ptr): New.
10230         (gimple_debug_bind_set_var): New.
10231         (gimple_debug_bind_set_value): New.
10232         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
10233         (gimple_debug_bind_reset_value): New.
10234         (gimple_debug_bind_has_value_p): New.
10235         (gsi_next_nondebug): New.
10236         (gsi_prev_nondebug): New.
10237         (gsi_start_nondebug_bb): New.
10238         (gsi_last_nondebug_bb): New.
10239         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
10240         (print_insn): Handle DEBUG_INSN.
10241         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
10242         of first insn prevail.
10243         (first_stmt): Skip debug stmts.
10244         (first_non_label_stmt): Likewise.
10245         (last_stmt): Likewise.
10246         (has_zero_uses_1): New.
10247         (single_imm_use_1): New.
10248         (verify_gimple_debug): New.
10249         (verify_types_in_gimple_stmt): Handle debug stmts.
10250         (verify_stmt): Likewise.
10251         (debug_loop_num): Skip debug stmts.
10252         (remove_edge_and_dominated_blocks): Remove dominators last.
10253         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
10254         (linearize_expr): Likewise.
10255         * config/i386/i386.c (ix86_delegitimize_address): Call
10256         default implementation.
10257         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
10258         (group_barrier_needed): Skip debug insns.
10259         (emit_insn_group_barriers): Likewise.
10260         (emit_all_insn_group_barriers): Likewise.
10261         (ia64_variable_issue): Handle debug insns.
10262         (ia64_dfa_new_cycle): Likewise.
10263         (final_emit_insn_group_barriers): Skip debug insns.
10264         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
10265         def cfa without frame.
10266         (process_set): Likewise.
10267         (process_for_unwind_directive): Pass frame on.
10268         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
10269         (rs6000_delegitimize_address): New.
10270         (rs6000_debug_adjust_cost): Handle debug insns.
10271         (is_microcoded_insn): Likewise.
10272         (is_cracked_insn): Likewise.
10273         (is_nonpipeline_insn): Likewise.
10274         (insn_must_be_first_in_group): Likewise.
10275         (insn_must_be_last_in_group): Likewise.
10276         (force_new_group): Likewise.
10277         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
10278         contains only debug insns.
10279         (rtl_merge_blocks): Skip debug insns.
10280         (purge_dead_edges): Likewise.
10281         (rtl_block_ends_with_call_p): Skip debug insns.
10282         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
10283         (mark_reg_dependencies): Skip debug insns.
10284         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
10285         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
10286         * tree-ssa-threadedge.c
10287         (record_temporary_equivalences_from_stmts): Skip debug stmts.
10288         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
10289         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
10290         (copyprop_hardreg_forward_1): Handle debug insns.
10291         * reload1.c (reload): Skip debug insns.  Replace unassigned
10292         pseudos in debug insns with their equivalences.
10293         (eliminate_regs_in_insn): Skip debug insns.
10294         (emit_input_reload_insns): Skip debug insns at first, adjust
10295         them later.
10296         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
10297         (get_indirect_ref_operands): Pass opf_no_vops on.
10298         (get_expr_operands): Likewise.  Skip debug stmts.
10299         (parse_ssa_operands): Scan debug insns with opf_no_vops.
10300
10301 2009-09-01  Richard Henderson  <rth@redhat.com>
10302
10303         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
10304         stmt_ends_pp_p statements at least once.
10305         * tree-vrp.c (vrp_initialize): Likewise.
10306         (vrp_visit_stmt): Be prepared for non-interesting stmts.
10307
10308 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
10309
10310         PR bootstrap/41205
10311         Fix AIX bootstrap after PR debug/30161
10312         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
10313         that is a GNU extension.
10314         (tmpl_value_parm_die_table): Move the definition of this global
10315         outside #ifdef DWARF2_DEBUGGING_INFO region.
10316
10317 2009-09-01  Richard Guenther  <rguenther@suse.de>
10318
10319         * tree.c (tree_expr_size): New function.
10320         * tree.h (tree_expr_size): Declare.
10321         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
10322         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
10323         * langhooks.c (lhd_expr_size): Remove.
10324         * langhooks.h (struct lang_hooks): Remove expr_size.
10325         * explow.c (expr_size): Use tree_expr_size.
10326         (int_expr_size): Likewise.
10327         * langhooks-def.h (lhd_expr_size): Remove.
10328         (LANG_HOOKS_EXPR_SIZE): Likewise.
10329         (LANG_HOOKS_INITIALIZER): Adjust.
10330
10331 2009-09-01  Richard Guenther  <rguenther@suse.de>
10332
10333         * tree-flow.h (mark_addressable): Move declaration ...
10334         * tree.h (mark_addressable): ... here.
10335         * stmt.c (expand_asm_operands): Use mark_addressable, not
10336         lang_hooks.mark_addressable.
10337         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
10338         LANG_HOOKS_MARK_ADDRESSABLE.
10339         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
10340         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
10341
10342 2009-08-31  Chris Demetriou  <cgd@google.com>
10343
10344         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
10345         vectorize if not TARGET_SSE2.
10346
10347 2009-08-31  DJ Delorie  <dj@redhat.com>
10348
10349         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
10350         registers if no coprocessor is enabled.
10351
10352 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
10353
10354         PR debug/30161
10355         * cgraph.h (cgraph_get_node): Declare ...
10356         * cgraph.c (cgraph_get_node): ... new function.
10357         * dwarf2out.c (gen_generic_params_dies,
10358         generic_parameter_die, tree_add_const_value_attribute_for_decl,
10359         make_ith_pack_parameter_name,
10360         append_entry_to_tmpl_value_parm_die_table,
10361         gen_remaining_tmpl_value_param_die_attribute): New functions.
10362         (gen_subprogram_die): Generate debug info for template parameters
10363         if debug info level is higher than DINFO_LEVEL_TERSE.
10364         Use tree_add_const_value_attribute_for_decl instead of
10365         tree_add_const_value_attribute.
10366         (gen_const_die): Use tree_add_const_value_attribute_for_decl
10367         instead of tree_add_const_value_attribute.
10368         (gen_struct_or_union_type_die): Generate debug
10369         info for template parameters if debug info level is higher than
10370         DINFO_LEVEL_TERSE.
10371         (tree_add_const_value_attribute): Handle integral and pointer
10372         constants. Update comment.
10373         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
10374         (dwarf_attr_name): Support DW_AT_GNU_template_name.
10375         (reference_to_unused): Fix thinko. Remove redundant predicates from
10376         tests.
10377         (tree_add_const_value_attribute): Make this work for constant
10378         expressions only.
10379         tree_add_const_value_attribute_for_decl is to be used for variable
10380         DECLs now.
10381         (add_location_or_const_value_attribute): Use
10382         tree_add_const_value_attribute_for_decl now.
10383         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
10384         DW_TAG_template_value_param DIEs after function DIEs have been
10385         emitted.
10386         * langhooks.h (lang_hooks_for_types): Add
10387         get_argument_pack_elems.
10388         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
10389         (lang_hooks): Added get_innermost_generic_parms,
10390         get_innermost_generic_args.
10391         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
10392         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
10393         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
10394         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
10395
10396 2009-08-31  DJ Delorie  <dj@redhat.com>
10397
10398         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
10399         it once we start generating the prologue or epilogue.
10400         (mep_call_saves_register): If the frame is locked, re-use
10401         cached values.
10402         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
10403         (mep_expand_prologue): Call it.
10404         (mep_expand_epilogue): Likewise.
10405         (mep_start_function): Use the same logic as mep_expand_prologue.
10406         (mep_pass_by_reference): Make logic more readable.
10407         (mep_return_in_memory): Zero-sized objects are passed in memory.
10408         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
10409
10410 2009-08-31  Richard Guenther  <rguenther@suse.de>
10411
10412         * builtins.c (fold_builtin_memory_op): Use the alias oracle
10413         to query if the memory regions for memmove overlap.
10414         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
10415         asserts on pointers, instead deal with odd trees.
10416         (ptr_derefs_may_alias_p): Likewise.
10417         (refs_may_alias_p_1): Constructor bases also never alias.
10418
10419 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
10420
10421         * doc/install.texi (Final install): Adjust reference on where to
10422         order printed manuals.
10423
10424 2009-08-30  Olivier Hainque  <hainque@adacore.com>
10425
10426         * dwarf2out.c (switch_to_frame_table_section): Move
10427         definition prior to first use.
10428
10429 2009-08-30  Richard Guenther  <rguenther@suse.de>
10430
10431         PR tree-optimization/41186
10432         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
10433         (ao_ref_init_from_ptr_and_size): New function.
10434         (ref_maybe_used_by_call_p_1): Be more precise tracking
10435         used ranges for builtin functions.
10436         (ref_maybe_used_by_call_p): Adjust.
10437         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
10438         ranges for builtin functions.
10439         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
10440
10441 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
10442
10443         PR target/41081
10444         * fwprop.c (get_reg_use_in): Delete.
10445         (free_load_extend): New function.
10446         (forward_propagate_subreg): Use it.
10447
10448 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
10449
10450         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
10451
10452 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
10453
10454         PR/41184
10455         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
10456         padding.
10457
10458 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
10459
10460         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
10461         fini or fini_array section.
10462
10463 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10464
10465         * graphite-dependences.c (graphite_legal_transform_bb): Call
10466         pbb_remove_duplicate_pdrs.
10467         * graphite-poly.c (can_collapse_pdr): Removed.
10468         (pdr_find_duplicate): Removed.
10469         (can_collapse_pdrs): New.
10470         (pbb_remove_duplicate_pdrs): New.
10471         (new_poly_dr): Do not look for duplicates.
10472         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
10473         (PBB_PDR_DUPLICATES_REMOVED): New.
10474         (pbb_remove_duplicate_pdrs): Declared.
10475
10476 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10477
10478         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
10479         the strides by multiplying by PDR_NB_REFS.
10480         * graphite-poly.c (can_collapse_pdr): New.
10481         (pdr_find_duplicate): New.
10482         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
10483         Initialize PDR_NB_REFS.
10484         * graphite-poly.h (struct poly_dr): Add field nb_refs.
10485         (PDR_NB_REFS): New.
10486         (new_poly_dr): Number of subscripts is a graphite_dim_t.
10487
10488 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10489
10490         PR middle-end/40965
10491         * graphite-poly.c (apply_poly_transforms): Remove legality test before
10492         any transform.
10493
10494 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10495
10496         * graphite-dependences.c (pddr_original_scattering): Return NULL
10497         for read-read dependence relations.
10498         * graphite-poly.h (enum poly_dr_type): Fix comment.
10499         (pdr_read_p): New.
10500         (pdr_write_p): New.
10501         (pdr_may_write_p): New.
10502
10503 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10504
10505         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
10506         (struct poly_dr): Same.
10507         (new_poly_dr): Same.
10508         * graphite-poly.c (new_poly_dr): Same.
10509         * graphite-dependences.c (dot_deps): Disable call to system.
10510
10511 2009-08-28  Cary Coutant  <ccoutant@google.com>
10512
10513         PR debug/41063
10514         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
10515         struct/union/enum types local to a function.
10516
10517 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
10518             Sebastian Pop  <sebastian.pop@amd.com>
10519
10520         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
10521         pbb_strip_mine_time_depth.  Changed the implementation so that
10522         transformation is expressed as a transformation on
10523         time (scatttering) dimensions.  Also, ensures that the 2d+1
10524         scheduling format is preserved.
10525         (pbb_strip_mine_profitable_p): Profitability is based on the
10526         iteration number of a given time (scattering) dimension,
10527         and not on a original loop depth dimension.
10528         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
10529         (pbb_do_strip_mine): Call psct_dynamic_dim.
10530         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
10531         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
10532         (pbb_nb_dynamic_scattering_transform): New.
10533         (psct_dynamic_dim): New.
10534
10535 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
10536
10537         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
10538         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
10539         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
10540         * graphite-interchange.c (build_linearized_memory_access): Same.
10541         (memory_stride_in_loop): Same.
10542
10543 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10544
10545         * graphite-dependences.c (pddr_original_scattering): New.
10546         (graphite_legal_transform_dr): Call pddr_original_scattering.
10547         (dot_deps_1): New.
10548         (dot_deps): New.
10549         * graphite-dependences.h (dot_deps): Declared.
10550         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
10551         (print_pdr): Print PDR_ID.
10552         * graphite-poly.h (struct poly_dr): Add field id.
10553         (PDR_ID): New.
10554         (pbb_index): New.
10555         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
10556
10557 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10558
10559         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
10560         not delete the original dependence relation.
10561
10562 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10563
10564         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
10565         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
10566         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
10567         (free_poly_ddr): New.
10568         (pddr_is_empty): New.
10569         (dependence_polyhedron_1): Now returns a poly_ddr_p.
10570         (dependence_polyhedron): Same.  Remove useless gcc_assert.
10571         Remove fprintfs.
10572         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
10573         (graphite_carried_dependence_level_k): Call pddr_is_empty.
10574         * graphite-dependences.h (enum poly_dependence_kind): New.
10575         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
10576         (PDRP_SOURCE): Renamed PDDR_SOURCE.
10577         (PDRP_SINK): Renamed PDDR_SINK.
10578         (PDRP_DDP): Renamed PDDR_DDP.
10579         (PDDR_KIND): New.
10580         (free_poly_ddr): Declared.
10581         * graphite-poly.c (new_scop): Use the new hash function names.
10582         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
10583         into original_pddrs.
10584         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
10585
10586 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10587
10588         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
10589         bounds with LT_EXPR to make niter analysis more precise on code
10590         generated by Graphite.
10591
10592 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10593
10594         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
10595         (graphite_legal_transform_bb): Same.
10596         (poly_drs_may_alias_p): Same.
10597
10598 2009-08-28  Richard Guenther  <rguenther@suse.de>
10599
10600         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
10601
10602 2009-08-28  Jan Beulich  <jbeulich@novell.com>
10603
10604         * config/i386/netware.c: Include langhooks.h.
10605         (i386_nlm_encode_section_info): Simplify.
10606         (netware_override_options): Delete.
10607         * config/i386/netware.h (netware_override_options): Delete
10608         declaration.
10609         (OVERRIDE_OPTIONS): Delete definition.
10610         (SUBTARGET_OVERRIDE_OPTIONS): Define.
10611         (ASM_COMMENT_START): Define.
10612         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
10613
10614 2009-08-28  Jan Beulich  <jbeulich@novell.com>
10615
10616         * configure.ac: For in-tree ld, do a plain version check to
10617         determine whether comdat groups are supported.
10618         * configure: Regenerate.
10619
10620 2009-08-28  Olivier Hainque  <hainque@adacore.com>
10621
10622         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
10623         always defined.  Reflect definition or absence of such for
10624         COLLECT_EXPORT_LIST.  Readability helper.
10625         (scanfilter): New enum, to help control what symbols
10626         are to be considered or ignored by scan_prog_file.
10627         (enum pass): Rename as "scanpass", moved together with scanfilter
10628         prior to scan_prog_file's prototype.
10629         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
10630         Group prototype with the scanpass/scanfilter definitions, factorize
10631         head comments for the several implementations at the prototype.
10632         (main): Reorganize the first pass link control to let AIX
10633         drag only the needed frame tables in executables.  Prevent
10634         frame tables collection during the scan aimed at static ctors.
10635         Pre-link and scan for frame tables later to compensate.
10636         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
10637         A C statement to issue assembly directives that create a reference
10638         to the given DWARF table identifier label from the current function
10639         section.
10640         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
10641         to differentiate first time section entry.  Only emit a .data
10642         tables start identifier label the first time around.
10643         (switch_to_frame_table_section): New function.  Helper for
10644         output_call_frame_info to switch possibly BACK into the eh_frame
10645         or the debug_frame section depending on FOR_EH.
10646         (output_call_frame_info): Use helper to first enter the proper
10647         frame section.
10648         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
10649         emit a link to the frame table start label from each function
10650         section.
10651         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
10652         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
10653         * config/rs6000/rs6000-protos.h: Declare it.
10654         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
10655
10656 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
10657
10658         * config/sh/sh.c (split_branches): Check the result of
10659         next_active_insn.
10660
10661 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
10662
10663         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
10664         using -pthread -fopenmp
10665
10666 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
10667
10668         * doc/service.texi (service directory): Update URL.
10669
10670 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
10671
10672         PR rtl-optimization/40861
10673         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
10674         extract word from a multi-word subreg for negative byte positions.
10675
10676 2009-08-27  Tristan Gingold  <gingold@adacore.com>
10677             Douglas B Rupp  <rupp@gnat.com>
10678
10679         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
10680         (SECTION_VMS_OVERLAY): Define.
10681         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
10682         attribute.
10683         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
10684         for common_object.
10685         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
10686         common_object declarations.
10687         (ia64_section_type_flags): Set section flag for common_object.
10688         * config/ia64/ia64-protos.h
10689         (ia64_vms_output_aligned_decl_common): Declare.
10690         (ia64_vms_elf_asm_named_section): Declare.
10691
10692 2009-08-27  Michael Matz  <matz@suse.de>
10693
10694         * expr.c (expand_expr_real_2): New function taking exploded
10695         unary or binary expression, split out from ...
10696         (expand_expr_real_1): ... here.  Move over all unary/binary
10697         switch parts to above function, in particular these codes:
10698         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
10699         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
10700         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
10701         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
10702         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
10703         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
10704         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
10705         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
10706         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
10707         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
10708         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
10709         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
10710         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
10711         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
10712         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
10713         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
10714         VEC_PACK_FIX_TRUNC_EXPR.
10715         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
10716         full expression.
10717
10718 2009-08-27  Richard Guenther  <rguenther@suse.de>
10719
10720         * gengtype.c (main): Handle uint64_t.
10721         * ipa-utils.c (get_base_var): Indent properly.
10722         * tree-ssa-live.c (debug_scope_block): New function.
10723         * tree-flow.h (debug_scope_block): Declare.
10724         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
10725         * basic-block.h (enum profile_status): Rename to
10726         enum profile_status_d.
10727         (x_profile_status): Adjust type.
10728
10729 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
10730
10731         PR debug/41170
10732         * dwarf2out.c (get_context_die): Declare this static function.
10733         (gen_type_die_with_usage): Make sure a DIE is a generated for
10734         the context of a typedef.
10735
10736 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
10737
10738         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
10739         switch.
10740
10741 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
10742
10743         * config/mips/mips-protos.h (mips_output_sync): Declare.
10744         (mips_sync_loop_insns): Likewise.
10745         (mips_output_sync_loop): Replace first two parameters with an rtx.
10746         * config/mips/mips.c (mips_multi_member): New structure.
10747         (mips_multi_members): New variable.
10748         (mips_multi_start): New function.
10749         (mips_multi_add): Likewise.
10750         (mips_multi_add_insn): Likewise.
10751         (mips_multi_add_label): Likewise.
10752         (mips_multi_last_index): Likewise.
10753         (mips_multi_copy_insn): Likewise.
10754         (mips_multi_set_operand): Likewise.
10755         (mips_multi_write): Likewise.
10756         (mips_print_operand_punctuation): Remove '%|' and '%-'.
10757         (mips_init_print_operand_punct): Update accordingly.
10758         (mips_start_ll_sc_sync_block): New function.
10759         (mips_end_ll_sc_sync_block): Likewise.
10760         (mips_output_sync): Likewise.
10761         (mips_sync_insn1_template): Likewise.
10762         (mips_sync_insn2_template): Likewise.
10763         (mips_get_sync_operand): Likewise.
10764         (mips_process_sync_loop): Likewise.
10765         (mips_output_sync_loop): Use mips_process_sync_loop.
10766         (mips_sync_loop_insns): New function.
10767         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
10768         (MIPS_COMPARE_AND_SWAP_12): Likewise.
10769         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
10770         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
10771         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
10772         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
10773         (MIPS_SYNC_OLD_OP_12): Likewise.
10774         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
10775         (MIPS_SYNC_NEW_OP_12): Likewise.
10776         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
10777         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
10778         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
10779         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
10780         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
10781         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
10782         * config/mips/mips.md (sync_mem): New attribute.
10783         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
10784         (sync_exclusive_mask, sync_required_oldval): Likewise.
10785         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
10786         (sync_release_barrier): Likewise.
10787         (length): Handle sync loops.
10788         (sync): Use mips_output_sync.
10789         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
10790         (sync_compare_and_swap<mode>): Set the new sync_* attributes
10791         and use mips_output_sync_loop.
10792         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
10793         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
10794         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
10795         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
10796         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
10797         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
10798         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
10799         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
10800         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
10801
10802 2009-08-26  Richard Guenther  <rguenther@suse.de>
10803
10804         PR middle-end/41163
10805         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
10806         the types to not match.
10807         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
10808         verification.
10809         * tree-ssa.c (useless_type_conversion_p): Conversions to
10810         pointers to unprototyped functions are useless.
10811
10812 2009-08-26  Richard Guenther  <rguenther@suse.de>
10813
10814         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
10815         whole-program condition, prepare to be called for non-globals.
10816         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
10817         params build a representative with known type and track its fields.
10818
10819 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
10820
10821         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
10822         clearing by a taken branch.
10823         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
10824         effectively after bbro pass.
10825         (sync_nand<mode>): Ditto.
10826         (sync_old_<fetchop_name><mode>): Ditto.
10827         (sync_old_nand<mode>): Ditto.
10828         (sync_new_<fetchop_name><mode>): Dito.
10829         (sync_new_nand<mode>): Ditto.
10830         (sync_compare_and_swap<mode>_1): Ditto.
10831         (*sync_compare_and_swap<mode>): Ditto.
10832         (sync_lock_test_and_set<mode>_1): Ditto.
10833         ("sync_lock_test_and_set<mode>): Ditto.
10834
10835 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
10836
10837         * hwint.h (HOST_LONG_FORMAT): New macro
10838         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
10839         Use HOST_PTR_PRINTF.
10840         * system.h (HOST_PTR_PRINTF): Resurrect old macro
10841         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
10842         (HOST_PTR_PRINTF): Document.
10843
10844 2009-08-25 Jan Hubicka  <jh@suse.cz>
10845
10846         * config/i386/bmmintrin.h: Replace by #error.
10847
10848         Revert:
10849         Michael Meissner  <michael.meissner@amd.com>
10850         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
10851         Tony Linthicum  <tony.linthicum@amd.com>
10852
10853         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
10854         (TARGET_ROUND): New macro for the round/ptest instructions which
10855         are shared between SSE4.1 and SSE5.
10856         (OPTION_MASK_ISA_ROUND): Ditto.
10857         (OPTION_ISA_ROUND): Ditto.
10858         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
10859         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
10860
10861         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
10862         (-mfused-madd): New switch to give users control over whether the
10863         compiler optimizes to use the multiply/add SSE5 instructions.
10864
10865         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
10866         (ix86_handle_option): Turn off 3dnow if -msse5.
10867         (override_options): Add SSE5 support.
10868         (print_operand): %Y prints comparison codes for SSE5 com/pcom
10869         instructions.
10870         (ix86_expand_sse_movcc): Add SSE5 support.
10871         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
10872         vector type to the next largest size.
10873         (ix86_expand_sse5_pack): New function to use pperm to pack a
10874         vector type to the next smallest size.
10875         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
10876         (IX86_BUILTIN_FMADDSD): Ditto.
10877         (IX86_BUILTIN_FMADDPS): Ditto.
10878         (IX86_BUILTIN_FMADDPD): Ditto.
10879         (IX86_BUILTIN_FMSUBSS): Ditto.
10880         (IX86_BUILTIN_FMSUBSD): Ditto.
10881         (IX86_BUILTIN_FMSUBPS): Ditto.
10882         (IX86_BUILTIN_FMSUBPD): Ditto.
10883         (IX86_BUILTIN_FNMADDSS): Ditto.
10884         (IX86_BUILTIN_FNMADDSD): Ditto.
10885         (IX86_BUILTIN_FNMADDPS): Ditto.
10886         (IX86_BUILTIN_FNMADDPD): Ditto.
10887         (IX86_BUILTIN_FNMSUBSS): Ditto.
10888         (IX86_BUILTIN_FNMSUBSD): Ditto.
10889         (IX86_BUILTIN_FNMSUBPS): Ditto.
10890         (IX86_BUILTIN_FNMSUBPD): Ditto.
10891         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
10892         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
10893         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
10894         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
10895         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
10896         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
10897         (IX86_BUILTIN_PPERM): Ditto.
10898         (IX86_BUILTIN_PERMPS): Ditto.
10899         (IX86_BUILTIN_PERMPD): Ditto.
10900         (IX86_BUILTIN_PMACSSWW): Ditto.
10901         (IX86_BUILTIN_PMACSWW): Ditto.
10902         (IX86_BUILTIN_PMACSSWD): Ditto.
10903         (IX86_BUILTIN_PMACSWD): Ditto.
10904         (IX86_BUILTIN_PMACSSDD): Ditto.
10905         (IX86_BUILTIN_PMACSDD): Ditto.
10906         (IX86_BUILTIN_PMACSSDQL): Ditto.
10907         (IX86_BUILTIN_PMACSSDQH): Ditto.
10908         (IX86_BUILTIN_PMACSDQL): Ditto.
10909         (IX86_BUILTIN_PMACSDQH): Ditto.
10910         (IX86_BUILTIN_PMADCSSWD): Ditto.
10911         (IX86_BUILTIN_PMADCSWD): Ditto.
10912         (IX86_BUILTIN_PHADDBW): Ditto.
10913         (IX86_BUILTIN_PHADDBD): Ditto.
10914         (IX86_BUILTIN_PHADDBQ): Ditto.
10915         (IX86_BUILTIN_PHADDWD): Ditto.
10916         (IX86_BUILTIN_PHADDWQ): Ditto.
10917         (IX86_BUILTIN_PHADDDQ): Ditto.
10918         (IX86_BUILTIN_PHADDUBW): Ditto.
10919         (IX86_BUILTIN_PHADDUBD): Ditto.
10920         (IX86_BUILTIN_PHADDUBQ): Ditto.
10921         (IX86_BUILTIN_PHADDUWD): Ditto.
10922         (IX86_BUILTIN_PHADDUWQ): Ditto.
10923         (IX86_BUILTIN_PHADDUDQ): Ditto.
10924         (IX86_BUILTIN_PHSUBBW): Ditto.
10925         (IX86_BUILTIN_PHSUBWD): Ditto.
10926         (IX86_BUILTIN_PHSUBDQ): Ditto.
10927         (IX86_BUILTIN_PROTB): Ditto.
10928         (IX86_BUILTIN_PROTW): Ditto.
10929         (IX86_BUILTIN_PROTD): Ditto.
10930         (IX86_BUILTIN_PROTQ): Ditto.
10931         (IX86_BUILTIN_PROTB_IMM): Ditto.
10932         (IX86_BUILTIN_PROTW_IMM): Ditto.
10933         (IX86_BUILTIN_PROTD_IMM): Ditto.
10934         (IX86_BUILTIN_PROTQ_IMM): Ditto.
10935         (IX86_BUILTIN_PSHLB): Ditto.
10936         (IX86_BUILTIN_PSHLW): Ditto.
10937         (IX86_BUILTIN_PSHLD): Ditto.
10938         (IX86_BUILTIN_PSHLQ): Ditto.
10939         (IX86_BUILTIN_PSHAB): Ditto.
10940         (IX86_BUILTIN_PSHAW): Ditto.
10941         (IX86_BUILTIN_PSHAD): Ditto.
10942         (IX86_BUILTIN_PSHAQ): Ditto.
10943         (IX86_BUILTIN_FRCZSS): Ditto.
10944         (IX86_BUILTIN_FRCZSD): Ditto.
10945         (IX86_BUILTIN_FRCZPS): Ditto.
10946         (IX86_BUILTIN_FRCZPD): Ditto.
10947         (IX86_BUILTIN_CVTPH2PS): Ditto.
10948         (IX86_BUILTIN_CVTPS2PH): Ditto.
10949         (IX86_BUILTIN_COMEQSS): Ditto.
10950         (IX86_BUILTIN_COMNESS): Ditto.
10951         (IX86_BUILTIN_COMLTSS): Ditto.
10952         (IX86_BUILTIN_COMLESS): Ditto.
10953         (IX86_BUILTIN_COMGTSS): Ditto.
10954         (IX86_BUILTIN_COMGESS): Ditto.
10955         (IX86_BUILTIN_COMUEQSS): Ditto.
10956         (IX86_BUILTIN_COMUNESS): Ditto.
10957         (IX86_BUILTIN_COMULTSS): Ditto.
10958         (IX86_BUILTIN_COMULESS): Ditto.
10959         (IX86_BUILTIN_COMUGTSS): Ditto.
10960         (IX86_BUILTIN_COMUGESS): Ditto.
10961         (IX86_BUILTIN_COMORDSS): Ditto.
10962         (IX86_BUILTIN_COMUNORDSS): Ditto.
10963         (IX86_BUILTIN_COMFALSESS): Ditto.
10964         (IX86_BUILTIN_COMTRUESS): Ditto.
10965         (IX86_BUILTIN_COMEQSD): Ditto.
10966         (IX86_BUILTIN_COMNESD): Ditto.
10967         (IX86_BUILTIN_COMLTSD): Ditto.
10968         (IX86_BUILTIN_COMLESD): Ditto.
10969         (IX86_BUILTIN_COMGTSD): Ditto.
10970         (IX86_BUILTIN_COMGESD): Ditto.
10971         (IX86_BUILTIN_COMUEQSD): Ditto.
10972         (IX86_BUILTIN_COMUNESD): Ditto.
10973         (IX86_BUILTIN_COMULTSD): Ditto.
10974         (IX86_BUILTIN_COMULESD): Ditto.
10975         (IX86_BUILTIN_COMUGTSD): Ditto.
10976         (IX86_BUILTIN_COMUGESD): Ditto.
10977         (IX86_BUILTIN_COMORDSD): Ditto.
10978         (IX86_BUILTIN_COMUNORDSD): Ditto.
10979         (IX86_BUILTIN_COMFALSESD): Ditto.
10980         (IX86_BUILTIN_COMTRUESD): Ditto.
10981         (IX86_BUILTIN_COMEQPS): Ditto.
10982         (IX86_BUILTIN_COMNEPS): Ditto.
10983         (IX86_BUILTIN_COMLTPS): Ditto.
10984         (IX86_BUILTIN_COMLEPS): Ditto.
10985         (IX86_BUILTIN_COMGTPS): Ditto.
10986         (IX86_BUILTIN_COMGEPS): Ditto.
10987         (IX86_BUILTIN_COMUEQPS): Ditto.
10988         (IX86_BUILTIN_COMUNEPS): Ditto.
10989         (IX86_BUILTIN_COMULTPS): Ditto.
10990         (IX86_BUILTIN_COMULEPS): Ditto.
10991         (IX86_BUILTIN_COMUGTPS): Ditto.
10992         (IX86_BUILTIN_COMUGEPS): Ditto.
10993         (IX86_BUILTIN_COMORDPS): Ditto.
10994         (IX86_BUILTIN_COMUNORDPS): Ditto.
10995         (IX86_BUILTIN_COMFALSEPS): Ditto.
10996         (IX86_BUILTIN_COMTRUEPS): Ditto.
10997         (IX86_BUILTIN_COMEQPD): Ditto.
10998         (IX86_BUILTIN_COMNEPD): Ditto.
10999         (IX86_BUILTIN_COMLTPD): Ditto.
11000         (IX86_BUILTIN_COMLEPD): Ditto.
11001         (IX86_BUILTIN_COMGTPD): Ditto.
11002         (IX86_BUILTIN_COMGEPD): Ditto.
11003         (IX86_BUILTIN_COMUEQPD): Ditto.
11004         (IX86_BUILTIN_COMUNEPD): Ditto.
11005         (IX86_BUILTIN_COMULTPD): Ditto.
11006         (IX86_BUILTIN_COMULEPD): Ditto.
11007         (IX86_BUILTIN_COMUGTPD): Ditto.
11008         (IX86_BUILTIN_COMUGEPD): Ditto.
11009         (IX86_BUILTIN_COMORDPD): Ditto.
11010         (IX86_BUILTIN_COMUNORDPD): Ditto.
11011         (IX86_BUILTIN_COMFALSEPD): Ditto.
11012         (IX86_BUILTIN_COMTRUEPD): Ditto.
11013         (IX86_BUILTIN_PCOMEQUB): Ditto.
11014         (IX86_BUILTIN_PCOMNEUB): Ditto.
11015         (IX86_BUILTIN_PCOMLTUB): Ditto.
11016         (IX86_BUILTIN_PCOMLEUB): Ditto.
11017         (IX86_BUILTIN_PCOMGTUB): Ditto.
11018         (IX86_BUILTIN_PCOMGEUB): Ditto.
11019         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
11020         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
11021         (IX86_BUILTIN_PCOMEQUW): Ditto.
11022         (IX86_BUILTIN_PCOMNEUW): Ditto.
11023         (IX86_BUILTIN_PCOMLTUW): Ditto.
11024         (IX86_BUILTIN_PCOMLEUW): Ditto.
11025         (IX86_BUILTIN_PCOMGTUW): Ditto.
11026         (IX86_BUILTIN_PCOMGEUW): Ditto.
11027         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
11028         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
11029         (IX86_BUILTIN_PCOMEQUD): Ditto.
11030         (IX86_BUILTIN_PCOMNEUD): Ditto.
11031         (IX86_BUILTIN_PCOMLTUD): Ditto.
11032         (IX86_BUILTIN_PCOMLEUD): Ditto.
11033         (IX86_BUILTIN_PCOMGTUD): Ditto.
11034         (IX86_BUILTIN_PCOMGEUD): Ditto.
11035         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
11036         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
11037         (IX86_BUILTIN_PCOMEQUQ): Ditto.
11038         (IX86_BUILTIN_PCOMNEUQ): Ditto.
11039         (IX86_BUILTIN_PCOMLTUQ): Ditto.
11040         (IX86_BUILTIN_PCOMLEUQ): Ditto.
11041         (IX86_BUILTIN_PCOMGTUQ): Ditto.
11042         (IX86_BUILTIN_PCOMGEUQ): Ditto.
11043         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
11044         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
11045         (IX86_BUILTIN_PCOMEQB): Ditto.
11046         (IX86_BUILTIN_PCOMNEB): Ditto.
11047         (IX86_BUILTIN_PCOMLTB): Ditto.
11048         (IX86_BUILTIN_PCOMLEB): Ditto.
11049         (IX86_BUILTIN_PCOMGTB): Ditto.
11050         (IX86_BUILTIN_PCOMGEB): Ditto.
11051         (IX86_BUILTIN_PCOMFALSEB): Ditto.
11052         (IX86_BUILTIN_PCOMTRUEB): Ditto.
11053         (IX86_BUILTIN_PCOMEQW): Ditto.
11054         (IX86_BUILTIN_PCOMNEW): Ditto.
11055         (IX86_BUILTIN_PCOMLTW): Ditto.
11056         (IX86_BUILTIN_PCOMLEW): Ditto.
11057         (IX86_BUILTIN_PCOMGTW): Ditto.
11058         (IX86_BUILTIN_PCOMGEW): Ditto.
11059         (IX86_BUILTIN_PCOMFALSEW): Ditto.
11060         (IX86_BUILTIN_PCOMTRUEW): Ditto.
11061         (IX86_BUILTIN_PCOMEQD): Ditto.
11062         (IX86_BUILTIN_PCOMNED): Ditto.
11063         (IX86_BUILTIN_PCOMLTD): Ditto.
11064         (IX86_BUILTIN_PCOMLED): Ditto.
11065         (IX86_BUILTIN_PCOMGTD): Ditto.
11066         (IX86_BUILTIN_PCOMGED): Ditto.
11067         (IX86_BUILTIN_PCOMFALSED): Ditto.
11068         (IX86_BUILTIN_PCOMTRUED): Ditto.
11069         (IX86_BUILTIN_PCOMEQQ): Ditto.
11070         (IX86_BUILTIN_PCOMNEQ): Ditto.
11071         (IX86_BUILTIN_PCOMLTQ): Ditto.
11072         (IX86_BUILTIN_PCOMLEQ): Ditto.
11073         (IX86_BUILTIN_PCOMGTQ): Ditto.
11074         (IX86_BUILTIN_PCOMGEQ): Ditto.
11075         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
11076         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
11077         (enum multi_arg_type): New enum for describing the various SSE5
11078         intrinsic argument types.
11079         (bdesc_multi_arg): New table for SSE5 intrinsics.
11080         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
11081         (ix86_expand_multi_arg_builtin): New function for creating SSE5
11082         intrinsics.
11083         (ix86_expand_builtin): Add SSE5 intrinsic support.
11084         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
11085         operand instructions.
11086         (ix86_expand_sse5_multiple_memory): New function to split the
11087         second memory reference from SSE5 instructions.
11088         (type_has_variadic_args_p): Delete in favor of stdarg_p.
11089         (ix86_return_pops_args): Use stdarg_p to determine if the function
11090         has variable arguments.
11091         (ix86_setup_incoming_varargs): Ditto.
11092         (x86_this_parameter): Ditto.
11093
11094         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
11095         declaration.
11096         (ix86_expand_sse5_pack): Ditto.
11097         (ix86_sse5_valid_op_p): Ditto.
11098         (ix86_expand_sse5_multiple_memory): Ditto.
11099
11100         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
11101         constant for SSE5 support.
11102         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
11103         (UNSPEC_SSE5_TRUEFALSE): Ditto.
11104         (UNSPEC_SSE5_PERMUTE): Ditto.
11105         (UNSPEC_SSE5_ASHIFT): Ditto.
11106         (UNSPEC_SSE5_LSHIFT): Ditto.
11107         (UNSPEC_FRCZ): Ditto.
11108         (UNSPEC_CVTPH2PS): Ditto.
11109         (UNSPEC_CVTPS2PH): Ditto.
11110         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
11111         (PCOM_TRUE): Ditto.
11112         (COM_FALSE_S): Ditto.
11113         (COM_FALSE_P): Ditto.
11114         (COM_TRUE_S): Ditto.
11115         (COM_TRUE_P): Ditto.
11116         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
11117         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
11118         types.
11119         (memory attribute): Ditto.
11120         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
11121         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
11122         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
11123         (floor<mode>2): Ditto.
11124         (ceil<mode>2): Ditto.
11125         (btrunc<mode>2): Ditto.
11126         (nearbyintdf2): Ditto.
11127         (nearbyintsf2): Ditto.
11128         (sse_setccsf): Disable if SSE5.
11129         (sse_setccdf): Ditto.
11130         (sse5_setcc<mode>): New support for SSE5 conditional move.
11131         (sse5_pcmov_<mode>): Ditto.
11132
11133         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
11134         (SSEMODEF4): Ditto.
11135         (SSEMODEF2P): Ditto.
11136         (ssemodesuffixf4): New mode attribute for SSE5.
11137         (ssemodesuffixf2s): Ditto.
11138         (ssemodesuffixf2c): Ditto.
11139         (sserotatemax): Ditto.
11140         (ssescalarmode): Ditto.
11141         (sse_maskcmpv4sf3): Disable if SSE5.
11142         (sse_maskcmpv2df3): Ditto.
11143         (sse_vmmaskcmpv4sf3): Ditto.
11144         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
11145         (sse5_vmfmadd<mode>4): Ditto.
11146         (sse5_fmsub<mode>4): Ditto.
11147         (sse5_vmfmsub<mode>4): Ditto.
11148         (sse5_fnmadd<mode>4): Ditto.
11149         (sse5_vmfnmadd<mode>4): Ditto.
11150         (sse5_fnmsub<mode>4): Ditto.
11151         (sse5_vmfnmsub<mode>4): Ditto.
11152         (sse5i_fmadd<mode>4): Ditto.
11153         (sse5i_fmsub<mode>4): Ditto.
11154         (sse5i_fnmadd<mode>4): Ditto.
11155         (sse5i_fnmsub<mode>4): Ditto.
11156         (sse5i_vmfmadd<mode>4): Ditto.
11157         (sse5i_vmfmsub<mode>4): Ditto.
11158         (sse5i_vmfnmadd<mode>4): Ditto.
11159         (sse5i_vmfnmsub<mode>4): Ditto.
11160         (mulv16qi3): Add SSE5 support.
11161         (mulv4si3): Ditto.
11162         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
11163         (sse2_mulv4si3): Disable if SSE5.
11164         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
11165         (sse4_1_roundps): Ditto.
11166         (sse4_1_roundsd): Ditto.
11167         (sse4_1_roundss): Ditto.
11168         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
11169         be generated.
11170         (sse_maskcmpsf3): Ditto.
11171         (sse_vmmaskcmpv4sf3): Ditto.
11172         (sse2_maskcmpv2df3): Ditto.
11173         (sse2_maskcmpdf3): Ditto.
11174         (sse2_vmmaskcmpv2df3): Ditto.
11175         (sse2_eq<mode>3): Ditto.
11176         (sse2_gt<mode>3): Ditto.
11177         (sse5_pcmov_<mode>): Add SSE5 support.
11178         (vec_unpacku_hi_v16qi): Ditto.
11179         (vec_unpacks_hi_v16qi): Ditto.
11180         (vec_unpacku_lo_v16qi): Ditto.
11181         (vec_unpacks_lo_v16qi): Ditto.
11182         (vec_unpacku_hi_v8hi): Ditto.
11183         (vec_unpacks_hi_v8hi): Ditto.
11184         (vec_unpacku_lo_v8hi): Ditto.
11185         (vec_unpacks_lo_v8hi): Ditto.
11186         (vec_unpacku_hi_v4si): Ditto.
11187         (vec_unpacks_hi_v4si): Ditto.
11188         (vec_unpacku_lo_v4si): Ditto.
11189         (vec_unpacks_lo_v4si): Ditto.
11190         (sse5_pmacsww): New SSE5 intrinsic insn.
11191         (sse5_pmacssww): Ditto.
11192         (sse5_pmacsdd): Ditto.
11193         (sse5_pmacssdd): Ditto.
11194         (sse5_pmacssdql): Ditto.
11195         (sse5_pmacssdqh): Ditto.
11196         (sse5_pmacsdqh): Ditto.
11197         (sse5_pmacsswd): Ditto.
11198         (sse5_pmacswd): Ditto.
11199         (sse5_pmadcsswd): Ditto.
11200         (sse5_pmadcswd): Ditto.
11201         (sse5_pcmov_<move>): Conditional move support on SSE5.
11202         (sse5_phaddbw): New SSE5 intrinsic insn.
11203         (sse5_phaddbd): Ditto.
11204         (sse5_phaddbq): Ditto.
11205         (sse5_phaddwd): Ditto.
11206         (sse5_phaddwq): Ditto.
11207         (sse5_phadddq): Ditto.
11208         (sse5_phaddubw): Ditto.
11209         (sse5_phaddubd): Ditto.
11210         (sse5_phaddubq): Ditto.
11211         (sse5_phadduwd): Ditto.
11212         (sse5_phadduwq): Ditto.
11213         (sse5_phaddudq): Ditto.
11214         (sse5_phsubbw): Ditto.
11215         (sse5_phsubwd): Ditto.
11216         (sse5_phsubdq): Ditto.
11217         (sse5_pperm): Ditto.
11218         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
11219         (sse5_pperm_zero_v16qi_v8hi): Ditto.
11220         (sse5_pperm_sign_v8hi_v4si): Ditto.
11221         (sse5_pperm_zero_v8hi_v4si): Ditto.
11222         (sse5_pperm_sign_v4si_v2di): Ditto.
11223         (sse5_pperm_sign_v4si_v2di): Ditto.
11224         (sse5_pperm_pack_v2di_v4si): Ditto.
11225         (sse5_pperm_pack_v4si_v8hi): Ditto.
11226         (sse5_pperm_pack_v8hi_v16qi): Ditto.
11227         (sse5_perm<mode>): New SSE5 intrinsic insn.
11228         (rotl<mode>3): Ditto.
11229         (sse5_rotl<mode>3): Ditto.
11230         (sse5_ashl<mode>3): Ditto.
11231         (sse5_lshl<mode>3): Ditto.
11232         (sse5_frcz<mode>2): Ditto.
11233         (sse5s_frcz<mode>2): Ditto.
11234         (sse5_cvtph2ps): Ditto.
11235         (sse5_cvtps2ph): Ditto.
11236         (sse5_vmmaskcmp<mode>3): Ditto.
11237         (sse5_com_tf<mode>3): Ditto.
11238         (sse5_maskcmp<mode>3): Ditto.
11239         (sse5_maskcmp_uns<mode>3): Ditto.
11240         (sse5_maskcmp_uns2<mode>3): Ditto.
11241         (sse5_pcom_tf<mode>3): Ditto.
11242
11243         * config/i386/predicates.md (sse5_comparison_float_operator):
11244         New predicate to match the comparison operators supported by
11245         the SSE5 com instruction.
11246         (ix86_comparison_int_operator): New predicate to match just the
11247         signed int comparisons.
11248         (ix86_comparison_uns_operator): New predicate to match just the
11249         unsigned int comparisons.
11250
11251         * doc/invoke.texi (-msse5): Add documentation.
11252         (-mfused-madd): Ditto.
11253
11254         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
11255
11256         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
11257         mmintrin-common.h.
11258         (x86_64-*-*): Ditto.
11259
11260         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
11261
11262         * config/i386/bmmintrin.h: New file, provide common x86 compiler
11263         intrinisics for SSE5.
11264
11265         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
11266         mmintrin-common.h.
11267
11268         * config/i386/mmintrin-common.h: New file, to contain common
11269         instructions between SSE4.1 and SSE5.
11270
11271         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
11272         FOREACH_FUNCTION_ARGS to iterate over the argument list.
11273         (gen_regparm_prefix): Ditto.
11274
11275         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
11276         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
11277         prototype_p to determine if a function is prototyped.
11278
11279 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
11280
11281         * c-common.c (c_common_reswords) add the alignof keyword,
11282         with same RID as __alignof and __alignof__
11283
11284 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
11285
11286         * hooks.h (hook_bool_const_int_const_int_true): Declare.
11287         * hooks.c (hook_bool_const_int_const_int_true): New function.
11288         * target.h (struct gcc_target): Add can_eliminate field.
11289         * target-def.h (TARGET_CAN_ELIMINATE): Define.
11290         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
11291         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
11292         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
11293         (elim_table): Revise comment.
11294         * system.h (CAN_ELIMINATE): Poison.
11295         * defaults.h (CAN_ELIMINATE): Remove.
11296         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
11297
11298         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
11299         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
11300         Define macro.
11301         (alpha_vms_can_eliminate): Declare as static, change return type to
11302         bool.
11303         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
11304
11305         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
11306         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
11307         (arm_can_eliminate): New function.
11308
11309         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
11310         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
11311         (avr_can_eliminate): Declare as static.
11312         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
11313
11314         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
11315         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
11316         (bfin_can_eliminate): New function.
11317
11318         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
11319         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
11320         (crx_can_eliminate): New function.
11321
11322         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
11323         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
11324         (fr30_can_eliminate): New function.
11325
11326         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
11327         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
11328         (frv_can_eliminate): New function.
11329
11330         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
11331         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
11332         (h8300_can_eliminate): New function.
11333
11334         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
11335         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
11336         (i386_can_eliminate): Declare as static, change return type to bool.
11337         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
11338
11339         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
11340         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
11341         (ia64_can_eliminate): New function.
11342
11343         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
11344         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
11345         (iq2000_can_eliminate): New function.
11346
11347         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
11348         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
11349         (m32r_can_eliminate): New function.
11350
11351         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
11352         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
11353         (m68hc11_can_eliminate): New function.
11354
11355         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
11356         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
11357         (m68k_can_eliminate): New function.
11358
11359         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
11360         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
11361         (mep_can_eliminate): New function.
11362
11363         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
11364         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
11365         (mips_can_eliminate): New function.
11366
11367         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
11368         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
11369         (rs6000_can_eliminate): New function.
11370
11371         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
11372         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
11373         (s390_can_eliminate): Declare as static.
11374         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
11375
11376         * config/score/score.h (CAN_ELIMINATE): Remove macro.
11377         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
11378         (score_can_eliminate): New function.
11379
11380         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
11381         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
11382         (sparc_can_eliminate): Declare as static.
11383         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
11384
11385         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
11386         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
11387         (xstormy16_can_eliminate): New function.
11388
11389         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
11390         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
11391         (v850_can_eliminate): New function.
11392
11393 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
11394
11395         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
11396         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
11397         (*movdfcc_ext[1234]): Disable for IEEE mode.
11398
11399 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
11400
11401         * gimplify.c (prepare_gimple_addressable): New static function.
11402         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
11403         it addressable.
11404         (gimplify_addr_expr): Invoke it similarly on the operand instead of
11405         manually fiddling with it.
11406
11407 2009-08-25  Michael Matz  <matz@suse.de>
11408
11409         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
11410         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
11411         full expression.
11412         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
11413         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
11414         (do_jump): Split out code for simple binary comparisons into ...
11415         (do_jump_1): ... this, taking the individual operands and code.
11416         Change callers to helper function above accordingly.
11417         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
11418         comparisons.
11419
11420 2009-08-25  Michael Matz  <matz@suse.de>
11421
11422         * expr.h (struct separate_ops, sepops): New type for passing
11423         around an exploded simple expression.
11424         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
11425         Use this structure instead of expression tree.
11426         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
11427         expression, only its type.
11428         (expand_vec_cond_expr): Take type and individual operands instead
11429         of full expression.
11430         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
11431         expand_vec_shift_expr): Change prototype accordingly.
11432         * tree-vect-stmts.c (vectorizable_condition): Change call of
11433         expand_vec_cond_expr_p to pass only type.
11434         * expr.c (do_store_flags): Change prototype and implementation
11435         to take an exploded expression.
11436         (expand_expr_real_1): New local ops initialized with details
11437         of the full expression.  Use it instead of full
11438         expression in calls to do_store_flags, expand_vec_cond_expr,
11439         expand_widen_pattern_expr and expand_vec_shift_expr.
11440
11441 2009-08-25  Michael Matz  <matz@suse.de>
11442
11443         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
11444         treeop2 initialized with first three operands of the full expression.
11445         Substitute all TREE_OPERAND (exp, [012]) calls with them.
11446
11447 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
11448
11449         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
11450         (__gthread_objc_condition_allocate): Mark arguments as unused.
11451         (__gthread_objc_condition_deallocate): Likewise.
11452         (__gthread_objc_condition_wait): Likewise.
11453         (__gthread_objc_condition_broadcast): Likewise.
11454         (__gthread_objc_condition_signal): Likewise.
11455         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
11456         (__gthread_objc_thread_id): Likewise.
11457
11458 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
11459
11460         PR middle-end/41149
11461         * tree-pretty-print.c (print_call_name): Print the correct call name
11462         for procedure pointer components.
11463
11464 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
11465
11466         * config/ia64/ia64.c (ia64_promote_function_mode): Call
11467         default_promote_function_mode when not VMS.
11468
11469 2009-08-24  Olivier Hainque  <hainque@adacore.com>
11470
11471         * convert.c (convert_to_integer): Don't assume an input pointer is
11472         POINTER_SIZE wide.  Fetch from the type instead.
11473
11474 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11475
11476         * configure.ac (AC_PREREQ): Bump to 2.64.
11477
11478 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
11479
11480         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
11481         (process_command): Don't search standard_exec_prefix_1 and
11482         standard_exec_prefix_2.
11483
11484 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11485
11486         * config/arm/arm.c (output_return_instruction): Handle for
11487         unified syntax.
11488
11489 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11490
11491         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
11492
11493 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11494
11495         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
11496         (*arm_movdf_vfp): Likewise.
11497
11498 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11499
11500         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
11501         (vashr<mode>3): Rename from ashr<mode>3.
11502         (vlshr<mode>3): Rename from lshr<mode>3.
11503
11504 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
11505
11506         PR/40786
11507         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
11508         (check_format_info_main): Use scalar_identify_flag.
11509         (check_format_types): Check for scalar size identity if
11510         scalar_identify_flag is set.
11511         (printf_length_specs): Extend by new field.
11512         (asm_fprintf_length_specs): Likewise.
11513         (gcc_diag_length_specs): Likewise.
11514         (scanf_length_specs): Likewise.
11515         (strfmon_length_specs): Likewise.
11516         (gcc_gfc_length_specs): Likewise.
11517         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
11518         (ms_printf_flag_specs): Likewise.
11519         * c-format.h (format_length_info): Add new member scalar_identity_flag.
11520
11521 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
11522
11523         PR target/40718
11524         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
11525         (*call_value_pop_1): Ditto.
11526         (*sibcall_pop_1): New insn pattern.
11527         (*sibcall_value_pop_1): Ditto.
11528
11529 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
11530
11531         PR target/41081
11532         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
11533         ashrsi3_64): New.
11534
11535 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
11536
11537         PR target/41081
11538         * fwprop.c (try_fwprop_subst): Allow multiple sets.
11539         (get_reg_use_in): New function.
11540         (forward_propagate_subreg): Propagate through subreg of zero_extend
11541         or sign_extend.
11542
11543 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
11544
11545         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
11546         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
11547
11548 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11549
11550         * configure.ac: Remove --with-datarootdir, --with-docdir,
11551         --with-htmldir switches.  No need to call AC_SUBST for
11552         datarootdir, docdir, htmldir any more.
11553         * configure: Regenerate.
11554         * doc/install.texi (Configuration): Document --datarootdir,
11555         --docdir, --htmldir, --pdfdir; update documentation for
11556         --infodir, --mandir.
11557         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
11558         M4 to 1.4.6.
11559
11560         * aclocal.m4: Regenerate.
11561         * config.in: Regenerate.
11562         * configure: Regenerate.
11563
11564 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
11565             Olivier Hainque  <hainque@adacore.com>
11566
11567         * config/ia64/ia64.c: Include libfuncs.h.
11568         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
11569         (ia64_expand_call): Use reg 25 on VMS.
11570         (ia64_initialize_trampoline): Fix for VMS ABI.
11571         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
11572         (ia64_function_arg): Initialize reg 25 on VMS.
11573         Fix OpenVMS ABI issues for varargs.
11574         For OpenVMS, emit the Argument Information register set in the
11575         incoming/sibcall case as well.
11576         (ia64_arg_type): New function.
11577         (ia64_function_arg_advance): Keep track of cum->words.
11578         Fix OpenVMS ABI issues for varargs.
11579         (ia64_function_value): On VMS, promote mode of non-aggregate types.
11580         (ia64_override_options): Set flag_no_common on VMS.
11581         (ia64_init_builtins): Disable FWRITE builtin.
11582         (ia64_asm_output_external): Call DO_CRTL_NAMES.
11583         (ia64_vms_init_libfuncs): Add decc$ routines.
11584         (ia64_vms_valid_pointer_mode): New function.
11585         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
11586         (ia64_promote_function_mode): New function
11587         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
11588         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
11589         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
11590         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
11591         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
11592         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
11593         Suppress trailing '#' if VALUE is numeric.
11594         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
11595         ia64_promote_function_mode.
11596         (TARGET_VALID_POINTER_MODE): Define.
11597
11598 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
11599
11600         PR target/40671
11601         * config/rs6000/rs6000.c (rs6000_override_options): Use
11602         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
11603
11604         PR target/41145
11605         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
11606         reporting of vector + decimal/boolean/complex error.
11607
11608 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
11609
11610         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
11611         __vector double TYPE_DECL.
11612
11613 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
11614
11615         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
11616         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
11617         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
11618         to pointer to enum machine_mode.  Update all callers as needed.
11619
11620 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
11621
11622         * config/alpha/alpha.md (exception_receiver): Emit alternative
11623         GP load sequence if flag_reorder_blocks_and_partition is set.
11624         (*exception_receiver_2): Also enable when
11625         flag_reorder_blocks_and_partition is set.
11626
11627 2009-08-20  Matt Rice  <ratmice@gmail.com>
11628             Diego Novillo  <dnovillo@google.com>
11629
11630         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
11631         tree-ssa-sccvn.h.
11632
11633 2009-08-20  Richard Guenther  <rguenther@suse.de>
11634
11635         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
11636         * c-tree.h (c_dup_lang_specific_decl): Remove.
11637         (struct lang_decl, struct lang_type): Move definitions ...
11638         * c-lang.h: ... here.  New file.
11639         * c-decl.c: Include c-lang.h.
11640         (c_dup_lang_specific_decl): Remove.
11641         * c-typeck.c: Include c-lang.h.
11642         * Makefile.in (c-decl.o): Add c-lang.h dependency.
11643         (c-typeck.o): Likewise.
11644         * c-config-lang.in (gtfiles): Add c-lang.h.
11645         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
11646         like c-tree.h.
11647
11648 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
11649
11650         * config/alpha/alpha.c (alpha_end_function): Do not clear
11651         crtl->emit structure and free insn locators if cfun->is_thunk is true,
11652         this is now handled in generic code.
11653
11654 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
11655
11656         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
11657         (s390_z10_fix_long_loop_prediction): New function.
11658         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
11659         (s390_reorg): Walk over the INSNs and invoke
11660         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
11661
11662 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
11663
11664         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
11665         "*brx_64bit", "*brx_31bit"): New patterns.
11666         * config/s390/s390.c ('E'): New output modifier.
11667
11668 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11669             Richard Earnshaw  <richard.earnshaw@arm.com>
11670
11671         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
11672         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
11673
11674 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11675
11676         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
11677         patterns.
11678         * pa.c (emit_move_sequence): Check if address of operand1 is valid
11679         for mode mode of operand0 when doing secondary reload for SAR.
11680
11681 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
11682
11683         PR middle-end/41123
11684         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
11685         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
11686
11687 2009-08-19  Jason Merrill  <jason@redhat.com>
11688
11689         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
11690         supported template depth in C++0x.
11691
11692 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
11693
11694         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
11695         free_after_compilation.
11696         * config/score/score7.c (score7_output_mi_thunk): Likewise.
11697         * config/score/score3.c (score3_output_mi_thunk): Likewise.
11698         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
11699         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
11700         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
11701         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
11702         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
11703
11704 2009-08-19  Ian Lance Taylor  <iant@google.com>
11705
11706         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
11707         of (plus (mult (neg B) C) A).
11708
11709 2009-08-18  Michael Matz  <matz@suse.de>
11710
11711         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
11712         instead of comparing TYPE_MAIN_VARIANT for equality.
11713         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
11714         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
11715         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
11716         * gimplify.c (goa_lhs_expr_p): Ditto and use
11717         STRIP_USELESS_TYPE_CONVERSION.
11718
11719 2009-08-18  Michael Matz  <matz@suse.de>
11720
11721         * tree-ssa-structalias.c (create_variable_info_for): Also mark
11722         first field in a struct.
11723         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
11724
11725 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
11726
11727         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
11728         locators before emit_insn is called.  Remove assert that
11729         cfun->is_thunk.
11730         (alpha_end_function): Clear crtl->emit structure and free insn
11731         locators if cfun->is_thunk is true.
11732
11733 2009-08-18  Jason Merrill  <jason@redhat.com>
11734
11735         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
11736         type if available.
11737         * configure.ac: Test for it.
11738         * configure, config.in: Regenerate.
11739         * doc/install.texi: Document --enable-gnu-unique-object.
11740
11741 2009-08-18  Richard Guenther  <rguenther@suse.de>
11742
11743         PR middle-end/41094
11744         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
11745         pow(x,y*z) only if x is nonnegative.
11746
11747 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
11748
11749         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
11750         on jumps.
11751
11752         PR target/40971
11753         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
11754         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
11755
11756 2009-08-17  DJ Delorie  <dj@redhat.com>
11757
11758         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
11759         * config/m32c/prologue.md (epilogue_freit): New.
11760         (fset_b): New.
11761         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
11762         (bank_switch_p): Likewise.
11763         (fast_interrupt_p): Likewise.
11764         (interrupt_p): Likewise.
11765         (m32c_conditional_register_usage): Round memregs size up.
11766         (need_to_save): We only need to save $a0 when we use ENTER.
11767         (interrupt_p): Check for fast_interrupt too.
11768         (bank_switch_p): New.
11769         (fast_interrupt_p): New.
11770         (m32c_attribute_table): Add bank_switch and fast_interrupt.
11771         (m32c_emit_prolog): Support bank switching and fast interrupts.
11772         * doc/extend.texi (Function Attributes): Add bank_switch and
11773         fast_interrupt.
11774
11775 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
11776
11777         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
11778         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
11779
11780 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
11781
11782         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
11783         (menu): Add IA-64/VMS Options.
11784         (IA-64/VMS Options): Likewise.
11785
11786 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
11787
11788         PR target/38599
11789         * config/mips/mips.md (*lwxs): Use :P for pointer values.
11790
11791 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
11792
11793         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
11794         (mips_pop_asm_switch): Likewise.
11795         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
11796         with...
11797         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
11798         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
11799         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
11800         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
11801         instead of set_noreorder.
11802         (mips_output_function_prologue): Use the new functions.
11803         (mips_output_function_epilogue): Likewise.
11804         (mips_need_noat_wrapper_p): New function, split out from...
11805         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
11806         Use mips_push_asm_switch and mips_pop_asm_switch.
11807         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
11808         and mips_pop_asm_switch.
11809         (ASM_OUTPUT_REG_POP): Likewise.
11810         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
11811         Use mips_pop_asm_switch.
11812         (mips_asm_switch): New structure.
11813         (set_noreorder, set_nomacro): Replace with...
11814         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
11815         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
11816         instead of set_nomacro.
11817         (fix_truncsfsi2_macro): Likewise.
11818         (cprestore): Likewise.
11819         (hazard): Use mips_noreorder instead of set_noreorder.
11820         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
11821
11822 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
11823
11824         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
11825         from prev_active_insn.
11826
11827 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
11828
11829         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
11830         * config/avr/avr.c (avr_override_options): Initialize
11831         avr_current_arch variable.
11832         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
11833         __AVR_HAVE_16BIT_SP__ according to the device type.
11834         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
11835         TARGET_TINY_STACK.
11836         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
11837         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
11838
11839 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
11840
11841         PR debug/37801
11842         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
11843         generating inlined subroutine die only. We shouldn't be
11844         called for anything else.
11845         (gen_block_die): Don't generate inline subroutine debug info for
11846         abstract blocks.
11847
11848 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
11849
11850         * graphite-poly.c (print_pbb): Print PBB index.
11851
11852 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
11853
11854         PR middle-end/40981
11855         * graphite-interchange.c (ppl_max_for_le): Moved...
11856         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
11857         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
11858         ppl_Pointset_Powerset_C_Polyhedron_maximize.
11859         * graphite-ppl.h (ppl_max_for_le): Declared.
11860
11861 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
11862
11863         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
11864         supported on all platforms.
11865         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
11866         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
11867         * c-pragma.c: Likewise.
11868         * target-def.h (TARGET_INITIALIZER): Remove
11869         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
11870         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
11871
11872 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
11873
11874         * config/ia64/fde-vms.c: New file.
11875         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
11876         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
11877         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
11878         (uw_frame_state_for): Only register a personality routine if it is
11879         known to be compatible with our expectations.
11880         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
11881         Declare unw_table_entry stack variable and
11882         mod all calls to _Unwind_FindTableEntry to add arg.
11883         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
11884         (_Unwind_FindTableEntry): Add arg to prototype.
11885
11886 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
11887
11888         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
11889         field 'signal_pfs_loc'.
11890         (uw_frame_state_for): Remove duplicate code dealing with leaf
11891         procedures without unwind info.
11892         If in the frame after unwinding through a signal handler, restore
11893         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
11894         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
11895         'pfs_loc' to the AR.PFS location in the signal context; instead
11896         set 'signal_pfs_loc'.
11897         Manually generate the unwind info for the AR.PFS register.
11898         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
11899         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
11900         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
11901         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
11902         instead set 'signal_pfs_loc'.
11903         Remove code preventing the AR.PFS register from being restored
11904         from the signal context.
11905
11906 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
11907             Tristan Gingold  <gingold@adacore.com>
11908
11909         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
11910         * config/ia64/t-vms: New file.
11911         * config/ia64/vms64.h: New file.
11912         * config/ia64/vms.h: New file.
11913         * config/ia64/vms-crtinit.asm: New file.
11914         * config/ia64/vms_symvec_libgcc_s.opt: New file.
11915         * config/ia64/vms-unwind.h: New file.
11916
11917 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
11918
11919         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
11920         TFmode compares.
11921
11922 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11923
11924         PR middle-end/30789
11925         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
11926         Move declaration...
11927         * real.h (do_mpc_arg2): ... here.
11928         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
11929         and RDIV_EXPR.
11930
11931 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
11932
11933         * final.c (add_debug_prefix_map): Don't use GC memory for
11934         old_prefix and new_prefix.
11935
11936 2009-08-14  Richard Guenther  <rguenther@suse.de>
11937
11938         * ipa-prop.c (compute_complex_pass_through): If we cannot
11939         compute a non-varying offset for IPA_JF_ANCESTOR punt.
11940
11941 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11942
11943         * c-lex.c (c_lex_with_flags): Increase size of local variable
11944         to avoid memory clobber.
11945
11946 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
11947
11948         PR target/40934
11949         * config/i386/i386.c (ix86_fp_comparison_strategy):
11950         Only enable/disable sahf at function granularity.
11951
11952 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
11953
11954         PR rtl-optimization/41064
11955         * reload1.c (reload_as_needed): Don't call extract_insn
11956         for known invalid replacements after calling
11957         validate_replace_rtx_group and verify_changes.
11958
11959 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
11960
11961         PR target/41019
11962         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
11963         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
11964         ix86_expand_fp_vcond.
11965         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
11966         Assert that operation is supported by ix86_expand_int_vcond.
11967         (vcondu<SSEMODE124C8:mode>): Ditto.
11968
11969 2009-08-13  DJ Delorie  <dj@redhat.com>
11970
11971         * config/i386/djgpp-stdint.h: New.
11972         * config.gcc (djgpp): Use it.
11973
11974 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
11975
11976         * config/sh/sh.c (sh_override_options): When flag_exceptions or
11977         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
11978
11979 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11980
11981         * tree-ssa-loop-prefetch.c
11982         (prune_ref_by_group_reuse): Enhance probabilistic analysis
11983         for long-stride pruning.
11984         (compute_miss_rate): New function to compute the probability
11985         that two memory references access different cache lines.
11986
11987 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
11988
11989         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
11990
11991 2009-08-13  Richard Guenther  <rguenther@suse.de>
11992
11993         PR middle-end/41047
11994         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
11995         use the constant pointer type.
11996         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
11997         of CV qualifiers on the target pointer type.
11998         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
11999         conversion check before restrict check.
12000
12001 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
12002
12003         PR target/41029
12004         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
12005
12006 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
12007
12008         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
12009
12010 2009-08-12  Richard Guenther  <rguenther@suse.de>
12011
12012         PR tree-optimization/41011
12013         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
12014         and reference constructing.
12015
12016 2009-08-12  Xinliang David Li  <davidxl@google.com>
12017
12018         PR tree-optimization/41012
12019         * tree-flow.h : New external interface.
12020         * gimple-low.c (check_call_arg): Change to public function.
12021         Remove argument mismatch check in lowering.
12022         * tree-inline.h (tree_can_inline_p): Interface change.
12023         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
12024         into this function.
12025         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
12026         Call change to tree_can_inline_p function.
12027         (cgraph_decide_inlining_incrementally): Ditto.
12028
12029 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
12030
12031         PR tree-optimization/41031
12032         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
12033         on the partition variable rather than promote_mode on the source
12034         type.  Assert that the partition variable's type has the same
12035         mode as the source value's.
12036
12037 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
12038
12039         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
12040         for for_return == 2.
12041         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
12042         comments.
12043         * calls.c (expand_call): Fix typo.
12044         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
12045         and PARM_DECL.
12046         * stmt.c (expand_value_return): Use promote_function_mode to copy out
12047         of pseudo.
12048         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
12049         * config/cris/cris.c (cris_promote_function_mode): Likewise.
12050         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
12051         * config/pa/pa.c (pa_promote_function_mode): Likewise.
12052
12053 2009-08-12  Andrew Haley  <aph@redhat.com>
12054
12055         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
12056
12057 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12058
12059         PR bootstrap/40103
12060         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
12061
12062 2009-08-12  Richard Guenther  <rguenther@suse.de>
12063
12064         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
12065         * gimplify.c (gimplify_modify_expr): Do not use
12066         lang_hooks.types_compatible_p.
12067         * tree-ssa.c (useless_type_conversion_p): For aggregates
12068         just return false if the canonical types differ.
12069
12070 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12071
12072         PR middle-end/40980
12073         * sese.c (convert_for_phi_arg): New.
12074         (add_guard_exit_phis): Use convert_for_phi_arg.
12075
12076 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12077
12078         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
12079         unknown subscript upper bounds.
12080
12081 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12082             Pranav Garg  <pranav.garg2107@gmail.com>
12083
12084         * graphite-interchange.c (gather_access_strides): Removed.
12085         (ppl_max_for_le): New.
12086         (build_linearized_memory_access): New.
12087         (memory_stride_in_loop): New.
12088         (pbb_interchange_profitable_p): Reimplemented.
12089         * graphite-ppl.h (ppl_new_id_map): New.
12090         (ppl_interchange): New.
12091
12092 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12093
12094         * graphite-interchange.c (compute_subscript): Removed.
12095         (compute_array_size_cstr): Removed.
12096         (compute_array_size_poly): Removed.
12097         (compute_array_size): Removed.
12098         (gather_access_strides_poly): Removed.
12099         (gather_access_strides): Empty.
12100
12101 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12102
12103         * graphite-dependences.c (dependence_polyhedron_1): Replace
12104         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
12105         (graphite_legal_transform_dr): Same.
12106         (graphite_carried_dependence_level_k): Same.
12107         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
12108         Initialize PDR_NB_SUBSCRIPTS.
12109         (print_pdr_access_layout): Replace pdr_nb_subscripts with
12110         PDR_NB_SUBSCRIPTS.
12111         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
12112         (PDR_NB_SUBSCRIPTS): New.
12113         (pdr_nb_subscripts): Removed.
12114         (pdr_dim): Simplified.
12115         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
12116         with PDR_NB_SUBSCRIPTS.
12117
12118 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12119
12120         * graphite-interchange.c (compute_array_size): Remove use of
12121         PDR_DATA_CONTAINER.
12122         * graphite-poly.c (new_poly_dr): Remove argument data_container.
12123         Do not initialize PDR_DATA_CONTAINER.
12124         (print_pdr): Do not print PDR_DATA_CONTAINER.
12125         * graphite-poly.h (struct poly_dr): Remove data_container field.
12126         (PDR_DATA_CONTAINER): Removed.
12127         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
12128         PDR_DATA_CONTAINER.
12129         (build_poly_dr): Same.
12130
12131 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
12132             Sebastian Pop  <sebastian.pop@amd.com>
12133
12134         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
12135         copy of the dependence polyhedron.  Free the temporary objects.
12136         (graphite_carried_dependence_level_k): Free unused objects before
12137         returning.
12138
12139 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12140
12141         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
12142         Early return without analyzing the data dependences if no
12143         transform has been done.  Call restore_scattering if the transform
12144         is not legal.
12145         (graphite-interchange.c): Same.
12146         * graphite-poly.c (print_scattering_function): Test for
12147         PBB_TRANSFORMED.
12148         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
12149         (apply_poly_transforms): Do not gcc_assert that
12150         the transform is legal.
12151         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
12152         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
12153         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
12154         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
12155         * graphite-poly.h (struct poly_scattering): New.
12156         (struct poly_bb): Add original, transformed, and saved fields.
12157         Remove transformed_scattering, original_scattering,
12158         nb_local_variables and nb_scattering_transform fields.
12159         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
12160         (poly_scattering_new): New.
12161         (poly_scattering_free): New.
12162         (poly_scattering_copy): New.
12163         (store_scattering_pbb): New.
12164         (store_scattering): New.
12165         (restore_scattering_pbb): New.
12166         (restore_scattering): New.
12167         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
12168         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
12169
12170 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12171
12172         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
12173         (print_scop): Same.
12174
12175 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12176
12177         * Makefile.in (graphite.o): Depends on PREDICT_H.
12178         * graphite.c: Include predict.h.
12179         (graphite_finalize): Call tree_estimate_probability.
12180         * predict.c (predict_loops): Do not call scev_initialize and
12181         scev_finalize.
12182         (tree_estimate_probability_bb): New.
12183         (tree_estimate_probability): Do not initialize loops: move that
12184         code to the driver.  Call tree_estimate_probability_bb.
12185         (tree_estimate_probability_driver): New.
12186         (pass_profile): Use tree_estimate_probability_driver.
12187         * predict.h (tree_estimate_probability): Declared.
12188
12189 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12190
12191         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
12192         * graphite-dependences.c (graphite_legal_transform): Add time to
12193         TV_GRAPHITE_DATA_DEPS.
12194         (dependency_between_pbbs_p): Same.
12195         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
12196
12197 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
12198
12199         PR rtl-optimization/41033
12200         * alias.c (nonoverlapping_component_refs_p): Punt when strict
12201         aliasing is disabled.
12202
12203 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
12204
12205         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
12206         si_mask_operand, and_load_operand, low_bitmask_operand,
12207         and_reg_operand, and_operand): New predicates.
12208         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
12209         * config/mips/mips.c (and_operands_ok): New function.
12210         * config/mips/mips-protos.h (and_operands_ok): Declare it.
12211         * config/mips/mips.md (move_type): Add ext_ins and logical.
12212         (type): Handle them.
12213         (and<mode>3): Use and_reg_operand as the second operand's predicate.
12214         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
12215         shift_shift.  Remove commutative constraint modifier.
12216         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
12217         shift_shift.
12218         (*clear_upper32_dext): Remove define_insn_and_split.
12219         (*clear_upper32): Turn this define_insn_and_split ...
12220         (splitter for ANDing register with 0xffff_ffff): .. into this.
12221
12222 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
12223
12224         * combine.c (try_widen_shift_mode): Factor out code to check if an
12225         integer constant is a low-order bitmask from here ...
12226         * rtlanal.c (low_bitmask_len): ... to here.
12227         * rtl.h (low_bitmask_len): Declare.
12228
12229 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
12230
12231         PR target/8603
12232         * config/alpha/alpha.md (addsi3): Remove expander.
12233         (addsi3): Rename from *addsi3_internal insn pattern.
12234         (subsi3): Remove expander.
12235         (subsi3): Rename from *subsi3_internal insn pattern.
12236
12237 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
12238
12239         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
12240         FWRITE_UNLOCKED.
12241
12242 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
12243             Eric Botcazou  <botcazou@adacore.com>
12244             Douglas B Rupp  <rupp@gnat.com>
12245
12246         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
12247         that records that fit in 64 bits are returned by immediate value,
12248         as required by OpenVMS Calling Standard.
12249         (function_value): Adjust for above modification.
12250         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
12251         virtual_incoming_args_rtx as base object, not next_arg.
12252         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
12253
12254 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12255
12256         * reload.c (find_reloads_subreg_address): Check the original
12257         req_equiv_mem address to detect the case where an address is
12258         not valid in the outer mode.
12259
12260 2009-08-11  Richard Guenther  <rguenther@suse.de>
12261
12262         PR bootstrap/40788
12263         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
12264
12265 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
12266
12267         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
12268         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
12269
12270 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
12271             Douglas B Rupp  <rupp@gnat.com>
12272
12273         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
12274         PT_STACK when frame_pointer_needed on OpenVMS.
12275         (alpha_pv_save_size, alpha_using_fp): Remove.
12276         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
12277         with proper processing for PT_NULL.
12278         (alpha_vms_initial_elimination_offset): New function. Support for
12279         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
12280         (alpha_sa_size): Force procedure type to PT_STACK when
12281         frame_pointer_needed on OpenVMS.
12282         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
12283         (alpha_using_fp): Likewise.
12284         (alpha_vms_can_eliminate): Add prototype.
12285         (alpha_vms_initial_elimination_offset): Likewise.
12286         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
12287         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
12288
12289 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
12290             Douglas B Rupp  <rupp@gnat.com>
12291
12292         * config/alpha/alpha.c (common_object_handler): New function.
12293         (vms_attribute_table): Declare a single attribute "common_object".
12294         (vms_output_aligned_decl_common): New global function.
12295         (SECTION_VMS_OVERLAY): Delete.
12296         (SECTION_VMS_GLOBAL): Likewise.
12297         (SECTION_VMS_INITIALIZE): Likewise.
12298         (vms_asm_named_section): Remove support for above flags.
12299         (vms_section_type_flags): Delete.
12300         (TARGET_SECTION_TYPE_FLAGS): Likewise.
12301         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
12302         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
12303         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
12304
12305 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
12306
12307         PR target/41015
12308         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
12309         (sub_ddmmss): Likewise.
12310
12311 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
12312
12313         PR bootstrap/41018
12314         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
12315         year.
12316
12317 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12318
12319         PR target/37053
12320         * reload1.c (reload_as_needed): Use cancel_changes to completely
12321         undo a failed replacement attempt.
12322
12323 2009-08-10  Richard Guenther  <rguenther@suse.de>
12324
12325         PR middle-end/41006
12326         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
12327         (useless_type_conversion_p): ... here.  Require pointer targets
12328         to be compatible.
12329
12330 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
12331
12332         PR c++/40866
12333         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
12334         loose the original type of the statement list.
12335
12336 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12337
12338         * config/alpha/alpha.c: Include libfuncs.h
12339         (avms_asm_output_extern): New function.
12340         (alpha_init_libfuncs): Init some decc libfuncs.
12341         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
12342         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
12343         (DO_CRTL_NAMES): Define.
12344         (LIB_SPEC): Remove.
12345         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
12346         (LONG_TYPE_SIZE): Define.
12347         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
12348         (SUBTARGET_SWITCHES): Define malloc64 switch.
12349         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
12350         (MASK_RETURN_ADDR): Define.
12351         doc/invoke.texi (mmalloc64): Document switch.
12352
12353 2009-08-09  Olivier Hainque  <hainque@adacore.com>
12354             Douglas B Rupp  <rupp@gnat.com>
12355
12356         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
12357         uses_condition_handler.
12358         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
12359         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
12360         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
12361         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
12362         (code_for_builtin): New insn codes for the new alpha_builtins.
12363         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
12364         (alpha_sa_size): Account for uses_condition_handler.
12365         (alpha_expand_prologue): Likewise.
12366         (alpha_start_function): Likewise.
12367         (alpha_expand_epilogue): Likewise.
12368         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
12369         establish/revert expanders.
12370         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
12371         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
12372         New expander, resorting to the alpha.c associated function.
12373         (builtin_revert_vms_condition_handler): Likewise.
12374         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
12375         __gcc_shell_handler, the static VMS condition handler used as
12376         an indirection wrapper to the current dynamically established
12377         handler.
12378         * config/alpha/vms-unwind.h: Complete rewrite.
12379         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
12380         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
12381
12382 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
12383             Douglas B Rupp  <rupp@gnat.com>
12384
12385         * config/alpha/alpha.c (alpha_links): Add 'target' field.
12386         (alpha_need_linkage): Handle aliases.  Return function symbol.
12387         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
12388         Use ultimate alias target for the linkage name.
12389         * config/alpha/alpha.md (movmemdi): Use the symbol returned
12390         by alpha_need_linkage for the function symbol.
12391         (setmemdi): Likewise.
12392
12393 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12394
12395         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
12396         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
12397         (ASM_WEAKEN_LABEL): Define.
12398         (CRT_CALL_STATIC_FUNCTION): Define.
12399         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
12400         (ENDFILE_SPEC): Define.
12401         (INIT_SECTION_ASM_OP): Define.
12402         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
12403         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
12404         crtend.o crtendS.o.
12405         (MULTILIB_OSDIRNAMES): Define.
12406         (shlib_version): Define.
12407         (SHLIB_EXT): Define.
12408         (SHLIB_OBJS): Define.
12409         (SHLIB_NAME): Define.
12410         (SHLIB_MULTILIB): Define.
12411         (SHLIB_INSTALL): Define.
12412         (SHLIB_SYMVEC): Define.
12413         (SHLIB_SYMVECX2): Define.
12414         (SHLIB_LINK): Define.
12415
12416 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12417
12418         * config/alpha/alpha.c (alpha_initialize_trampoline):
12419         Initialize VMS trampoline IAW ABI for bounded procedure calls.
12420         (alpha_start_function): Emit transfer address on nested functions
12421         for VMS trampoline call.
12422         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
12423         since no longer used.
12424         * config/alpha/vms-tramp.asm: Remove.
12425         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
12426         since now only data initialized at runtime.
12427
12428 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12429
12430         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
12431         (LINK_GCC_C_SEQUENCE_SPEC): Define.
12432         (MD_EXEC_PREFIX): Remove, no longer used.
12433         (MD_STARTFILE_PREFIX): Likewise.
12434         (INCLUDE_DEFAULTS): Likewise.
12435         * config/alpha/t-vms:
12436         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
12437
12438 2009-08-09  Richard Guenther  <rguenther@suse.de>
12439
12440         PR tree-optimization/41016
12441         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
12442         (operand_precision): Remove.
12443         (integral_operand_p): Likewise.
12444         (recognize_single_bit_test): Adjust.
12445
12446 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
12447
12448         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
12449         operation overflows.  Likewise non-cast unary arithmetic.
12450         If one arm of a conditional expression is always taken,
12451         inhibit evaluation warnings for the other arm.  Likewise inhibit
12452         evaluation warnings for the second && or || operand if the first
12453         operand is enough to determine the result.
12454         * c-typeck.c (build_conditional_expr): Apply the same inhibition
12455         rules here.
12456         (build_binary_op): Prevent duplicate evaluation warnings.
12457
12458 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
12459
12460         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
12461         and destination have different modes, Use promote_mode to
12462         determine the signedness of the conversion.  Assert that the
12463         promoted source mode matches the destination mode.  Don't pass
12464         the destination and destination mode to expand_expr if the source
12465         mode is different.  Simplify conversion logic.
12466
12467 2009-08-09  Ira Rosen  <irar@il.ibm.com>
12468
12469         PR tree-optimization/41008
12470         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
12471         from condition only in case it's a comparison. Adjust checks.
12472
12473 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
12474
12475         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
12476         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
12477         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
12478         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
12479         (dump_cand): Handle them.
12480         (struct iv_cand): New members COST_STEP and AINC_USE.
12481         (stmt_after_increment): Likewise.
12482         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
12483         callers changed.  Use gimple_uid comparison instead of scanning.
12484         (add_candidate_1): When looking for identical candidates, take
12485         AINC_USE into account.  Set it for new candidates.
12486         (force_expr_to_var_cost): Cast target_spill_cost to int.
12487         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
12488         All callers changed.  Check for availability of autoinc addressing
12489         modes, both in general for a given mode, and in the specific use case.
12490         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
12491         changed.
12492         (get_computation_cost): Likewise.
12493         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
12494         add_autoinc_candidates): New static functions.
12495         (add_candidate): Call add_autoinc_candidates for candidates based on
12496         a USE_ADDRESS use.
12497         (find_iv_candidates): Call set_autoinc_for_original_candidates.
12498         (determine_use_iv_cost_address): If we have an autoinc candidate at
12499         the matching use, verify autoinc is possible and subtract the cost
12500         of the candidate's step from the cost.
12501         (determine_iv_cost): Record the cost of the increment in the COST_STEP
12502         member of the candidate.
12503         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
12504         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
12505
12506 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12507
12508         * config.build (ia64-hp-*vms*): New target.
12509         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
12510         with ia64-hp-*vms*.
12511         * config.gcc (ia64-hp-*vms*): New target.
12512         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
12513         with ia64-hp-*vms*.
12514         * config.host (ia64-hp-*vms*): New target.
12515         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
12516         with ia64-hp-*vms*.
12517
12518 2009-08-08  Richard Guenther  <rguenther@suse.de>
12519
12520         PR tree-optimization/40991
12521         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
12522
12523 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
12524
12525         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
12526         mode check.  Do truncations in an integer mode.
12527         (force_to_mode): Handle subregs for all mode types.  Only do
12528         arithmetic simplifications on integer modes.
12529
12530 2009-08-07  Richard Guenther  <rguenther@suse.de>
12531
12532         PR tree-optimization/40999
12533         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
12534         (maybe_fold_reference): Lookup constant initializers.
12535         (fold_gimple_assign): Likewise.
12536
12537 2009-08-07  Richard Guenther  <rguenther@suse.de>
12538
12539         * tree-ssa.c (useless_type_conversion_p_1): Only for types
12540         that require structural equality defer to the langhook.
12541
12542 2009-08-07  Martin Jambor  <mjambor@suse.cz>
12543
12544         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
12545         comments.
12546         (struct ipa_pass_through_data): New type.
12547         (struct ipa_ancestor_jf_data): New type.
12548         (union jump_func_value): Removed field formal_id, added fields
12549         pass_through and ancestor.
12550         (struct ipa_param_call_note): Changed type of formal_id to int from
12551         unsigned.
12552         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
12553         operations jump functions and ancestor jump functions.
12554         (compute_complex_pass_through): New function.
12555         (compute_scalar_jump_functions): Call compute_complex_pass_through,
12556         reflect changes in the jump function strucutre.
12557         (update_jump_functions_after_inlining): Ignore complex pass-through
12558         and ancestor jump functions.
12559         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
12560         polynomial pass-through with operation jump functions.
12561
12562 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
12563
12564         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
12565         fde->dw_fde_begin as begin label instead of hot/cold label.
12566         Use LLSDAC label instead of LLSDA for second section lsda.
12567         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
12568         label instead of LLSDA if it is true.
12569         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
12570         callers.
12571         * except.c (add_call_site, dw2_size_of_call_site_table): Add
12572         SECTION argument.  Use it as index into crtl->eh.call_site_record
12573         array.
12574         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
12575         use it to determine how to print table entries instead of using
12576         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
12577         label instead of normal begin label as base.
12578         (sjlj_assign_call_site_values): Adjust add_call_site caller.
12579         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
12580         ensure no EH range spans between sections and that landing pads
12581         are always in the corresponding section.
12582         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
12583         for crtl->eh.call_site_record being an array rather than scalar.
12584         (output_one_function_exception_table): New function, copied
12585         from output_function_exception_table.  Adjust
12586         dw2_size_of_call_site_table, dw2_output_call_site_table
12587         callers.  For SECOND section use *C suffixed labels.
12588         (output_function_exception_table): Call
12589         output_one_function_exception_table and, when doing hot/cold
12590         partitioning, also another time for the second section.
12591         * opts.c: Include except.h.
12592         (decode_options): Allow -freorder-blocks-and-partition with
12593         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
12594         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
12595         * function.h (struct rtl_eh): Change call_site_record from
12596         scalar into array of 2 elements.
12597
12598 2009-08-07  Martin Jambor  <mjambor@suse.cz>
12599
12600         * ipa-prop.c (count_formal_params_1): New function.
12601         (ipa_get_vector_of_formal_parms): New function.
12602         (get_vector_of_formal_parm_types): New function.
12603         (ipa_modify_formal_parameters): New function.
12604         (ipa_modify_call_arguments): New function.
12605         (index_in_adjustments_multiple_times_p): New function.
12606         (ipa_combine_adjustments): New function.
12607         (ipa_dump_param_adjustments): New function.
12608         * ipa-prop.h (struct ipa_parm_adjustment): New type.
12609         (ipa_get_vector_of_formal_parms): Declare.
12610         (ipa_modify_formal_parameters): Declare.
12611         (ipa_modify_call_arguments): Declare.
12612         (ipa_combine_adjustments): Declare.
12613         (ipa_dump_param_adjustments): Declare.
12614         (build_ref_for_offset): Declare.
12615         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
12616         * tree-sra.c: Include ipa-prop.c.
12617         (build_ref_for_offset): Make public.
12618
12619 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
12620
12621         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
12622
12623 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
12624
12625         * gcc/doc/extend.texi (__builtin_extract_return_address)
12626         (__builtin_frob_return_address): Document.
12627
12628 2009-08-06  Paul Brook  <paul@codesourcery.com>
12629
12630         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
12631         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
12632         implementation on ARMv6-M.
12633
12634 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12635
12636         * doc/extend.texi (pcs): Document new attribute for ARM.
12637
12638 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12639
12640         * arm.c (pcs_attribute_args): Comment out unsupported attribute
12641         variants.
12642
12643 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12644
12645         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
12646         warning ().
12647
12648 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12649
12650         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
12651
12652 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
12653
12654         Merge ARM/hard_vfp_branch to trunk.
12655
12656         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
12657
12658         * arm.c (libcall_eq): New function.
12659         (libcall_hash): New function.
12660         (add_libcall): New function.
12661         (arm_libcall_uses_aapcs_base): New function.
12662         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
12663         libcalls using the base PCS.
12664         (arm_init_cumulative_args): Likewise.
12665
12666         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
12667
12668         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
12669         Use base ABI for conversion libfuncs between HFmode and SFmode.
12670
12671         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
12672
12673         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
12674         V4SImode as representatives of all 64-bit and 128-bit vector
12675         types.  Allow vector types without vector modes.
12676         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
12677         without vector modes like BLKmode.
12678         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
12679         BLKmode.  Avoid unsupported vector modes or TImode moves for
12680         non-TARGET_NEON.
12681         (aapcs_vfp_allocate_return_reg): Likewise.
12682         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
12683         V8QImode if TARGET_NEON || TARGET_IWMMXT.
12684
12685         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
12686
12687         * config/arm/arm.c (arm_handle_pcs_attribute): New.
12688         (arm_get_pcs_model): Pass attribute arguments to
12689         arm_pcs_from_attribute.
12690         (arm_init_cumulative_args): Use base AAPCS for conversions from
12691         floating-point types to DImode.
12692         (arm_attribute_table): Add pcs attribute.
12693         (arm_handle_pcs_attribute): New.
12694         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
12695         conversions from floating-point types to DImode, also declare them
12696         to use base AAPCS and declare functions they call to use base
12697         AAPCS and their RTABI names.
12698
12699         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
12700
12701         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
12702         -mfloat-abi=hard not being supported for VFP.
12703
12704         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
12705
12706         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
12707         SYMBOL_REF to hard_libcall_value.
12708
12709         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
12710             Richard Earnshaw  <rearnsha@arm.com>
12711
12712         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
12713         has been put on the stack, all remaining co-processory arguments for
12714         that co-processor also go on the stack.
12715
12716         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
12717
12718         * config/arm/arm.c (arm_return_in_memory): Handle returning
12719         vectors of suitable size in registers also for AAPCS case.
12720
12721         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
12722
12723         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
12724
12725         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
12726
12727         ARM Hard-VFP calling convention
12728         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
12729         * target.h (gcc_target): Add libcall_value to table of call hooks.
12730         * targhooks.h (default_libcall_value): Default implementation.
12731         * targhooks.c (default_libcall_value): Likewise.
12732         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
12733         * optabs.c (expand_unop): Use it.
12734         * expr.h (hard_libcall_value): Pass the function RTX through.
12735         * calls.c (emit_library_call_value_1): Update call to
12736         hard_libcall_value.
12737         * explow.c (hard_libcall_value): Use new target hook.
12738         * config/arm/arm.c: Include cgraph.h
12739         (TARGET_FUNCTION_VALUE): Override default hook.
12740         (arm_pcs_default): New variable.
12741         (arm_override_options): Don't fault hard calling convention with VFP.
12742         Add support for AAPCS variants.
12743         (arm_function_value): Make static.  Handle AAPCS variants.
12744         (arm_libcall_value): New function.
12745         (arm_apply_result_size): Handle VFP registers in results.
12746         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
12747         conventions.
12748         (pcs_attribute_args): New variable.
12749         (arm_pcs_from_attribute): New function.
12750         (arm_get_pcs_model): New function.
12751         (aapcs_vfp_cum_init): New function.
12752         (aapcs_vfp_sub_candidate): New function.
12753         (aapcs_vfp_is_return_candidate): New function.
12754         (aapcs_vfp_is_call_candidate): New function.
12755         (aapcs_vfp_allocate): New function.
12756         (aapcs_vfp_allocate_return_reg): New function.
12757         (aapcs_vfp_advance): New function.
12758         (aapcs_cp_arg_layout): New variable.
12759         (aapcs_select_call_coproc): New function.
12760         (aapcs_select_return_coproc): New function.
12761         (aapcs_allocate_return_reg): New function.
12762         (aapcs_libcall_value): New function.
12763         (aapcs_layout_arg): New function.
12764         (arm_init_cumulative_args): Initialize AAPCS args data.
12765         (arm_function_arg): Handle AAPCS variants using new interface.
12766         (arm_arg_parital_bytes): Likewise.
12767         (arm_function_arg_advance): New function.
12768         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
12769         calling conventions.
12770         (arm_setup_incoming_varargs): Handle new AAPCS args data.
12771         * arm.h (NUM_VFP_ARG_REGS): Define.
12772         (LIBCALL_VALUE): Update.
12773         (FUNCTION_VALUE): Delete.
12774         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
12775         (arm_pcs): New enum.
12776         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
12777         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
12778         (FUNCTION_ARG_REGNO_P): Add VFP regs.
12779         * arm-protos.h (arm_function_arg_advance): Add.
12780         (aapcs_libcall_value): Add.
12781         (arm_function_value): Delete.
12782
12783 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
12784             H.J. Lu  <hongjiu.lu@intel.com>
12785
12786         PR target/40957
12787         * config/i386/i386.c (standard_sse_mode_p): Remove.
12788         (standard_sse_constant_p): Return 2 for integer mode
12789         vector_all_ones_operand when SSE2 is enabled.
12790         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
12791         (ix86_expand_vector_move): Do not check for negative values from
12792         standard_sse_constant_p.
12793
12794 2009-08-06  Richard Guenther  <rguenther@suse.de>
12795
12796         * tree-ssa.c (useless_type_conversion_p_1): Make function and
12797         array type comparisons frontend independent.
12798         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
12799         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
12800         out array reference lower bound and element size operands.
12801         (ao_ref_init_from_vn_reference): Properly compute the offset
12802         for ARRAY_RANGE_REF.
12803         (vn_reference_fold_indirect): Fill out array reference lower
12804         bound and element size operands.
12805         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
12806         a non gimple valued reference operand which can happen for
12807         array reference lower bound or element size.
12808         (create_component_ref_by_pieces_1): Properly generate the
12809         element size operand for array references.
12810
12811 2009-08-06  Richard Guenther  <rguenther@suse.de>
12812
12813         PR tree-optimization/40964
12814         * tree.c (iterative_hash_host_wide_int): Export.
12815         * tree.h (iterative_hash_host_wide_int): Declare.
12816         * tree-ssa-structalias.c (heapvar_map): New struct.
12817         (heapvar_map_eq): New function.
12818         (heapvar_map_hash): Likewise.
12819         (heapvar_lookup): Adjust.
12820         (heapvar_insert): Likewise.
12821         (make_constraint_from_heapvar): Allow multiple heap variables
12822         per decl at different offsets.
12823         (init_alias_heapvars): Adjust.
12824
12825 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
12826
12827         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
12828         * mips_output_sync_loop (mips_output_sync_loop): Only emit
12829         trailing sync if TARGET_SYNC_AFTER_SC.
12830
12831 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
12832
12833         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
12834         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
12835         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
12836         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
12837         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
12838         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
12839         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
12840         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
12841         test_and_set_12): Rewrite calls to mips_output_sync_loop.
12842         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
12843         the prototype declaration match the definition.
12844         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
12845         instructions explicitly.  Add barrier_before and operands
12846         parameters.
12847         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
12848         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
12849         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
12850         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
12851         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
12852         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
12853
12854 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
12855
12856         * tree-ssa-alias.c: Fix intervals to use [) syntax.
12857
12858 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
12859             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
12860
12861         PR target/40906
12862         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
12863         source operand.
12864
12865 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
12866
12867         PR rtl-optimization/40924
12868         * dse.c (canon_address): Before calling cselib_expand_value_rtx
12869         make sure canon_rtx (mem_address) isn't simpler than
12870         canon_rtx (expanded_mem_address).
12871
12872 2009-08-05  Li Feng  <nemokingdom@gmail.com>
12873
12874         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
12875         for each poly_bb_p.
12876         (build_scop_drs): Build alias set for each SCoP.
12877
12878 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
12879
12880         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
12881         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
12882         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
12883         (MIPS_ARCH_FLOAT_SPEC): Likewise.
12884         (BASE_DRIVER_SELF_SPECS): Likewise.
12885
12886 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
12887
12888         * tree-ssa-alias.c: Fix some comment typos.
12889
12890 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
12891
12892         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
12893         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
12894
12895 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
12896
12897         PR c/39902
12898         * simplify-rtx.c (simplify_binary_operation_1): Disable
12899         simplifications for decimal float operations.
12900
12901 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
12902
12903         PR middle-end/40943
12904         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
12905         operand of INDIRECT_REF.
12906
12907 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
12908
12909         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
12910         constants referencing TLS symbols.
12911
12912 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
12913
12914         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
12915         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
12916
12917 2009-08-03  Richard Guenther  <rguenther@suse.de>
12918
12919         * tree.c (make_vector_type): Build a main variant first,
12920         get the canonical one and then build the variant.
12921         * tree-ssa.c (useless_type_conversion_p_1): Handle
12922         fixed-point types.
12923         (useless_type_conversion_p): Conversions to pointers to
12924         incomplete record types are useless.
12925
12926 2009-08-03  Richard Guenther  <rguenther@suse.de>
12927
12928         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
12929         file will be created.
12930         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
12931         * toplev.c (compile_file): Adjust comment.
12932
12933 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
12934
12935         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
12936         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
12937         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12938         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
12939         (sh_promote_function_mode): Fix typo.
12940
12941 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
12942
12943         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
12944
12945 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12946
12947         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
12948         declaration arguments.
12949
12950 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
12951
12952         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
12953         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
12954         (ix86_split_ashl): Ditto.
12955         (ix86_expand_vector_init_one_nonzero): Ditto.
12956         (ix86_expand_vector_set): Ditto.
12957         (ix86_expand_reduc_v4sf): Ditto.
12958
12959 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
12960
12961         * explow.c (promote_function_mode): Remove assert.
12962         * config/sh/sh.c (sh_promote_function_mode): Declare.
12963
12964 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12965
12966         * config/pa/pa.c (pa_promote_function_mode): Declare.
12967         Change to static.  Fix promote_mode call.
12968
12969         * gthr-dce.h (CONST_CAST2): Define if not defined.
12970         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
12971
12972         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
12973
12974 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
12975
12976         * expr.c (store_constructor): Use promote_decl_mode.  Remove
12977         now write-only variable unsignedp.
12978         (expand_expr_real_1): Use promote_decl_mode.
12979         * expr.h (promote_function_mode, promote_decl_mode): New.
12980         (promote_mode): Remove last argument.
12981         * function.c (assign_temp): Drop last argument of promote_mode.
12982         (assign_parm_find_data_types): Use promote_function_mode.
12983         (assign_parm_setup_reg): Likewise.
12984         (expand_function_end): Use promote_function_mode.
12985         * calls.c (initialize_argument_information): Use promote_function_mode.
12986         (precompute_arguments): Use promote_mode instead of checking if
12987         only PROMOTE_FUNCTION_MODE is defined.
12988         (expand_call): When making sibcall decisions, use promote_function_mode.
12989         Below, remove an if for targetm.calls.promote_function_return and
12990         and use promote_function_mode.
12991         (emit_library_call_value_1): Use promote_function_mode, fix bug
12992         where promote_mode was passed FOR_CALL == 0 for a return value in an
12993         assertion.
12994         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
12995         * explow.c (promote_function_mode, promote_decl_mode): New.
12996         (promote_mode): Keep only the FOR_CALL == 0 case.
12997         * combine.c (setup_incoming_promotion): Remove test of
12998         promote_function_args.  Use promote_function_mode.
12999         * stmt.c (expand_value_return): Use promote_decl_mode.
13000         (expand_decl): Use promote_decl_mode.
13001
13002         * expr.c (store_constructor): Use promote_decl_mode.  Remove
13003         now write-only variable unsignedp.
13004         (expand_expr_real_1): Use promote_decl_mode.
13005         * expr.h (promote_function_mode, promote_decl_mode): New.
13006         (promote_mode): Remove last argument.
13007         * function.c (assign_temp): Drop last argument of promote_mode.
13008         (assign_parm_find_data_types): Use promote_function_mode.
13009         (assign_parm_setup_reg): Likewise.
13010         (expand_function_end): Use promote_function_mode.
13011         * calls.c (initialize_argument_information): Use promote_function_mode.
13012         (precompute_arguments): Use promote_mode instead of checking if
13013         only PROMOTE_FUNCTION_MODE is defined.
13014         (expand_call): When making sibcall decisions, use promote_function_mode.
13015         Below, remove an if for targetm.calls.promote_function_return and
13016         and use promote_function_mode.
13017         (emit_library_call_value_1): Use promote_function_mode, fix bug
13018         where promote_mode was passed FOR_CALL == 0 for a return value in an
13019         assertion.
13020         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
13021         * explow.c (promote_function_mode, promote_decl_mode): New.
13022         (promote_mode): Keep only the FOR_CALL == 0 case.
13023         * combine.c (setup_incoming_promotion): Remove test of
13024         promote_function_args.  Use promote_function_mode.
13025         * stmt.c (expand_value_return): Use promote_decl_mode.
13026         (expand_decl): Use promote_decl_mode.
13027
13028         * explow.c (promote_function_mode): Just call the target hook.
13029         * targhooks.c (default_promote_function_mode,
13030         default_promote_function_mode_always_promote): New.
13031         * targhooks.h (default_promote_function_mode,
13032         default_promote_function_mode_always_promote): Declare.
13033         * target.h (promote_function_args, promote_function_return): Remove.
13034         (promote_function_mode): New.
13035         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
13036         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13037         (TARGET_PROMOTE_FUNCTION_MODE): New.
13038         (TARGET_CALLS): Adjust.
13039         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
13040         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
13041
13042         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
13043         * config/s390/s390.c (s390_promote_function_mode): ... here,
13044         with pointer handling.
13045         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13046         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13047
13048         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
13049         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
13050         with pointer handling.
13051         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13052         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13053
13054         * config/sh/sh-protos.h (sh_promote_function_mode): New.
13055         * config/sh/sh.c (sh_promote_function_mode): New.
13056         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13057         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13058
13059         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
13060         * config/cris/cris.c (cris_promote_function_mode): ... here.
13061         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13062         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13063
13064         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
13065         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
13066         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13067         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13068
13069         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
13070         * config/arm/arm.c (arm_promote_function_mode): ... here, without
13071         complex type handling.
13072         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13073         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13074
13075         * config/pa/pa.c (pa_promote_function_mode): New.
13076         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13077         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13078
13079         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
13080         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13081         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
13082         * config/xtensa/xtensa.c: Likewise.
13083         * config/stormy16/stormy16.c: Likewise.
13084         * config/iq2000/iq2000.c: Likewise.
13085         * config/rs6000/rs6000.c: Likewise.
13086         * config/picochip/picochip.c: Likewise.
13087         * config/arc/arc.c: Likewise.
13088         * config/mcore/mcore.c: Likewise.
13089         * config/score/score.c: Likewise.
13090         * config/mips/mips.c: Likewise.
13091         * config/bfin/bfin.c: Likewise.
13092         * config/ia64/ia64.c: Likewise (disabled though).
13093
13094         * config/frv/frv.h: Remove pointless remark.
13095
13096         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
13097         TARGET_PROMOTE_FUNCTION_ARGS,
13098         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
13099         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
13100
13101 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
13102
13103         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
13104         -floop-parallelize-all.
13105         * toplev.c (process_options): Rename flag_graphite_force_parallel to
13106         flag_loop_parallelize_all.
13107         * tree-ssa-loop.c (gate_graphite_transforms): Same.
13108         * graphite.c (graphite_transform_loops): Same.
13109         * common.opt: Same.
13110         * graphite-poly.c (apply_poly_transforms): Same.
13111
13112 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
13113
13114         PR tree-optimization/40914
13115         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
13116         if set, then check the delta field of the PMF record.
13117         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
13118         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
13119         call is stored in the delta.
13120
13121 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
13122
13123         * config/mips/mips.md (*clear_upper32_dext): New pattern.
13124
13125 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
13126
13127         * config/i386/bsd.h (ASM_BYTE): New define.
13128         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
13129         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
13130         .byte.  Use fputs or putc instead of fprintf where appropriate.
13131         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
13132         fputs or putc instead of fprintf where appropriate.
13133         * config/i386/i386elf.h: Ditto.
13134         * config/i386/sysv4.h: Ditto.
13135
13136         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
13137         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
13138         (*tls_global_dynamic_64): Ditto.
13139
13140 2009-07-31  Christian Bruel  <christian.bruel@st.com>
13141
13142         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
13143
13144 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13145
13146         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
13147         Remove dead code for MINUS.
13148
13149 2009-07-31  Anthony Green  <green@moxielogic.com>
13150
13151         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
13152         $r12 in prologue.
13153         (moxie_expand_epilogue): Ditto for epilogue.
13154         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
13155         incoming arguments.
13156         (moxie_function_arg): Ditto.
13157         (moxie_pass_by_reference): Ditto.
13158         (moxie_arg_partial_bytes): Ditto.
13159         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
13160         (FUNCTION_ARG_ADVANCE) Ditto.
13161         (REG_PARM_STACK_SPACE) Ditto.
13162         (FUNCTION_ARG_REGNO_P) Dito.
13163
13164         * config.gcc: Add moxie linux config support.
13165         * gcc/config/moxie/uclinux.h: New file.
13166
13167 2009-07-31  DJ Delorie  <dj@redhat.com>
13168
13169         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
13170         (UNSPECV_SP_SWITCH_E): New.
13171         (sp_switch_1): Change to an unspec.
13172         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
13173         replace $r15.
13174         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
13175         reference the new stack's address
13176
13177 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13178
13179         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
13180         graphite-clast-to-gimple.o, graphite-dependences.o,
13181         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
13182         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
13183         (graphite-blocking.o,
13184         graphite-clast-to-gimple.o, graphite-dependences.o,
13185         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
13186         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
13187         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
13188         * cfgloop.h (struct loop): Add can_be_parallel field.
13189         * common.opt (fgraphite-identity): Moved up.
13190         (fgraphite-force-parallel): New flag.
13191         * graphite.c: Rewrite.
13192         * graphite.h: Rewrite.
13193         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
13194         after Graphite.
13195         * toplev.c (graphite_out_file): New file descriptor.
13196         (graphite_in_file): New.
13197         (process_options): flag_graphite_force_parallel cannot be used without
13198         Graphite.
13199         * tree-ssa-loop.c: Include toplev.h.
13200         (gate_graphite_transforms): Enable flag_graphite for
13201         flag_graphite_force_parallel.
13202
13203 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13204
13205         * ChangeLog.graphite: New.
13206         * graphite-blocking.c: New.
13207         * graphite-clast-to-gimple.c: New.
13208         * graphite-clast-to-gimple.h: New.
13209         * graphite-dependences.c: New.
13210         * graphite-dependences.h: New.
13211         * graphite-interchange.c: New.
13212         * graphite-poly.c: New.
13213         * graphite-poly.h: New.
13214         * graphite-ppl.c: New.
13215         * graphite-ppl.h: New.
13216         * graphite-scop-detection.c: New.
13217         * graphite-scop-detection.h: New.
13218         * graphite-sese-to-poly.c: New.
13219         * graphite-sese-to-poly.h: New.
13220         * sese.c: New.
13221         * sese.h: New.
13222
13223 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13224
13225         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
13226         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
13227
13228 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13229
13230         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
13231         (scev_is_linear_expression): Return false if the evolution is not
13232         affine multivariate.
13233
13234 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13235
13236         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
13237         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
13238
13239 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13240
13241         * tree-data-ref.c (debug_data_references): New.
13242         (debug_data_reference): New.
13243         * tree-data-ref.h (debug_data_references): Declared.
13244         (debug_data_reference): Declared.
13245
13246 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13247
13248         * tree-data-ref.c (stmt_simple_memref_p: Removed.
13249         * tree-data-ref.h (scop_p): Removed.
13250         (struct data_reference): Remove field scop.
13251         (DR_SCOP): Removed.
13252         (stmt_simple_memref_p): Removed.
13253
13254 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13255
13256         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
13257         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
13258         basic block empty.
13259
13260 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13261
13262         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
13263
13264 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13265
13266         * doc/invoke.texi (-fgraphite-identity): Documented.
13267
13268 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13269
13270         * tree-scalar-evolution.c: Fix comment.
13271         (instantiate_scev_1): Return unknow from scev instantiation if the
13272         result is not above instantiate_below.
13273
13274 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13275
13276         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
13277         static anymore.  Instantiate the symbols that may have been introduced
13278         by chrec_apply.
13279         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
13280         Declared.
13281
13282 2009-07-30  DJ Delorie  <dj@redhat.com>
13283
13284         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
13285         .vliw directive to VLIW sections.
13286
13287 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13288
13289         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
13290         New variables.
13291         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
13292         (AUTOHEADER): New variable.
13293         ($(srcdir)/cstamp-h.in): Use it.
13294
13295 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
13296             Pat Haugen  <pthaugen@us.ibm.com>
13297             Revital Eres <ERES@il.ibm.com>
13298
13299         * config/rs6000/vector.md (VEC_F): Add VSX support.
13300         (VEC_A): Ditto.
13301         (VEC_N): Ditto.
13302         (mov<mode>): Ditto.
13303         (vector_load_<mode>): Ditto.
13304         (vector_store_<mode>): Ditto.
13305         (vector GPR move split): Ditto.
13306         (vec_reload_and_plus_<mptrsize>): Ditto.
13307         (vec_reload_and_reg_<mptrsize>): Ditto.
13308         (add<mode>3): Ditto.
13309         (sub<mode>3): Ditto.
13310         (mul<mode>3): Ditto.
13311         (neg<mode>2): Ditto.
13312         (abs<mode>2): Ditto.
13313         (smin<mode>3): Ditto.
13314         (smax<mode>3): Ditto.
13315         (vector_eq<mode>): Ditto.
13316         (vector_gt<mode>): Ditto.
13317         (vector_ge<mode>): Ditto.
13318         (vector_gtu<mode>): Ditto.
13319         (vector_select_<mode>_uns): Ditto.
13320         (vector_eq_<mode>_p): Ditto.
13321         (vector_gt_<mode>_p): Ditto.
13322         (vector_ge_<mode>_p): Ditto.
13323         (vector_gtu_<mode>_p): Ditto.
13324         (cr6_test_for_zero): Ditto.
13325         (cr6_test_for_zero_reverse): Ditto.
13326         (cr6_test_for_lt): Ditto.
13327         (cr6_test_for_lt_reverse): Ditto.
13328         (xor<mode>3): Ditto.
13329         (ior<mode>3): Ditto.
13330         (and<mode>3): Ditto.
13331         (one_cmpl<mode>2): Ditto.
13332         (nor<mode>2): Ditto.
13333         (andc<mode>2): Ditto.
13334         (float<VEC_int<mode>2): Ditto.
13335         (unsigned_float<VEC_int><mode>2): Ditto.
13336         (fix_trunc<mode><VEC_int>2): Ditto.
13337         (fixuns_trunc<mode><VEC_int>2): Ditto.
13338         (vec_init<mode>):
13339         (vec_set<mode>): Ditto.
13340         (vec_extract<mode>): Ditto.
13341         (vec_interleave_highv4sf): Ditto.
13342         (vec_interleave_lowv4sf): Ditto.
13343         (vec_realign_load_<mode>): Ditto.
13344         (vec_shl_<mode>): Ditto.
13345         (vec_shr_<mode>): Ditto.
13346         (div<mode>3): New patterns for VSX.
13347         (vec_interleave_highv2df): Ditto.
13348         (vec_interleave_lowv2df): Ditto.
13349         (vec_pack_trunc_v2df): Ditto.
13350         (vec_pack_sfix_trunc_v2df): Ditto.
13351         (vec_pack_ufix_trunc_v2df): Ditto.
13352         (vec_unpacks_hi_v4sf): Ditto.
13353         (vec_unpacks_lo_v4sf): Ditto.
13354         (vec_unpacks_float_hi_v4si): Ditto.
13355         (vec_unpacks_float_lo_v4si): Ditto.
13356         (vec_unpacku_float_hi_v4si): Ditto.
13357         (vec_unpacku_float_lo_v4si): Ditto.
13358         (movmisalign<mode>): Ditto.
13359         (vector_ceil<mode>2): New patterns for vectorizing math library.
13360         (vector_floor<mode>2): Ditto.
13361         (vector_btrunc<mode>2): Ditto.
13362         (vector_copysign<mode>3): Ditto.
13363
13364         * config/rs6000/predicates.md (easy_vector_constant_msb): New
13365         predicate for setting the high bit in each word, used for copysign.
13366
13367         * config/rs6000/ppc-asm.h (f19): Whitespace.
13368         (f32-f63): Define if VSX.
13369         (v0-v31): Define if Altivec.
13370         (vs0-vs63): Define if VSX.
13371
13372         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
13373
13374         * config/rs6000/power7.md: New file, provide tuning parameters for
13375         -mcpu=power7.
13376
13377         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
13378         (rs6000_cpu_cpp_builtins): Ditto.
13379         (altivec_overloaded_builtins): Ditto.
13380         (altivec_resolve_overloaded_builtin): Ditto.
13381
13382         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
13383         debug switch to disable vectorizing simple math builtin
13384         functions.
13385
13386         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
13387         Vectorize simple math builtin functions.
13388         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
13389         hook to vectorize math builtins.
13390         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
13391         (rs6000_builtin_conversion): Add VSX/power7 support.
13392         (rs6000_builtin_vec_perm): Ditto.
13393         (vsplits_constant): Add support for loading up a vector constant
13394         with just the high bit set in each part.
13395         (rs6000_expand_vector_init): Add VSX/power7 support.
13396         (rs6000_expand_vector_set): Ditto.
13397         (rs6000_expand_vector_extract): Ditto.
13398         (rs6000_emit_move): Ditto.
13399         (bdesc_3arg): Ditto.
13400         (bdesc_2arg): Ditto.
13401         (bdesc_1arg): Ditto.
13402         (rs6000_expand_ternop_builtin): Ditto.
13403         (altivec_expand_builtin): Ditto.
13404         (rs6000_expand_unop_builtin): Ditto.
13405         (rs6000_init_builtins): Ditto.
13406         (altivec_init_builtins): Ditto.
13407         (builtin_function_type): Ditto.
13408         (rs6000_common_init_builtins): Ditto.
13409         (rs6000_handle_altivec_attribute); Ditto.
13410         (rs6000_mangle_type): Ditto.
13411         (rs6000_vector_mode_supported_p): Ditto.
13412         (rs6000_mode_dependent_address): Altivec addresses with AND -16
13413         are mode dependent.
13414
13415         * config/rs6000/vsx.md: New file for VSX support.
13416
13417         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
13418         identifing values with just the most significant bit set.
13419         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
13420         vectorized builtins.
13421
13422         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
13423         (UNSPEC_VRFIM): Delete.
13424         (splitter for loading up vector with most significant bit): New
13425         splitter for vectorizing copysign.
13426         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
13427         vectorizing simple math functions.
13428         (altivec_vrfip): Add support for vectorizing simple math functions.
13429         (altivec_vrfim): Ditto.
13430         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
13431
13432         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
13433         (power7.md, vsx.md): Include for power7 support.
13434         (copysigndf3): Use VSX instructions if -mvsx.
13435         (negdf2_fpr): Ditto.
13436         (absdf2_fpr): Ditto.
13437         (nabsdf2_fpr): Ditto.
13438         (adddf3_fpr): Ditto.
13439         (subdf3_fpr): Ditto.
13440         (muldf3_fpr): Ditto.
13441         (divdf3_fpr): Ditto.
13442         (fix_truncdfdi2_fpr): Ditto.
13443         (cmpdf_internal1): Ditto.
13444         (fred, fred_fpr): Convert into expander/insn to add VSX support.
13445         (btruncdf2, btruncdf2_fpr): Ditto.
13446         (ceildf2, ceildf2_fpr): Ditto.
13447         (floordf2, floordf2_fpr): Ditto.
13448         (floatdidf2, floatdidf2_fpr): Ditto.
13449         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
13450         (fmsubdf4_fpr): Ditto.
13451         (fnmadddf4_fpr_1): Ditto.
13452         (fnmadddf4_fpr_2): Ditto.
13453         (fnmsubdf4_fpr_1): Ditto.
13454         (fnmsubdf4_fpr_2): Ditto.
13455         (fixuns_truncdfdi2): Add expander for VSX support.
13456         (fix_truncdfdi2): Ditto.
13457         (fix_truncdfsi2): Ditto.
13458         (ftruncdf2): Ditto.
13459         (btruncsf2): Whitespace.
13460         (movdf_hardfloat32): Add support for VSX registers.
13461         (movdf_softfloat32): Ditto.
13462         (movdf_hardfloat64): Ditto.
13463         (movdf_hardfloat64_mfpgpr): Ditto.
13464         (movdf_softfloat64): Ditto.
13465         (movti splitters): Add check for vector registers supporting
13466         TImode in the future.
13467         (bpermd): Add power7 bpermd instruction.
13468
13469         * config/rs6000/altivec.h (vec_div): Define if VSX.
13470         (vec_mul): Ditto.
13471         (vec_msub): Ditto.
13472         (vec_nmadd): Ditto.
13473         (vec_nearbyint): Ditto.
13474         (vec_rint): Ditto.
13475         (vec_sqrt): Ditto.
13476         (all predicates): Use the generic builtin function, and not the V4SF
13477         specific function so that the predicates will work with VSX's V2DF.
13478         (vec_all_*): Ditto.
13479         (vec_any_*): Ditto.
13480
13481         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
13482         Document new VSX functions and types.
13483
13484         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
13485         switches.
13486
13487         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
13488         "wa", and "j" constraints.  Modify "v" to talk about Altivec
13489         instead of just vector.
13490
13491 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
13492
13493         PR debug/26475
13494         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
13495         location for phi arguments.
13496         (rewrite_update_phi_arguments): Find locations for reaching defs.
13497         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
13498         Add location to add_phi_arg calls.
13499         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
13500         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
13501         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
13502         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
13503         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
13504         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
13505         * tree-phinodes.c (make_phi_node): Initialize location.
13506         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
13507         (add_phi_arg): Add location parameter.
13508         (remove_phi_arg_num): Move location when moving phi argument.
13509         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
13510         location.
13511         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
13512         slpeel_update_phi_nodes_for_guard1,
13513         slpeel_update_phi_nodes_for_guard2,
13514         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
13515         vect_loop_versioning): Set locations.
13516         * tree-parloops.c (create_phi_for_local_result,
13517         transform_to_exit_first_loop, create_parallel_loop): Add locations.
13518         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
13519         * tree-vect-loop.c (get_initial_def_for_induction,
13520         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
13521         locations.
13522         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
13523         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
13524         (gimple_phi_arg_set_location): New.  Set locus.
13525         (gimple_phi_arg_has_location): New.  Check for locus.
13526         (redirect_edge_var_map_location): New.  Return locus from var_map.
13527         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
13528         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
13529         combining PHI arguments.
13530         (cond_store_replacement): Set location.
13531         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
13532         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
13533         scop_add_exit_phis_edge): Add locations.
13534         * tree-cfgcleanup.c (remove_forwarder_block,
13535         remove_forwarder_block_with_phi): Add locations.
13536         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
13537         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
13538         locations.
13539         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
13540         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
13541         flush_pending_stmts): Add source location.
13542         * lambda-code.c (perfect_nestify): Maintain location stack with argument
13543         stack to preserve locations.
13544         * tree-vect-stmts.c (vectorizable_load): Add location.
13545         * tree-inline.c (copy_phis_for_bb): Copy locus.
13546         (setup_one_parameter): Add call locus to inlined parameter stmts.
13547         (initialize_inlined_parameters): Pass in call location as parameter
13548         assignment locus.
13549         (tree_function_versioning): Pass location to setup_one_parameter.
13550         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
13551         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
13552         copy and edge lists.
13553         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
13554         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
13555         locus parameter and override the stmt default if provided.
13556         (new_elim_graph, clear_elim_graph, delete_elim_graph,
13557         elim_graph_add_edge, elim_graph_remove_succ_edge,
13558         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
13559         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
13560         eliminate_phi):  Add locus info in elimination graph for each edge and
13561         value copy.
13562         (insert_backedge_copies): Copy locus if present.
13563         * tree-flow.h (struct _edge_var_map): Add locus field.
13564         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
13565         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
13566         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
13567         locations.
13568         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
13569
13570 2009-07-30  Martin Jambor  <mjambor@suse.cz>
13571
13572         PR tree-optimization/40570
13573         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
13574         use inlining loops.
13575
13576 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
13577
13578         * ssa-loop-manip.c: Include langhooks.h.
13579         (rewrite_phi_with_iv): New.
13580         (rewrite_all_phi_nodes_with_iv): New.
13581         (canonicalize_loop_ivs): Move here from tree-parloops.c.
13582         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
13583         * tree-parloops.c (loop_parallel_p): Move out all conditions
13584         except dependency check.
13585         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
13586         (gen_parallel_loop): Call canonicalize_loop_ivs without
13587         reduction_list argument.
13588         (build_new_reduction): New.
13589         (gather_scalar_reductions): New.
13590         (try_get_loop_niter): New.
13591         (try_create_reduction_list): New.
13592         (parallleize_loops): Change the parallel conditions check.
13593         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
13594         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
13595
13596 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
13597
13598         * opt-functions.awk (opt_args): Allow argument to be enclosed in
13599         curly braces.
13600         * doc/options.texi (Option properties):  Mention new quoting syntax.
13601
13602 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
13603
13604         * config/alpha/alpha.c (alpha_start_function):
13605         Handle VMS_DEBUG_MAIN_POINTER
13606         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
13607         * doc/invoke.texi: Document -mdebug-main switch.
13608
13609 2009-07-29  Richard Henderson  <rth@redhat.com>
13610
13611         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
13612         (cgraph_create_edge_including_clones): Likewise.
13613         * tree-inline.c (copy_bb): Operate on the correct edges
13614         when updating the callgraph.
13615
13616 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
13617
13618         * config/alpha/vms-cc.c: Deleted.
13619         * config/alpha/vms-ld.c: Deleted.
13620         * config/alpha/t-vms64: Moved to config/vms
13621         * config/alpha/vms-crt0-64.c: Moved to config/vms
13622         * config/alpha/vms-crt0.c: Moved to config/vms
13623         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
13624         * config/alpha/vms-psxcrt0.c: Moved to config/vms
13625         * config/alpha/xm-vms.h: Moved to config/vms
13626         * config/alpha/x-vms: Moved to config/vms
13627         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
13628         config/vms/t-vms.
13629         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
13630         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
13631         (version): Set.
13632         * config/vms/t-vms64: Moved here from config/alpha
13633         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
13634         (argc,argv,envp): Enforce 32bit malloc'ing.
13635         * config/vms/vms-psxcrt0-64.c: Likewise.
13636         * config/vms/vms-crt0.c: Moved here from config/alpha.
13637         * config/vms/vms-psxcrt0.c: Likewise.
13638         * config/vms/vms-crtl-64.h: New file.
13639         * config/vms/vms-crtl.h: New file.
13640         * config/vms/vms.opt: New file.
13641         * config/vms/xm-vms64.h: New file.
13642         * config/vms/xm-vms.h: Moved here from config/alpha.
13643         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
13644         Set.
13645         * config/vms/x-vms: Moved here from config/alpha.
13646         (version, VMS_EXTRA_PARTS): Moved to t-vms.
13647         (vms-ld.o, vms-cc.o): Removed.
13648         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
13649
13650 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
13651
13652         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
13653         correct stack (obvious VMS fix).
13654
13655 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
13656
13657         * dwarf2out.c (output_file_names): Output VMS style file name, size,
13658         date, version info if VMS_DEBUGGING_INFO defined.
13659         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
13660         size, date calculating code moved here.
13661
13662 2009-07-29  Paul Brook  <paul@codesourcery.com>
13663
13664         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
13665         do_push/do_pop.
13666
13667 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
13668
13669         PR target/40577
13670         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
13671         to DImode when generating insq_le insn.
13672
13673 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
13674
13675         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
13676         New macro set for VMS_DEBUGGGING_INFO.
13677         (AT_string_form): Use it.
13678
13679 2009-07-28  DJ Delorie  <dj@redhat.com>
13680
13681         * config/mep/mep.c (vtext_section): New.
13682         (vftext_section): New.
13683         (ftext_section): New.
13684         (mep_select_section): Add support for functions.
13685         (mep_unique_section): Likewise.
13686         (mep_asm_init_sections): Likewise.
13687         (mep_encode_section_info): Remove it from here.
13688
13689         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
13690
13691 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
13692
13693         * tree.h (TREE_DEPRECATED): Document it is used for types too.
13694         (TYPE_VECTOR_OPAQUE): Use default_def_flag
13695
13696 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
13697
13698         * dwarf2out.c (output_file_names): Test new macro
13699         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
13700         (add_comp_dir_attribute): Likewise.
13701
13702 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
13703
13704         * config/i386/mingw-w64.h (LINK_SPEC): Add
13705         separating space between commands.
13706
13707 2009-07-28  Jan Hubicka  <jh@suse.cz>
13708
13709         PR tree-optimization/40759
13710         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
13711         for renaming.
13712
13713 2009-07-27  DJ Delorie  <dj@redhat.com>
13714
13715         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
13716         types are dword-aligned.
13717         (mep_expand_va_start): Likewise.
13718
13719 2009-07-27  Olivier Hainque  <hainque@adacore.com>
13720             Douglas B Rupp  <rupp@gnat.com>
13721
13722         * convert.c (convert_to_pointer): Don't assume the target
13723         pointer type is POINTER_SIZE long. Fetch its precision instead.
13724
13725 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
13726
13727         * system.h (fopen): Undefine if macro.
13728
13729 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
13730
13731         * dwarf2out.c (output_cfi_p): Removed.
13732         (output_cfis): New function.
13733         (output_fde): New function, split from output_call_frame_info.
13734         (output_call_frame_info): Use it.
13735         (dwarf2out_switch_text_section): Use output_cfis.
13736
13737 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
13738
13739         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
13740         TARGET_BI_ARCH is specified without enabling SJLJ.
13741         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
13742         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
13743
13744 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
13745
13746         * arm.md (negdi2): Use DImode if forcing a value into a register.
13747
13748 2009-07-26  Ira Rosen  <irar@il.ibm.com>
13749
13750         PR tree-optimization/40801
13751         * tree-vect-stmts.c (vectorizable_call): Get previous copy
13752         of vector operand from the previous copy of vector statement.
13753         Pass the correct definition type value to
13754         vect_get_vec_def_for_stmt_copy().
13755
13756 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13757
13758         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
13759         const char ** conversion.
13760
13761 2009-07-25 David Daney <ddaney@caviumnetworks.com>
13762
13763         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
13764         fancy_abort() if !ENABLE_ASSERT_CHECKING.
13765         (gcc_unreachable): Invoke __builtin_unreachable() if
13766         !ENABLE_ASSERT_CHECKING.
13767
13768 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
13769
13770         PR rtl-optimization/40445
13771         * emit-rtl.c (next_nonnote_insn_bb): New function.
13772         * rtl.h (next_nonnote_insn_bb): Declare new function.
13773         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
13774         with no successors that is the successor of the ENTRY_BLOCK.
13775         Continue from the top after removing an empty fallthrough block.
13776         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
13777         of next_nonnote_insn.
13778
13779 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
13780
13781         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
13782
13783 2009-07-25  Martin Jambor  <mjambor@suse.cz>
13784
13785         * c-common.c (c_common_attribute_table): New element for noclone.
13786         (handle_noclone_attribute): New function. Forward-declare.
13787         * tree-inline.c (tree_versionable_function_p): Check for noclone
13788         attribute.
13789         * doc/extend.texi (Labels as Values): Document need for noclone.
13790         (Function Attributes): Document noclone attribute.
13791
13792 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
13793
13794         PR rtl-optimization/34999
13795         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
13796         and dw_fde_switched_cold_to_hot fields.
13797         (output_cfi_p): New function.
13798         (output_call_frame_info): If fde->dw_fde_switched_sections,
13799         output 2 FDEs instead of one with corrupted header.
13800         (dwarf2out_do_cfi_startproc): New function.
13801         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
13802         and fde->dw_fde_switched_cold_to_hot.
13803         (dwarf2out_switch_text_section): Compute
13804         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
13805         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
13806         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
13807         Otherwise, compute fde->dw_fde_switch_cfi.
13808
13809 2009-07-24  Cary Coutant  <ccoutant@google.com>
13810
13811         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
13812
13813 2009-07-24  Cary Coutant  <ccoutant@google.com>
13814
13815         * cfghooks.c (split_block): Copy discriminator to new block.
13816         * tree-cfg.c (assign_discriminator): Check location of last
13817         instruction in block as well as first.
13818
13819 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
13820
13821         * config/i386/linux.c: Use fputs or putc instead of fprintf
13822         where appropriate.
13823         * config/i386/gas.h: Ditto.
13824         * config/i386/x86-64.h: Ditto.
13825         * config/i386/att.h: Ditto.
13826
13827 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
13828
13829         * expmed.c (emit_store_flag): Use a recursive call to optimize the
13830         xor case.
13831
13832 2009-07-24  Martin Jambor  <mjambor@suse.cz>
13833
13834         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
13835         (ipa_push_func_to_list_1): Declare.
13836         (ipa_push_func_to_list): New function.
13837
13838         * ipa-prop.c (ipa_push_func_to_list_1): New function.
13839         (ipa_init_func_list): Call ipa_push_func_to_list_1.
13840         (ipa_push_func_to_list): Removed.
13841         (ipa_pop_func_from_list): Clear node_enqueued flag.
13842
13843 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13844
13845         * config/s390/s390.c (override_options): Default
13846         max-unrolled-insns to 100 for z10 tuning.
13847
13848 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
13849
13850         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
13851         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
13852         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
13853         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
13854         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
13855         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
13856         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
13857
13858 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
13859
13860         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
13861         use default set in mingw32.h header.
13862         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
13863         64-bit /mingw/include path.
13864         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
13865         path.
13866
13867 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
13868
13869         PR rtl-optimization/40209
13870         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
13871
13872 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
13873
13874         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
13875         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
13876         with the rest of string where appropriate.  Use fputs or putc
13877         instead of fprintf where appropriate.
13878
13879 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
13880             Pat Haugen  <pthaugen@us.ibm.com>
13881             Revital Eres <ERES@il.ibm.com>
13882
13883         * config/rs6000/vector.md: New file.  Move most of the vector
13884         expander support here from altivec.md to allow for the VSX vector
13885         unit in the future.  Add support for secondary_reload patterns.
13886         Rewrite the patterns for vector comparison, and vector comparison
13887         predicate instructions so that the RTL expresses the desired
13888         behavior, instead of using unspec.
13889
13890         * config/rs6000/constraints.md ("f" constraint): Use
13891         rs6000_constraints to hold the precalculated register class.
13892         ("d" constraint): Ditto.
13893         ("wd" constraint): New constraint for VSX.
13894         ("wf" constraint): Ditto.
13895         ("ws" constraint): Ditto.
13896         ("wa" constraint): Ditto.
13897         ("wZ" constraint): Ditto.
13898         ("j" constraint): Ditto.
13899
13900         * config/rs6000/predicates.md (vsx_register_operand): New
13901         predicate for VSX.
13902         (vfloat_operand): New predicate for vector.md.
13903         (vint_operand): Ditto.
13904         (vlogical_operand): Ditto.
13905         (easy_fp_constant): If VSX, 0.0 is an easy constant.
13906         (easy_vector_constant): Add VSX support.
13907         (altivec_indexed_or_indirect_operand): New predicate for
13908         recognizing Altivec style memory references with AND -16.
13909
13910         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
13911         for vector secondary reload support.
13912         (rs6000_vector_reg_class): Delete, replacing it with
13913         rs6000_constraints.
13914         (rs6000_vsx_reg_class): Ditto.
13915         (rs6000_constraints): New array to hold the register classes of
13916         each of the register constraints that can vary at runtime.
13917         (builtin_mode_to_type): New static array for builtin function type
13918         creation.
13919         (builtin_hash_table): New static hash table for builtin function
13920         type creation.
13921         (TARGET_SECONDARY_RELOAD): Define target hook.
13922         (TARGET_IRA_COVER_CLASSES): Ditto.
13923         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
13924         registers are 128 bits if VSX memory reference instructions are used.
13925         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
13926         unit is being used.
13927         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
13928         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
13929         Print several of the scheduling related parameters.
13930         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
13931         rs6000_constraints instead of rs6000_vector_reg_class.  Move
13932         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
13933         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
13934         Altivec.  Add VSX support.  Setup for secondary reload support on
13935         Altivec/VSX registers.
13936         (rs6000_override_options): Make power7 set the scheduling groups
13937         like the power5.  Add support for new debug switches to override
13938         the scheduling defaults.  Temporarily disable -mcpu=power7 from
13939         setting -mvsx.  Add support for debug switches -malways-hint,
13940         -msched-groups, and -malign-branch-targets.
13941         (rs6000_buitlin_conversion): Add support for returning unsigned
13942         vector conversion functions to fix regressions due to stricter
13943         type checking.
13944         (rs6000_builtin_mul_widen_even): Ditto.
13945         (rs6000_builtin_mul_widen_odd): Ditto.
13946         (rs6000_builtin_vec_perm): Ditto.
13947         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
13948         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
13949         to zero a register.
13950         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
13951         generated upstream.
13952         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
13953         VSX types for bit operations.  Changes to accomidate vector.md.
13954         (bdesc_2arg): Ditto.
13955         (bdesc_1arg): Ditto.
13956         (struct builtin_description_predicates): Rewrite predicate
13957         handling so that RTL describes the operation, instead of passing
13958         the instruction to be used as a string argument.
13959         (bdesc_altivec_preds): Ditto.
13960         (altivec_expand_predicate_builtin): Ditto.
13961         (altivec_expand_builtin): Ditto.
13962         (rs6000_expand_ternop_builtin): Use a switch instead of an if
13963         statement for vsldoi support.
13964         (altivec_expand_ld_builtin): Change to use new names from vector.md.
13965         (altivec_expand_st_builtin): Ditto.
13966         (paired_expand_builtin): Whitespace changes.
13967         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
13968         builtin_mode_to_type table for secondary reload.  Call
13969         builtin_function_type to build random builtin functions.
13970         (altivec_init_builtins): Change to use builtin_function_type to
13971         create builtin function types dynamically as we need them.
13972         (builtin_hash_function): New support for hashing the tree types
13973         for builtin function as we need it, rather than trying to build
13974         all of the trees that we need.  Add initial preliminary VSX support.
13975         (builtin_function_type): Ditto.
13976         (builtin_function_eq): Ditto.
13977         (builtin_hash_struct): Ditto.
13978         (rs6000_init_builtins): Ditto.
13979         (rs6000_common_init_builtins): Ditto.
13980         (altivec_init_builtins): Ditto.
13981         (rs6000_common_init_builtins): Ditto.
13982         (enum reload_reg_type): New enum for simplifing reg classes.
13983         (rs6000_reload_register_type): Simplify register classes into GPR,
13984         Vector, and other registers.  Altivec and VSX addresses in reload.
13985         (rs6000_secondary_reload_inner): Ditto.
13986         (rs6000_ira_cover_classes): New target hook, that returns the
13987         appropriate cover classes, based on -mvsx being used or not.
13988         (rs6000_secondary_reload_class): Add VSX support.
13989         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
13990         (get_vsel_insn): Ditto.
13991         (rs6000_emit_vector_compare): Rewrite vector conditional support
13992         so that where we can, we use RTL operators, instead of blindly use
13993         UNSPEC.
13994         (rs6000_emit_vector_select): Ditto.
13995         (rs6000_emit_vector_cond_expr): Ditto.
13996         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
13997         (create_TOC_reference): Add -mdebug=addr support.
13998         (emit_frame_save): VSX loads/stores need register indexed addressing.
13999
14000         * config/rs6000/rs6000.md: Include vector.md.
14001
14002         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
14003
14004         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
14005         support for V2DI, V2DF in logical, permute, select operations.
14006
14007         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
14008         switch for vsx/power7.
14009         (-mvsx-scalar-memory): Ditto.
14010         (-mvsx-align-128): Ditto.
14011         (-mallow-movmisalign): Ditto.
14012         (-mallow-df-permute): Ditto.
14013         (-msched-groups): Ditto.
14014         (-malways-hint): Ditto.
14015         (-malign-branch-targets): Ditto.
14016
14017         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
14018         hook instead.
14019         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
14020         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
14021         (rs6000_vector_reg_class): Delete.
14022         (rs6000_vsx_reg_class): Ditto.
14023         (enum rs6000_reg_class_enum): New enum for the constraints that
14024         vary based on target switches.
14025         (rs6000_constraints): New array to hold the register class for all
14026         of the register constraints that vary based on the switches used.
14027         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
14028         (enum rs6000_builtins): Add unsigned varients for the builtin
14029         declarations returned by target hooks for expanding multiplies,
14030         select, and permute operations.  Add VSX builtins.
14031         (enum rs6000_builtin_type_index): Add entries for VSX.
14032         (V2DI_type_node): Ditto.
14033         (V2DF_type_node): Ditto.
14034         (unsigned_V2DI_type_node): Ditto.
14035         (bool_long_type_node): Ditto.
14036         (intDI_type_internal_node): Ditto.
14037         (uintDI_type_internal_node): Ditto.
14038         (double_type_internal_node): Ditto.
14039
14040         * config/rs6000/altivec.md (whole file): Move all expanders to
14041         vector.md from altivec.md.  Rename insn matching functions to be
14042         altivec_foo.
14043         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
14044         (altivec_vcmp*): Ditto.
14045         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
14046         (VM): New iterator for moves that includes the VSX types.
14047         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
14048         (altivec_vperm_<mode>_uns): New, for unsigned types.
14049         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
14050         (altivec_eq<mode>): Ditto.
14051         (altivec_gt<mode>): Ditto.
14052         (altivec_gtu<mode>): Ditto.
14053         (altivec_eqv4sf): Ditto.
14054         (altivec_gev4sf): Ditto.
14055         (altivec_gtv4sf): Ditto.
14056         (altivec_vcmpbfp_p): Ditto.
14057
14058 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
14059
14060         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
14061         unsigned HWI.
14062
14063 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
14064
14065         PR target/40832
14066         * config/i386/i386.c (output_387_ffreep): Rewrite to use
14067         ASM_SHORT instead of .word.
14068         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
14069         instead of .word in asm template.
14070
14071 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
14072
14073         PR target/37488
14074         * ira-lives.c (bb_has_abnormal_call_pred): New function.
14075         (process_bb_node_lives): Use it.
14076
14077         * ira.c (setup_cover_and_important_classes): Don't setup
14078         ira_important_class_nums.  Add cover classes to the end of
14079         important classes.
14080         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
14081         New.
14082         (find_reg_class_closure): Use reorder_important_classes.
14083
14084         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
14085
14086         * config/i386/i386.c (i386_ira_cover_classes): New function.
14087         (TARGET_IRA_COVER_CLASSES): Redefine.
14088
14089         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
14090         importance of order of cover classes in the array.
14091
14092 2009-07-22  Diego Novillo  <dnovillo@google.com>
14093
14094         * tree-pass.h (TDF_EH): Define.
14095         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
14096         contains TDF_EH, print the EH region number holding GS.
14097         * tree-dump.c (dump_options): Add "eh".
14098         * doc/invoke.texi: Document it.
14099
14100 2009-07-22  Doug Kwan  <dougkwan@google.com>
14101
14102         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
14103
14104 2009-07-22  Michael Matz  <matz@suse.de>
14105
14106         PR tree-optimization/35229
14107         PR tree-optimization/39300
14108
14109         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
14110         (inhibit_phi_insertion): New function.
14111         (insert_into_preds_of_block): Call it for REFERENCEs.
14112         (init_pre): Initialize and finalize scalar evolutions.
14113         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
14114
14115 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
14116
14117         * config/i386/predicates.md (zero_extended_scalar_load_operand):
14118         Use CONST_VECTOR_NUNITS to determine number of elements.
14119
14120 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
14121
14122         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
14123         (U, W): Constraints are now deprecated and will be removed if we
14124         run out of letters.
14125         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
14126         the file.
14127         ("prefetch"): Add the stcmh instruction for prefetching.
14128         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
14129         changes.
14130         (s390_short_displacement): Return always true if compiling for
14131         machines not providing the long displacement facility.
14132         (s390_mem_constraint): Support the new constraint letter Z.
14133         (s390_check_qrst_address): New function.
14134
14135 2009-07-21  DJ Delorie  <dj@redhat.com>
14136
14137         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
14138         alone too.
14139
14140 2009-07-21  Jason Merrill  <jason@redhat.com>
14141
14142         * c-common.c (max_tinst_depth): Increase default to 1024.
14143
14144 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
14145
14146         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
14147         (vec_unpacku_float_lo_v4si): Ditto.
14148
14149 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
14150
14151         PR target/40811
14152         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
14153         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
14154         (builtin_description): Add __builtin_ia32_cvtudq2ps.
14155         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
14156
14157 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
14158
14159         PR tree-optimization/40813
14160         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
14161         it.
14162
14163 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
14164
14165         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
14166         with a NOP_EXPR if needed.
14167
14168 2009-07-21  Paul Brook <paul@codesourcery.com>
14169
14170         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
14171         Terminate debug dump with newline.
14172
14173 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14174
14175         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
14176         Cast "1" to unsigned HOST_WIDE_INT.
14177         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
14178         deposit length to the maximum length - lsb.  Extend length if
14179         HOST_BITS_PER_WIDE_INT is 32.
14180
14181 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
14182
14183         * cgraph.h (constant_pool_htab): New function.
14184         (constant_descriptor_tree): Move from varasm.c.
14185         * varasm.c (constant_pool_htab): New function.
14186         (constant_descriptor_tree): Move to cgraph.h.
14187
14188 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
14189
14190         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
14191
14192 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
14193
14194         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
14195         $(VARRAY_H).
14196
14197 2009-07-20  Xinliang David Li  <davidxl@google.com>
14198
14199         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
14200
14201 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
14202
14203         * config/mips/mips.md (move_type): Add arith.
14204         (type): Handle arith.
14205         (zero_extendsidi2): Rename this into ...
14206         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
14207         (zero_extendsidi2): New expander.
14208         (*zero_extendsidi2_dext): New pattern.
14209
14210 2009-07-20  Nick Clifton  <nickc@redhat.com>
14211
14212         * config.gcc (mips64-*-*): Add definition of tm_defines in order
14213         to set MIPS_ABI_DEFAULT.
14214         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
14215
14216 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
14217
14218         * tree-object-size.c (addr_object_size): Handle unions with
14219         array in it as last field of structs in __bos (, 1) as __bos (, 0).
14220
14221         PR tree-optimization/40792
14222         * tree.c (build_function_type_skip_args): Remove bogus assert.
14223
14224 2009-07-20  Jan Hubicka  <jh@suse.cz>
14225             Martin Jambor  <mjambor@suse.cz>
14226
14227         * cgraph.h (combined_args_to_skip): New field.
14228         * cgraph.c (cgraph_create_virtual_clone): Properly handle
14229         combined_args_to_skip and args_to_skip.
14230         * tree-inline.c (update_clone_info): New function.
14231         (tree_function_versioning): Call update_clone_info.
14232         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
14233         functions.
14234         (cgraph_materialize_all_clones): More extensive dumping, working
14235         with combined_args_to_skip rather than args_to_skip.
14236
14237 2009-07-20  Ira Rosen  <irar@il.ibm.com>
14238
14239         * tree-vectorizer.h (vectorizable_condition): Add parameters.
14240         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
14241         (get_initial_def_for_reduction): Likewise.
14242         (vectorizable_reduction): Skip the check of first operand in case
14243         of COND_EXPR. Add check that it is outer loop vectorization if
14244         nested cycle was detected. Call vectorizable_condition() for
14245         COND_EXPR. If reduction epilogue cannot be created do not fail for
14246         nested cycles (if it is not double reduction). Assert that there
14247         is only one type in the loop in case of COND_EXPR. Call
14248         vectorizable_condition() to vectorize COND_EXPR.
14249         * tree-vect-stmts.c (vectorizable_condition): Update comment.
14250         Add parameters. Allow nested cycles if called from
14251         vectorizable_reduction(). Use reduction vector variable if provided.
14252         (vect_analyze_stmt): Call vectorizable_reduction() before
14253         vectorizable_condition().
14254         (vect_transform_stmt): Update call to vectorizable_condition().
14255
14256 2009-07-20  Christian Bruel  <christian.bruel@st.com>
14257
14258         * config/sh/sh.opt (-mfmovd): Resurrect and document.
14259         * doc/invoke.texi (-mfmovd): Likewise.
14260         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
14261
14262 2009-07-20  Jan Hubicka  <jh@suse.cz>
14263
14264         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
14265         when handling SSA name.
14266
14267 2009-07-19  Jan Hubicka  <jh@suse.cz>
14268
14269         PR tree-optimization/40676
14270         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
14271         virtual PHIs in empty BBs.
14272
14273 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14274
14275         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
14276         re-expanded the compound use gen_lowpart instead to convert to the
14277         desired mode.
14278
14279 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14280
14281         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
14282         OUTER_CONST arguments.
14283         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
14284         the new wider mode will be masked off.
14285         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
14286
14287 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14288
14289         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
14290         high-order bits are zero.
14291
14292 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14293
14294         * combine.c (simplify_shift_const_1): Split code to determine
14295         shift_mode into ...
14296         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
14297         new bits shifted in are identical to the old sign bit.
14298
14299 2009-07-18  Richard Guenther  <rguenther@suse.de>
14300
14301         PR c/40787
14302         * gimplify.c (gimplify_call_expr): Reject code using results from
14303         functions returning void.
14304
14305 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
14306
14307         * doc/md.texi: Document the new PowerPC "es" constraint.
14308         Document that "m" can include automodified addresses on this target,
14309         and explain how %U must be used.  Extend the "Q" and "Z" documentation
14310         to suggest "es" as well as "m".
14311         * config/rs6000/constraints.md (es): New memory constraint.
14312         (Q, Z): Update strings to match new documentation.
14313
14314 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
14315
14316         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
14317         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
14318         * config/rs6000/predicates.md (volatile_mem_operand): Use
14319         offsettable_nonstrict_memref_p.
14320         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
14321         (*floatunssidf2_internal): Likewise.
14322         (*fix_truncdfsi2_internal): Likewise.
14323         (*fix_trunctfsi2_internal): Likewise.
14324
14325 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
14326
14327         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
14328         atmega32u2 devices.
14329         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
14330
14331 2009-07-17  Richard Guenther  <rguenther@suse.de>
14332
14333         PR c/40401
14334         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
14335         (pass_warn_unused_result): Likewise.
14336         (TODO_set_props): Remove.
14337         * omp-low.c (diagnose_omp_structured_block_errors): Change to
14338         run as a pass.
14339         (pass_diagnose_omp_blocks): Define.
14340         * c-decl.c (pop_file_scope): Do not finalize the CU here.
14341         (c_gimple_diagnostics_recursively): Remove.
14342         (finish_function): Do not call it.
14343         (c_write_global_declarations): Continue after errors.
14344         Finalize the CU here.
14345         * c-gimplify.c (c_genericize): Do not gimplify here.
14346         * c-common.c (c_warn_unused_result): Move ...
14347         * tree-cfg.c (do_warn_unused_result): ... here.
14348         (run_warn_unused_result): New function.
14349         (gate_warn_unused_result): New function.
14350         (pass_warn_unused_result): New pass.
14351         * c-common.h (c_warn_unused_result): Remove.
14352         * flags.h (flag_warn_unused_result): Declare.
14353         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
14354         * opts.c (flag_warn_unused_result): Initialize to false.
14355         * toplev.c (compile_file): Add comment.
14356         * omp-low.c (create_omp_child_function): Do not register
14357         the function with the frontend.
14358         (diagnose_omp_structured_block_errors): Prepare to be
14359         called as optimization pass.
14360         (gate_diagnose_omp_blocks): New function.
14361         (pass_diagnose_omp_blocks): New pass.
14362         * cgraph.h (cgraph_optimize): Remove.
14363         (cgraph_analyze_function): Likewise.
14364         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
14365         * cgraphunit.c (cgraph_lower_function): Lower nested functions
14366         before their parents here.
14367         (cgraph_finalize_function): Not here.
14368         (cgraph_analyze_function): Gimplify functions here.
14369         (cgraph_finalize_compilation_unit): Continue after errors.
14370         Optimize the callgraph from here.
14371         (cgraph_optimize): Make static.
14372         * langhooks.c (write_global_declarations): Finalize the CU.
14373         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
14374         (gimplify_function_tree): Assert we gimplify only once.
14375         Set PROP_gimple_any property.
14376         * tree-nested.c (gimplify_all_functions): New function.
14377         (lower_nested_functions): Gimplify all nested functions.
14378         * gimple.h (diagnose_omp_structured_block_errors): Remove.
14379         * passes.c (init_optimization_passes): Add pass_warn_unused_result
14380         and pass_diagnose_omp_blocks after gimplification.  Do not
14381         set TODO_set_props on all_lowering_passes.
14382         (execute_one_pass): Do not handle TODO_set_props.
14383         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
14384         (gimplify.o): Add tree-pass.h dependency.
14385         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
14386         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
14387         (unsave_r): Likewise.
14388         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
14389         temporary variable.
14390
14391 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
14392
14393         * doc/service.texi (Service): Restore previously removed link,
14394         which isn't broken after all.
14395
14396 2009-07-17  Richard Guenther  <rguenther@suse.de>
14397
14398         PR tree-optimization/40321
14399         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
14400         PHI nodes to the maximal set.
14401         (make_values_for_phi): Add PHI arguments to the maximal set.
14402         (execute_pre): Dump PHI_GEN and the maximal set.
14403
14404 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
14405
14406         PR c++/40780
14407         * gimplify.c (gimplify_conversion): Don't change non-conversions into
14408         VIEW_CONVERT_EXPR.
14409
14410 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
14411
14412         * doc/extend.texi (Nested Functions): Replace broken link with
14413         textual reference.
14414         * doc/service.texi (Service): Remove broken link.
14415
14416 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
14417
14418         PR bootstrap/40781
14419         * builtins.c (expand_builtin_memcmp): Use loc instead of
14420         EXPR_LOCATION (exp).
14421         (expand_builtin_strncmp): Likewise.
14422
14423 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
14424             Manuel López-Ibáñez  <manu@gcc.gnu.org>
14425
14426         PR 40435
14427         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
14428         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
14429         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
14430         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
14431         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
14432         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
14433         tree-inline.c, c-common.c, c-common.h, gimple.c,
14434         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
14435         convert.c: Add location argument to fold_{unary,binary,ternary},
14436         fold_build[123], build_call_expr, build_size_arg,
14437         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
14438         fold_build1_initializer, fold_build2_initializer,
14439         fold_build3_initializer, fold_build_call_array,
14440         fold_build_call_array_initializer, fold_single_bit_test,
14441         omit_one_operand, omit_two_operands, invert_truthvalue,
14442         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
14443         combine_comparisons, fold_builtin_*, fold_call_expr,
14444         build_range_check, maybe_fold_offset_to_address, round_up,
14445         round_down.
14446
14447 2009-07-16  Jason Merrill  <jason@redhat.com>
14448
14449         PR libstdc++/37907
14450         * c-common.c (c_common_reswords): Add __is_standard_layout
14451         and __is_trivial.
14452         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
14453         * doc/implement-cxx.texi: New.
14454         * doc/gcc.texi: Include it.
14455
14456 2009-07-16  DJ Delorie  <dj@redhat.com>
14457
14458         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
14459         compares that may be indirectly affected by previous instructions.
14460
14461 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14462
14463         * builtins.c (do_mpc_arg2): New.
14464         (fold_builtin_2): Fold builtin cpow.
14465         * real.h (HAVE_mpc_pow): New.
14466
14467 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
14468
14469         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
14470         comparison to skip unprofitable schedule
14471
14472 2009-07-16  Simon Baldwin  <simonb@google.com>
14473
14474         * gcc.c (option_map): New flag -no-canonical-prefixes.
14475         * (display_help): Print help text for new flag.
14476         * (process_command): Move options translation and language specifics
14477         and handle new flag early.  Use it to set a function pointer to a
14478         prefix builder.  Replace make_relative_prefix calls with calls to
14479         the function pointed to.  Ignore new flag in regular options handling.
14480         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
14481
14482 2009-07-15  DJ Delorie  <dj@redhat.com>
14483
14484         * config/mep/mep.md (sibcall_internal): Change register to avoid
14485         argument registers.
14486         (sibcall_value_internal): Likewise.
14487
14488 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
14489
14490         PR rtl-optimization/40710
14491         * resource.c (mark_target_live_regs): Reset DF problem to LR.
14492
14493 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
14494
14495         * config/mips/mips.md (*extenddi_truncate<mode>,
14496         *extendsi_truncate<mode>): Change type attribute to move_type
14497         with shift_shift.  Split out code handling exts from here ...
14498         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
14499         pattern.
14500         (*extendhi_truncateqi): Change type attribute to move_type with
14501         shift_shift.  Split out code handling exts from here ...
14502         (*extendhi_truncateqi_exts): ... to this new pattern.
14503
14504 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
14505
14506         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
14507         instead of "and" with inverted sign bit mask value.  Use
14508         "nonimmediate_operand" for operand 1 and operand 2 predicate.
14509         Allocate registers only for operand 4 and operand 5.
14510
14511 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
14512
14513         PR middle-end/40747
14514         * fold-const.c (fold_cond_expr_with_comparison): When folding
14515         < and <= to MIN, make sure the MIN uses the same type as the
14516         comparison's operands.
14517
14518 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
14519
14520         * arm.md (ior_xor): New code iterator.
14521         (split for ior/xor with shift and zero-extend): New split pattern.
14522         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
14523
14524 2009-07-15  Richard Guenther  <rguenther@suse.de>
14525
14526         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
14527         offset member.
14528
14529 2009-07-15  Richard Guenther  <rguenther@suse.de>
14530
14531         PR middle-end/40753
14532         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
14533
14534 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
14535
14536         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
14537         handle 2.6.30 kernel.
14538
14539 2009-07-15  DJ Delorie  <dj@redhat.com>
14540
14541         * config/mep/mep.md (sibcall_internal): Change register to allow
14542         for 24-bit addresses.
14543         (sibcall_value_internal): Likewise.
14544
14545 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
14546
14547         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
14548         that are enabled/disabled by the flags introduced by a previous patch.
14549
14550 2009-07-14  DJ Delorie  <dj@redhat.com>
14551
14552         * config/mep/mep.md (sibcall_internal): Include non-toggling
14553         non-jmp case.
14554         (sibcall_value_internal): Likewise.
14555
14556 2009-07-14  Taras Glek  <tglek@mozilla.com>
14557             Rafael Espindola  <espindola@google.com>
14558
14559         * doc/sourcebuild.texi: Document install-plugin target.
14560         * configure.ac: Added install-plugin target to language makefiles.
14561         * configure: Regenerate.
14562         * Makefile.in (install-plugin): Install more headers,
14563         depend on lang.install-plugin.
14564
14565 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14566
14567         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
14568         translation.
14569
14570 2009-07-14  DJ Delorie  <dj@redhat.com>
14571
14572         * config/mep/mep.c (mep_vliw_jmp_match): New function.
14573         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
14574         * config/mep/mep.md (sibcall_internal): Change test from
14575         mep_vliw_mode_match to mep_vliw_jmp_match.
14576         (sibcall_value_internal): Likewise.
14577
14578 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
14579
14580         * config/i386/sse.md (copysign<mode>3): New expander.
14581         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
14582         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
14583         Use ix86_build_const_vector.
14584         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
14585         IX86_BUILTIN_CPYSGNPD.
14586         (builtin_description): Add __builtin_ia32_copysignps and
14587         __builtin_ia32_copysignpd.
14588         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
14589         and BUILT_IN_COPYSIGNF.
14590
14591 2009-07-13  Jason Merrill  <jason@redhat.com>
14592
14593         * builtins.c (can_trust_pointer_alignment): New fn.
14594         (get_pointer_alignment): Factor it out from here.
14595         * tree.h: Declare it.
14596
14597 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
14598
14599         * config/rs6000/predicates.md (offsettable_mem_operand): Test
14600         RTX_AUTOINC class.
14601
14602 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
14603
14604         PR debug/40705
14605         PR c++/403057
14606         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
14607
14608 2009-07-14  Richard Guenther  <rguenther@suse.de>
14609             Andrey Belevantsev <abel@ispras.ru>
14610
14611         PR middle-end/40745
14612         * cfgexpand.c (partition_stack_vars): Do not bother to update
14613         alias information when not optimizing.
14614
14615 2009-07-14  Richard Guenther  <rguenther@suse.de>
14616             Andrey Belevantsev <abel@ispras.ru>
14617
14618         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
14619         (pt_solution_set): Likewise.
14620         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
14621         * tree-ssa-structalias.c (pt_solution_set): New function.
14622         * final.c (rest_of_clean_state): Free SSA data structures.
14623         * print-rtl.c (print_decl_name): Remove.
14624         (print_mem_expr): Implement in terms of print_generic_expr.
14625         * alias.c (ao_ref_from_mem): New function.
14626         (rtx_refs_may_alias_p): Likewise.
14627         (true_dependence): Query alias-export info.
14628         (canon_true_dependence): Likewise.
14629         (write_dependence_p): Likewise.
14630         * tree-dfa.c (get_ref_base_and_extent): For void types leave
14631         size unknown.
14632         * emit-rtl.c (component_ref_for_mem_expr): Remove.
14633         (mem_expr_equal_p): Use operand_equal_p.
14634         (set_mem_attributes_minus_bitpos): Do not use
14635         component_ref_for_mem_expr.
14636         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
14637         (update_alias_info_with_stack_vars): Likewise.
14638         (partition_stack_vars): Call update_alias_info_with_stack_vars.
14639         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
14640         explicitly nor clear stmt operands.
14641         Free the decl-to-pointer map.
14642         * tree-optimize.c (execute_free_datastructures): Do not free
14643         SSA data structures here.
14644         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
14645         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
14646         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
14647         dependencies.
14648         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
14649
14650 2009-07-13  DJ Delorie  <dj@redhat.com>
14651
14652         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
14653         unrolling at the right iteration count.
14654
14655         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
14656         calculations.
14657
14658 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
14659
14660         * haifa-sched.c (rank_for_schedule): Introduced flags to
14661         enable/disable individual scheduling heuristics.
14662         * common.opt: Introduced flags to enable/disable individual
14663         heuristics in the scheduler.
14664         * doc/invoke.texi: Introduced flags to enable/disable individual
14665         heuristics in the scheduler.
14666
14667 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
14668
14669         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
14670         config/i386/mingw-tls.c.
14671         * config/i386/mingw-tls.c: Removed.
14672
14673 2009-07-13  Ira Rosen  <irar@il.ibm.com>
14674
14675         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
14676         checks access only relevant statements.
14677         (vectorizable_reduction): Likewise.
14678
14679 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
14680
14681         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
14682         just for 32-bit case.
14683
14684 2009-07-12  Jan Hubicka  <jh@suse.cz>
14685
14686         PR tree-optimization/40585
14687         * except.c (expand_resx_expr): When there already is resume
14688         instruction, produce linked list.
14689         (build_post_landing_pads): Assert that resume is empty.
14690         (connect_post_landing_pads): Handle resume lists.
14691         (dump_eh_tree): Dump resume list.
14692
14693 2009-07-12  Ira Rosen  <irar@il.ibm.com>
14694
14695         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
14696         with additional argument.
14697         * tree-vectorizer.h (enum vect_def_type): Add
14698         vect_double_reduction_def.
14699         (vect_is_simple_reduction): Add argument.
14700         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
14701         indentation.
14702         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
14703         vect_is_simple_reduction with additional argument.
14704         (vect_analyze_loop_operations): Handle exit phi nodes in case of
14705         double reduction.
14706         (reduction_code_for_scalar_code): Handle additional codes by
14707         returning ERROR_MARK for them. Fix comment and indentation.
14708         (vect_is_simple_reduction): Fix comment, add argument to specify
14709         double reduction. Detect double reduction.
14710         (get_initial_def_for_induction): Fix indentation.
14711         (get_initial_def_for_reduction): Fix comment and indentation.
14712         Handle double reduction. Create initial definitions that do not
14713         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
14714         (vect_create_epilog_for_reduction): Fix comment, add argument to
14715         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
14716         epilogue result extraction. Create double reduction phi node and
14717         replace relevant uses.
14718         (vectorizable_reduction): Call vect_is_simple_reduction with
14719         additional argument. Fix indentation. Update epilogue code treatment
14720         according to the changes in reduction_code_for_scalar_code. Check
14721         for double reduction. Call vect_create_epilog_for_reduction with
14722         additional argument.
14723         * tree-vect-stmts.c (process_use): Handle double reduction, update
14724         documentation.
14725         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
14726         (vect_get_vec_def_for_operand): Likewise.
14727
14728 2009-07-12  Danny Smith  <dansmister@gmail.com>
14729
14730         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
14731         dllexport if !TREE_PUBLIC.
14732         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
14733
14734 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
14735
14736         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
14737         (avr_extra_arch_macro) Remove declatation.
14738         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
14739         (avr_extra_arch_macro) Declare as static.
14740         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
14741
14742 2009-07-11  Jan Hubicka  <jh@suse.cz>
14743
14744         PR middle-end/48388
14745         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
14746
14747 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
14748
14749         PR debug/40713
14750         * dwarf2out.c (dw_fde_struct): Add in_std_section and
14751         cold_in_std_section bits.
14752         (dwarf2out_begin_prologue): Initialize them.
14753         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
14754         if already covered by text_section or cold_text_section range.
14755
14756         PR rtl-optimization/40667
14757         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
14758         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
14759         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
14760         * config/i386/i386.c (ix86_minimum_alignment): New function.
14761         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
14762         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
14763         * emit-rtl.c (gen_reg_rtx): Likewise.
14764         * function.c (assign_parms): Likewise.  If nominal_type needs
14765         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
14766         rather than passed_type's alignment.
14767
14768         PR target/40668
14769         * function.c (assign_parm_setup_stack): Adjust
14770         MEM_OFFSET (data->stack_parm) if promoted_mode is different
14771         from nominal_mode on big endian.
14772
14773 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
14774
14775         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
14776
14777 2009-07-10  DJ Delorie  <dj@redhat.com>
14778
14779         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
14780
14781 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
14782
14783         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
14784         attribute.
14785         (thumb2_cbnz): Likewise.
14786
14787 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
14788
14789         PR target/39079
14790         * config.gcc (supported_defaults): Add synci.
14791         (with_synci): Add validation.
14792         (all_defaults): Add synci.
14793         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
14794         ISA_HAS_SYNCI.
14795         (synci): Same.
14796         * config/mips/mips.opt (msynci): New option.
14797         * config/mips/mips.c (mips_override_options): Warn on use of
14798         -msynci for targets that do now support it.
14799         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
14800         msynci.
14801         * gcc/doc/invoke.texi (-msynci): Document the new option.
14802         * doc/install.texi (--with-synci): Document the new option.
14803
14804 2009-07-10  Richard Guenther  <rguenther@suse.de>
14805
14806         PR tree-optimization/40496
14807         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
14808         the PHI result with a compatible type.
14809
14810 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14811
14812         PR 25509
14813         PR 40614
14814         * c.opt (Wunused-result): New.
14815         * doc/invoke.texi: Document it.
14816         * c-common.c (c_warn_unused_result): Use it.
14817
14818 2009-07-09  DJ Delorie  <dj@redhat.com>
14819
14820         * targhooks.c (default_target_can_inline_p): Rename from
14821         default_target_option_can_inline_p.
14822         * targhooks.h (default_target_can_inline_p): Likewise.
14823         * target-def.h (TARGET_CAN_INLINE_P): Rename from
14824         TARGET_OPTION_CAN_INLINE_P.
14825         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
14826         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
14827         (mep_target_can_inline_p): Rename from
14828         mep_target_option_can_inline_p.
14829
14830         PR target/40626
14831         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
14832         registers used to pass vectors.
14833
14834         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
14835
14836 2009-07-09  Tom Tromey  <tromey@redhat.com>
14837
14838         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
14839         * config/mmix/mmix.c: Include dwarf2.h.
14840         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
14841         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
14842         * config/sh/sh.c: Include dwarf2.h.
14843         * config/i386/i386.c: Include dwarf2.h.
14844         * Makefile.in (DWARF2_H): Remove 'elf'.
14845         * except.c: Include dwarf2.h.
14846         * unwind-dw2.c: Include dwarf2.h.
14847         * dwarf2out.c: Include dwarf2.h.
14848         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
14849         * unwind-dw2-fde.c: Include dwarf2.h.
14850         * dwarf2asm.c: Include dwarf2.h.
14851
14852 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
14853
14854         * haifa-sched.c (insn_finishes_cycle_p): New static function.
14855         (max_issue): Use it.
14856         * sched-int.h (struct sched_info: insn_finishes_block_p): New
14857         scheduler hook.
14858         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
14859         (region_sched_info): Update.
14860         * sched-ebb.c (ebb_sched_info): Update.
14861         * modulo-sched.c (sms_sched_info): Update.
14862         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
14863
14864 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
14865
14866         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
14867
14868 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
14869
14870         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
14871
14872 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
14873
14874         PR middle-end/40692
14875         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
14876         arg1 with arg01 if arg1 is already INTEGER_CST.
14877
14878 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
14879
14880         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
14881         Transform (and (truncate)) into (truncate (and)).
14882
14883 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
14884
14885         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
14886         creating LHS paradoxical subregs.  Fix surrounding returns to
14887         use NULL_RTX rather than 0.
14888
14889 2009-07-08  DJ Delorie  <dj@redhat.com>
14890
14891         * config/mep/mep.c (mep_option_can_inline_p): New.
14892         (TARGET_OPTION_CAN_INLINE_P): Define.
14893
14894 2009-07-08  Mark Wielaard  <mjw@redhat.com>
14895
14896         PR debug/40659
14897         * dwarf2out.c (add_data_member_location_attribute): When we have
14898         only a constant offset don't emit a new location description using
14899         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
14900         dwarf_version > 2.
14901
14902 2009-07-08  Richard Henderson  <rth@redhat.com>
14903
14904         PR target/38900
14905         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
14906         (enum reg_class): Add CLOBBERED_REGS.
14907         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
14908         * config/i386/i386.c (ix86_conditional_register_usage): Moved
14909         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
14910         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
14911         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
14912         force 64-bit sibcalls into R11.
14913         * config/i386/constraints.md (U): New constraint.
14914         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
14915         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
14916         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
14917
14918 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
14919
14920         * basic-block.h (dump_regset, debug_regset): Remove duplicate
14921         prototypes.
14922         * c-objc-common.h (c_initialize_diagnostics): Ditto.
14923         * ebitmap.h (dump_ebitmap): Ditto.
14924         * optabs.h (optab_libfunc): Ditto.
14925         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
14926         * tree-flow.h (vect_can_force_dr_alignment_p,
14927         get_vectype_for_scalar_type): Ditto.
14928         (vectorize_loops): Move prototype to ...
14929         * tree-vectorizer.h: ... here. Also, adjust comment.
14930         (vect_set_verbosity_level): Remove duplicate prototype.
14931         * tree-ssa-loop.c: Include tree-vectorizer.h.
14932         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
14933
14934 2009-07-08  Nick Clifton  <nickc@redhat.com>
14935
14936         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
14937         forward slash.
14938
14939 2009-07-08  DJ Delorie  <dj@redhat.com>
14940
14941         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
14942         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
14943         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
14944         written to.
14945         * config/mep/intrinsics.md: Regenerated.
14946         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
14947         registers when asm() or calls are detected.
14948
14949 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14950
14951         PR c++/31246
14952         * gimplify.c (gimplify_expr): Propagate no_warning flag when
14953         gimplifying.
14954         * gimple (gimple_build_call_from_tree): Likewise.
14955         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
14956         no_warning flag before warning.
14957
14958 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14959
14960         * tree.c (set_expr_locus): Remove.
14961         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
14962         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
14963         EXPR_LOCATION.
14964         * gimplify.c (internal_get_tmp_var): Likewise.
14965         (gimplify_call_expr): Likewise.
14966         (gimplify_one_sizepos): Likewise.
14967
14968 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
14969
14970         PR debug/40666
14971         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
14972         to variables for debugging purposes.
14973
14974 2009-06-23  Mark Loeser  <mark@halcy0n.com>
14975
14976         PR build/40010
14977         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
14978
14979 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14980
14981         * pretty-print.c (pp_base_format): Remove %J.
14982         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
14983         gcc_cxxdiag_char_table): Likewise.
14984         (init_dynamic_diag_info): Likewise.
14985
14986 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14987
14988         * pretty-print.c (pp_base_format): Remove %H.
14989         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
14990         gcc_cxxdiag_char_table): Likewise.
14991         (init_dynamic_diag_info): Likewise.
14992         * config/mep/mep.c (mep_select_section): Likewise.
14993
14994 2009-07-07  Duncan Sands  <baldrick@free.fr>
14995
14996         * final.c (pass_clean_state): Give the pass a name.
14997         * passes.c (pass_rest_of_compilation): Likewise.
14998         * tree-optimize.c (pass_all_optimizations): Likewise.
14999
15000 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
15001
15002         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
15003         an extra 'decl' for error_at.
15004
15005 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
15006
15007         PR middle-end/40669
15008         * tree-tailcall.c (adjust_return_value_with_ops,
15009         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
15010         if it has complex or vector type.
15011
15012 2009-07-07  Olivier Hainque  <hainque@adacore.com>
15013
15014         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
15015         pthread symbols.
15016
15017 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
15018
15019         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
15020
15021 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15022
15023         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
15024         * c-decl.c: Likewise.
15025         * function.c: Likewise.
15026         * varasm.c: Likewise.
15027         * tree-ssa.c: Likewise.
15028         * c-common.c: Likewise.
15029         * tree-cfg.c: Likewise.
15030         * config/spu/spu.c: Likewise.
15031         * config/ia64/ia64.c: Likewise.
15032         * config/v850/v850.c: Likewise.
15033
15034 2009-07-06  DJ Delorie  <dj@redhat.com>
15035
15036         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
15037         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
15038         unspecified accesses to control registers.
15039         * config/mep/intrinsics.md: Regenerate.
15040         * config/mep/intrinsics.h: Regenerate.
15041         * config/mep/mep-intrin.h: Regenerate.
15042
15043 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15044
15045         * c-lex.c: Replace %H by an explicit location. Update all calls.
15046         * c-common.c: Likewise.
15047         * c-decl.c: Likewise.
15048         * c-typeck.c: Likewise.
15049         * fold-const.c: Likewise.
15050         * gimplify.c: Likewise.
15051         * stmt.c: Likewise.
15052         * tree-cfg.c: Likewise.
15053         * tree-ssa-loop-niter.c: Likewise.
15054         * tree-vrp.c: Likewise.
15055         * value-prof.c: Likewise.
15056
15057 2009-07-06  Diego Novillo  <dnovillo@google.com>
15058
15059         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
15060         if it has one.  Handle cases where VAR does not have an
15061         annotation or cfun is NULL.
15062
15063 2009-07-06  Diego Novillo  <dnovillo@google.com>
15064
15065         * tree.c: Include debug.h.
15066         (initialize_tree_contains_struct): New.
15067         (init_ttree): Call it.
15068         (tree_node_structure_for_code): Factor out of ...
15069         (tree_node_structure): ... here.
15070         * treestruct.def (TS_PHI_NODE): Remove.
15071         (TS_GIMPLE_STATEMENT): Remove.
15072
15073 2009-07-06  Diego Novillo  <dnovillo@google.com>
15074
15075         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
15076         (debug_tree_chain): Handle cycles.
15077
15078 2009-07-06  Nick Clifton  <nickc@redhat.com>
15079             DJ Delorie  <dj@redhat.com>
15080
15081         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
15082         __FMOVD_ENABLED__ is defined.
15083         * config/sh/sh.h
15084         (TARGET_FMOVD): Provide a default definition.
15085         (MASK_FMOVD): Likewise.
15086         (TARGET_CPU_CPP_BUILTINS): Define
15087         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
15088         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
15089         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
15090         (split for DF load from memory into register): Also handle
15091         MEMs which consist of REG+DISP addressing.
15092         (split for DF store from register to memory): Likewise.
15093         (movsf_ie): Always use single fp_mode.
15094         * config/sh/sh.c (sh_override_options): Do not automatically
15095         enable TARGET_MOVD for the SH2A when supporting doubles - leave
15096         that to the -mfmovd command line switch.
15097         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
15098         (fldi_ok): Always allow.
15099         * config/sh/sh.opt (mfmovd): Remove this switch.
15100         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
15101
15102 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
15103             Kaz Kojima  <kkojima@gcc.gnu.org>
15104
15105         PR rtl-optimization/30807
15106         * postreload.c (reload_combine): For every new use of REG_SUM,
15107         record the use of BASE.
15108
15109 2009-07-06  Jan Hubicka  <jh@suse.cz>
15110
15111         * params.def: Revert my accidental commit at 2009-06-30.
15112
15113 2009-07-04  Ian Lance Taylor  <iant@google.com>
15114
15115         PR target/40636
15116         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
15117         EXPORTED_CONST.
15118         (mingw_format_attribute_overrides): Likewise.
15119
15120 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
15121
15122         PR debug/40596
15123         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
15124         don't check cfa.reg.  Instead of cfa.indirect use
15125         fde && fde->drap_reg != INVALID_REGNUM test.
15126
15127 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
15128
15129         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
15130
15131 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
15132
15133         PR target/40587
15134         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
15135
15136 2009-07-03  Richard Guenther  <rguenther@suse.de>
15137
15138         PR tree-optimization/40640
15139         * tree-switch-conversion.c (build_arrays): Perform arithmetic
15140         in original type.
15141
15142 2009-07-03  Jan Hubicka  <jh@suse.cz>
15143
15144         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
15145         for size, reduce amount of inlining.
15146
15147 2009-07-03  Richard Guenther  <rguenther@suse.de>
15148
15149         PR middle-end/34163
15150         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
15151         if t +- x is known to not overflow and the conversion widens the
15152         operation.
15153         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
15154
15155 2009-07-03  Jan Hubicka  <jh@suse.cz>
15156
15157         * ipa-pure-const.c (analyze): Update loop optimizer init.
15158         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
15159         try_remove_empty_loop, remove_empty_loops): Remove.
15160         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
15161         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
15162         to mark regular loops as neccesary.
15163         (degenerate_phi_p): New function.
15164         (propagate_necessity, remove_dead_phis): Use it.
15165         (forward_edge_to_pdom): Likewise.
15166         (eliminate_unnecessary_stmts): Take care to remove uses of results of
15167         virtual PHI nodes that became unreachable.
15168         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
15169         * tree-flow.h (remove_empty_loops): Remove.
15170         * passes.c (init_optimization_passes): Remove.
15171
15172 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
15173
15174         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
15175         can_create_pseudo_p.
15176         (*fix_trunc<mode>_i387_1): Ditto.
15177         (*floathi<mode>2_1): Ditto.
15178         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
15179         (*fistdi2_1): Ditto.
15180         (*fist<mode>2_1): Ditto.
15181         (frndintxf2_floor): Ditto.
15182         (*fist<mode>2_floor_1): Ditto.
15183         (frndintxf2_ceil): Ditto.
15184         (*fist<mode>2_ceil_1): Ditto.
15185         (frndintxf2_trunc): Ditto.
15186         (frndintxf2_mask_pm): Ditto.
15187         (fxam<mode>2_i387_with_temp): Ditto.
15188         * config/i386/sse.md (mulv16qi3): Ditto.
15189         (*sse2_mulv4si3): Ditto.
15190         (mulv2di3): Ditto.
15191         (sse4_2_pcmpestr): Ditto.
15192         (sse4_2_pcmpistr): Ditto.
15193
15194 2009-07-03  Jan Hubicka  <jh@suse.cz>
15195
15196         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
15197         (mark_stmt_necessary): Set it.
15198         (mark_operand_necessary): Set it.
15199         (mark_control_dependent_edges_necessary): Set it.
15200         (mark_virtual_phi_result_for_renaming): New function.
15201         (get_live_post_dom): New function.
15202         (forward_edge_to_pdom): New function.
15203         (remove_dead_stmt): Fix handling of control dependences.
15204         (tree_dce_init): Init new bitmap.
15205         (tree_dce_done): Free it.
15206
15207 2009-07-02  Richard Guenther  <rguenther@suse.de>
15208
15209         PR bootstrap/40617
15210         * tree-ssa-structalias.c (new_var_info): Initialize
15211         is_restrict_var.
15212
15213 2009-07-02  Jan Hubicka  <jh@suse.cz>
15214
15215         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
15216         local.
15217
15218 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
15219
15220         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
15221         instead of recomputing it.  Adjust calls.
15222         (emit_store_flag): Adjust recursive calls.
15223
15224 2009-07-02  Richard Guenther  <rguenther@suse.de>
15225
15226         * tree-ssa-live.c (remove_unused_locals): Do not remove
15227         heap variables.
15228         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
15229         of DECL_EXTERNAL for HEAP variables.
15230         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
15231         HEAP variables.  Do not adjust RESTRICT vars.
15232         (find_what_var_points_to): Nobody cares if something
15233         points to READONLY.
15234
15235 2009-07-02  Ben Elliston  <bje@au.ibm.com>
15236
15237         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
15238         pc_low and pc_high declarations to the top of the function.
15239
15240 2009-07-01  DJ Delorie  <dj@redhat.com>
15241
15242         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
15243         registers as fixed.
15244         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
15245         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
15246         unspecified accesses to control registers.
15247         * config/mep/intrinsics.md: Regenerate.
15248         * config/mep/intrinsics.h: Regenerate.
15249         * config/mep/mep-intrin.h: Regenerate.
15250
15251 2009-07-01  Anthony Green  <green@moxielogic.com>
15252
15253         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
15254         instruction when possible.
15255         (moxie_expand_prologue): Ditto.  Also, save an instruction and
15256         some complexity by popping off of $r12 instead of $sp.
15257         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
15258         operands.
15259
15260 2009-07-01  Richard Henderson  <rth@redhat.com>
15261
15262         PR bootstrap/40347
15263         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
15264         contained no insns, reposition note before last insn.
15265
15266 2009-07-01  Richard Henderson  <rth@redhat.com>
15267
15268         PR debug/40431
15269         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
15270         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
15271
15272 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
15273
15274         PR bootstrap/40558
15275         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
15276         darwin9 for printing reg addresses with %y.
15277
15278 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
15279
15280         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
15281         truncation from operands in binary operations.
15282
15283 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
15284
15285         Revert:
15286         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
15287         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
15288         subreg of op0 to the original op0.
15289
15290         * expmed.c (store_bit_field_1): Use a temporary as the destination
15291         instead of a paradoxical subreg when we need to truncate the result.
15292
15293 2009-07-01  DJ Delorie  <dj@redhat.com>
15294
15295         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
15296         names to VLIW variants.
15297         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
15298         * config/mep/intrinsics.md: Regenerate.
15299         * config/mep/intrinsics.h: Regenerate.
15300         * config/mep/mep-intrin.h: Regenerate.
15301
15302 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
15303
15304         PR debug/40462
15305         * jump.c (returnjump_p): Revert last patch.
15306         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
15307
15308 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15309
15310         PR target/40575
15311         * pa.md (casesi32p): Use jump table label to determine the offset
15312         of the jump table.
15313         (casesi64p): Likewise.
15314
15315         * pa.c (forward_branch_p): Return bool type.  Use instruction
15316         addresses when available.  Assert that INSN has a jump label.
15317         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
15318         have a jump label.
15319
15320 2009-07-01  Richard Guenther  <rguenther@suse.de>
15321
15322         PR tree-optimization/19831
15323         * tree-ssa-dce.c (propagate_necessity): Calls to functions
15324         that only act as barriers do not make any previous stores necessary.
15325         * tree-ssa-structalias.c (handle_lhs_call): Delay making
15326         HEAP variables global, do not add a constraint from nonlocal.
15327         (find_func_aliases): Handle escapes through return statements.
15328         (compute_points_to_sets): Make escaped HEAP variables global.
15329
15330 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
15331
15332         PR bootstrap/40597
15333         * expmed.c (emit_store_flag): Perform a conversion if necessary,
15334         after reducing a DImode cstore to SImode.
15335
15336 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
15337
15338         * expr.c (expand_expr_real_1): Reinstate fallthrough to
15339         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
15340
15341 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
15342
15343         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
15344         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
15345         to 0.
15346         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
15347         and umod_optab if TARGET_BSD_DIVMOD.
15348         * config/vax/lib1funcs.asm: New file.
15349         * config/vax/t-linux: New file.
15350         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
15351
15352 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
15353
15354         PR c++/40566
15355         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
15356         to type arguments that have void type.
15357
15358         PR debug/40573
15359         * dwarf2out.c (gen_formal_parameter_die): Call
15360         equate_decl_number_to_die if node is different from origin.
15361
15362 2009-06-30  Anthony Green  <green@moxielogic.com>
15363
15364         Clean up moxie port for --enable-build-with-cxx.
15365         * config/moxie/moxie.c (moxie_function_value): First two
15366         parameters are const_tree, not tree.
15367         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
15368         (REG_CLASS_NAMES): Ditto.
15369         (REGNO_REG_CLASS): Ditto.
15370         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
15371         (moxie_function_value): Fix constyness of arguments.
15372
15373 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
15374
15375         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
15376         finalize_size_functions before further processing.
15377         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
15378         (variable_size): Call self_referential_size on size expressions
15379         that contain a PLACEHOLDER_EXPR.
15380         (size_functions): New static variable.
15381         (copy_self_referential_tree_r): New static function.
15382         (self_referential_size): Likewise.
15383         (finalize_size_functions): New global function.
15384         * tree.c: Include tree-inline.h.
15385         (push_without_duplicates): New static function.
15386         (find_placeholder_in_expr): New global function.
15387         (substitute_in_expr) <tcc_declaration>: Return the replacement object
15388         on equality.
15389         <tcc_expression>: Likewise.
15390         <tcc_vl_exp>: If the replacement object is a constant, try to inline
15391         the call in the expression.
15392         * tree.h (finalize_size_functions): Declare.
15393         (find_placeholder_in_expr): Likewise.
15394         (FIND_PLACEHOLDER_IN_EXPR): New macro.
15395         (substitute_placeholder_in_expr): Update comment.
15396         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
15397         is true.
15398         (copy_tree_body_r): Likewise.
15399         (copy_tree_body): New static function.
15400         (maybe_inline_call_in_expr): New global function.
15401         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
15402         (maybe_inline_call_in_expr): Declare.
15403         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
15404         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
15405         GIMPLE_H.
15406
15407 2009-06-30  Richard Guenther  <rguenther@suse.de>
15408
15409         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
15410         continue walking.
15411         (propagate_necessity): Do not mark reaching defs of stores
15412         as necessary.
15413
15414 2009-06-30  Jan Hubicka  <jh@suse.cz>
15415
15416         * cfgloopanal.c (check_irred): Move into ...
15417         (mark_irreducible_loops): ... here; return true if ireducible
15418         loops was found.
15419         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
15420         (analyze_function): Try to prove loop finiteness.
15421         * cfgloop.h (mark_irreducible_loops): Update prototype.
15422         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
15423
15424 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
15425
15426         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
15427
15428 2009-06-30  Ira Rosen  <irar@il.ibm.com>
15429
15430         PR tree-optimization/40542
15431         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
15432         types.
15433
15434 2009-06-30  Martin Jambor  <mjambor@suse.cz>
15435
15436         PR tree-optimization/40582
15437         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
15438         than useless_type_conversion_p.
15439         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
15440         proper place.
15441
15442 2009-06-30  Martin Jambor  <mjambor@suse.cz>
15443
15444         PR middle-end/40554
15445         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
15446
15447 2009-06-30  Richard Guenther  <rguenther@suse.de>
15448
15449         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
15450         use ao_ref references.
15451         (walk_aliased_vdefs): Likewise.
15452         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
15453         * tree-ssa-dce.c (struct ref_data): Remove.
15454         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
15455         (mark_aliased_reaching_defs_necessary): Adjust.
15456         (mark_all_reaching_defs_necessary_1): Likewise.
15457
15458 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
15459
15460         PR boostrap/40597
15461         * expmed.c (emit_cstore): New name of emit_store_flag_1.
15462         (emit_store_flag_1): Extract from emit_store_flag, adjust
15463         calls to (what now is) emit_cstore.
15464         (emit_store_flag): Call emit_store_flag_1 and also use it
15465         for what used to be recursive calls.
15466
15467 2009-06-30  Wei Guozhi  <carrot@google.com>
15468
15469         PR/40416
15470         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
15471         if the target bb post dominates from bb.
15472         * config/i386/i386.c (memory_address_length): Check existence of base
15473         register before using it.
15474
15475 2009-06-30  Nick Clifton  <nickc@redhat.com>
15476             DJ Delorie  <dj@redhat.com>
15477
15478         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
15479         __FMOVD_ENABLED__ is defined.
15480         * config/sh/sh.h
15481         (TARGET_FMOVD): Provide a default definition.
15482         (MASK_FMOVD): Likewise.
15483         (TARGET_CPU_CPP_BUILTINS): Define
15484         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
15485         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
15486         two fmov instructions depending upon whether TARGET_FMOVD is
15487         enabled.
15488         (split for DF load from memory into register): Also handle
15489         MEMs which consist of REG+DISP addressing.
15490         (split for DF store from register to memory): Likewise.
15491         * config/sh/sh.opt (mfmovd): Remove this switch.
15492         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
15493         * config/sh/sh.c (sh_override_options): Do not automatically
15494         enable TARGET_MOVD for the SH2A when supporting doubles - leave
15495         that to the -mfmovd command line switch.
15496
15497         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
15498         the SH4 and SH4A.
15499         (fldi_ok): Always allow.
15500         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
15501
15502 2009-06-29  DJ Delorie  <dj@redhat.com>
15503
15504         * doc/install.texi (mep-x-elf): Correct chip's full name.
15505
15506 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
15507
15508         * doc/extend.texi: Fix typo.
15509
15510 2009-06-29  Tom Tromey  <tromey@redhat.com>
15511
15512         * dwarf2.h: Remove.
15513         * Makefile.in (DWARF2_H): New variable.
15514         (except.o): Use it.
15515         (dwarf2out.o): Likewise.
15516         (dwarf2asm.o): Likewise.
15517         * config/i386/t-i386: Use DWARF2_H.
15518         * except.c: Include elf/dwarf2.h.
15519         * unwind-dw2.c: Include elf/dwarf2.h.
15520         * dwarf2out.c: Include elf/dwarf2.h.
15521         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
15522         <dtprel>: New field.
15523         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
15524         (size_of_loc_descr): Likewise.
15525         (output_loc_operands_raw): Likewise.
15526         (output_loc_operands): Handle new dtprel field.
15527         (loc_checksum): Update.
15528         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
15529         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
15530         * unwind-dw2-fde.c: Include elf/dwarf2.h.
15531         * dwarf2asm.c: Include elf/dwarf2.h.
15532         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
15533         * config/mmix/mmix.c: Include elf/dwarf2.h.
15534         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
15535         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
15536         * config/sh/sh.c: Include elf/dwarf2.h.
15537         * config/i386/i386.c: Include elf/dwarf2.h.
15538
15539 2009-06-29  DJ Delorie  <dj@redhat.com>
15540
15541         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
15542
15543         * doc/extend.texi: Add MeP attributes and pragmas.
15544         * doc/invoke.text: Add MeP Options.
15545         * doc/contrib.texi: Add MeP contribution.
15546         * doc/md.texi: Add MeP constraints.
15547         * doc/install.texi: Add MeP target.
15548
15549 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
15550
15551         * target.h (struct gcc_target): Add frame_pointer_required field.
15552         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
15553         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
15554         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
15555         hook.
15556         * reload1.c (update_eliminables): (Ditto.).
15557         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
15558         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
15559         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
15560
15561         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
15562
15563         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
15564         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15565         (arm_frame_pointer_required): New function.
15566
15567         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
15568         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15569         (avr_frame_pointer_required_p): Declare as static.
15570         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
15571
15572         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
15573         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15574         (bfin_frame_pointer_required): Make as static, change return type
15575         to bool.
15576         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
15577
15578         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
15579         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15580         (cris_frame_pointer_required): New function.
15581
15582         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
15583
15584         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
15585         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15586         (fr30_frame_pointer_required): New function.
15587
15588         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
15589         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15590         (frv_frame_pointer_required): Make as static, change return type
15591         to bool.
15592         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
15593
15594         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
15595         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15596         (ix86_frame_pointer_required): Make as static, change return type to
15597         bool.
15598         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
15599
15600         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
15601         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15602
15603         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
15604
15605         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
15606
15607         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
15608
15609         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
15610         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15611         (mips_frame_pointer_required): Make as static.
15612         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
15613
15614         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
15615         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15616         (mmix_frame_pointer_required): Mew function.
15617
15618         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
15619         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15620
15621         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
15622
15623         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
15624
15625         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
15626
15627         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
15628         (CAN_ELIMINATE): Redefine.
15629         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
15630         (sparc_frame_pointer_required): New function.
15631         (sparc_can_eliminate): New function.
15632         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
15633
15634         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
15635         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15636
15637         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
15638         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
15639         (xtensa_frame_pointer_required): Make as static, change return type
15640         to bool.
15641         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
15642         Remove.
15643
15644 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
15645
15646         * doc/plugins.texi: Document PLUGIN_START_UNIT.
15647         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
15648         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
15649         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
15650         (register_callback): Handle PLUGIN_START_UNIT.
15651         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
15652
15653 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
15654
15655         * tree.c (process_call_operands): Propagate TREE_READONLY from the
15656         operands.
15657         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
15658         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
15659
15660 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
15661
15662         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
15663         move cost.
15664
15665 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
15666
15667         * doc/extend.texi (Additional Floating Types): __float128 is also
15668         supported on i386 targets.
15669
15670 2009-06-29  Richard Guenther  <rguenther@suse.de>
15671
15672         PR middle-end/14187
15673         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
15674         flag.
15675         (pt_solutions_same_restrict_base): Declare.
15676         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
15677         flag.
15678         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
15679         (make_constraint_from, make_copy_constraint): Move earlier.
15680         (make_constraint_from_heapvar): New function.
15681         (make_constraint_from_restrict): Likewise.
15682         (handle_lhs_call): Use it.
15683         (find_func_aliases): Use it to track conversions to restrict
15684         qualified pointers.
15685         (struct fieldoff): Add only_restrict_pointers flag.
15686         (push_fields_onto_fieldstack): Initialize it.
15687         (create_variable_info_for): Track global restrict qualified pointers.
15688         (intra_create_variable_infos): Use make_constraint_from_heapvar.
15689         Track restrict qualified pointer arguments.
15690         (set_uids_in_ptset): Use varinfo is_global_var flag.
15691         (find_what_var_points_to): Set the vars_contains_restrict flag.
15692         Always create the points-to solution for sets including restrict tags.
15693         (pt_solutions_same_restrict_base): New function.
15694         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
15695         qualified pointers use pt_solutions_same_restrict_base as
15696         additional source for disambiguation.
15697
15698 2009-06-29  Richard Guenther  <rguenther@suse.de>
15699
15700         PR middle-end/38212
15701         * alias.c (find_base_decl): Remove.
15702         (get_deref_alias_set_1): Remove restrict handling.
15703         * c-common.c (c_apply_type_quals_to_decl): Do not set
15704         DECL_POINTER_ALIAS_SET.
15705         * gimplify.c (find_single_pointer_decl_1): Remove.
15706         (find_single_pointer_decl): Likewise.
15707         (internal_get_tmp_var): Remove restrict handling.
15708         (gimple_regimplify_operands): Likewise.
15709         * omp-low.c (expand_omp_atomic_pipeline): Do not set
15710         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
15711         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
15712         * tree.c (restrict_base_for_decl): Remove.
15713         (init_ttree): Do not allocate it.
15714         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
15715         LABEL_DECL_UID for label decls.
15716         (copy_node_stat): Do not copy restrict information.
15717         (decl_restrict_base_lookup): Remove.
15718         (decl_restrict_base_insert): Likewise.
15719         (print_restrict_base_statistics): Likewise.
15720         (dump_tree_statistics): Do not call print_restrict_base_statistics.
15721         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
15722         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
15723         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
15724         (LABEL_DECL_UID): Adjust.
15725         (DECL_BASED_ON_RESTRICT_P): Remove.
15726         (DECL_GET_RESTRICT_BASE): Likewise.
15727         (SET_DECL_RESTRICT_BASE): Likewise.
15728         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
15729
15730         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
15731         instead of DECL_POINTER_ALIAS_SET.
15732         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
15733         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
15734         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
15735
15736 2009-06-29  Richard Guenther  <rguenther@suse.de>
15737
15738         PR tree-optimization/40579
15739         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
15740         the IL to simplify has constants that overflowed.
15741
15742 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
15743
15744         PR tree-optimization/40550
15745         * tree-vect-generic.c (expand_vector_operations_1): Compute in
15746         vector_compute_type only when the size of vector_compute_type is
15747         less than the size of type.
15748
15749 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
15750
15751         * fold-const.c (contains_label_1): Fix comments.
15752         (contains_label_p): Do not walk trees multiple time.
15753
15754 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15755
15756         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
15757         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
15758         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
15759         ix86_fp_comparison_operator.
15760         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
15761         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
15762         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
15763         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
15764         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
15765         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
15766         (related splits): Change predicate to ix86_fp_comparison_operator.
15767         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
15768         instead of ix86_fp_comparison_codes.
15769         (ix86_trivial_fp_comparison_operator,
15770         ix86_fp_comparison_operator): New.
15771         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
15772         (ix86_expand_compare): Eliminate last two parameters.
15773         (ix86_fp_jump_nontrivial_p): Kill.
15774         * config/i386/i386.c (put_condition_code): Eliminate call to
15775         ix86_fp_comparison_codes and subsequent assertion.
15776         (ix86_fp_comparison_codes): Eliminate.
15777         (ix86_fp_swap_condition): New.
15778         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
15779         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
15780         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
15781         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
15782         and ix86_fp_swap_condition.
15783         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
15784         Use ix86_fp_comparison_strategy.
15785         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
15786         (ix86_fp_jump_nontrivial_p): Eliminate.
15787         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
15788         call to ix86_expand_compare.
15789         (ix86_split_fp_branch, ix86_expand_setcc,
15790         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
15791         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
15792
15793 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15794
15795         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
15796         related to jump_clobbers.
15797         * config/arm/arm.md (conds): Remove jump_clob case.
15798         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
15799         splits): Change comparison_operator to arm_comparison_operator.
15800         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
15801         Eliminate.
15802
15803 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15804
15805         * dojump.c (do_compare_rtx_and_jump): Try swapping the
15806         condition for floating point modes.
15807         * expmed.c (emit_store_flag_1): Move here a bigger part
15808         of emit_store_flag.
15809         (emit_store_flag): Try swapping the condition for floating point
15810         modes.
15811         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
15812
15813 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15814
15815         * expr.c (expand_expr_real_1): Just use do_store_flag.
15816         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
15817         emit_store_flag_force.
15818         * expmed.c (emit_store_flag_force): Copy here trick
15819         previously in expand_expr_real_1.  Try reversing the comparison.
15820         (emit_store_flag_1): Work if target is NULL.
15821         (emit_store_flag): Work if target is NULL, using the result mode
15822         from the comparison.  Use split_comparison, restructure final part
15823         to simplify conditionals.
15824
15825 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15826
15827         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
15828         * dojump.c (do_jump): Change handling of floating-point
15829         ops to use just do_compare_and_jump.
15830         (split_comparison): New.
15831         (do_compare_rtx_and_jump): Add here logic coming previously
15832         in do_jump, using split_comparison.
15833
15834 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
15835
15836         PR target/40489
15837         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
15838
15839 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15840
15841         * tree-ssa-alias.c: Fix unintentional commit.
15842
15843 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15844
15845         * passes.c (execute_one_pass): Fix unintentional commit.
15846
15847 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15848
15849         * df-problems.c (df_set_seen, df_unset_seen): Delete.
15850         (df_rd_local_compute, df_md_local_compute): Inline them.
15851
15852         (df_md_scratch): New.
15853         (df_md_alloc, df_md_free): Allocate/free it.
15854         (df_md_local_compute): Only include live registers in init.
15855         (df_md_transfer_function): Prune the in-set computed by
15856         the confluence function, and the gen-set too.
15857
15858 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15859
15860         PR rtl-optimization/26854
15861         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
15862         * df-problems.c (df_rd_add_problem): Fix comment.
15863         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
15864         df_md_simulate_artificial_defs_at_top,
15865         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
15866         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
15867         df_md_transfer_function, df_md_init, df_md_confluence_0,
15868         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
15869         problem_MD, df_md_add_problem): New.
15870         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
15871         df_md_get_bb_info): New.
15872         (DF_LAST_PROBLEM_PLUS1): Adjust.
15873
15874         * Makefile.in (fwprop.o): Include domwalk.h.
15875         * fwprop.c: Include domwalk.h.
15876         (reg_defs, reg_defs_stack): New.
15877         (bitmap_only_bit_between): Remove.
15878         (process_defs): New.
15879         (process_uses): Use reg_defs and local_md instead of
15880         bitmap_only_bit_between and local_rd.
15881         (single_def_use_enter_block): New, from build_single_def_use_links.
15882         (single_def_use_leave_block): New.
15883         (build_single_def_use_links): Remove code moved to
15884         single_def_use_enter_block, invoke domwalk.
15885         (use_killed_between): Adjust comment.
15886
15887 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15888
15889         * bitmap.h (bitmap_ior_and_into): New.
15890         * bitmap.c (bitmap_ior_and_into): New.
15891
15892 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15893
15894         * domwalk.h (struct dom_walk_data): Remove all callbacks except
15895         before_dom_children_before_stmts and after_dom_children_after_stmts.
15896         Rename the two remaining callbacks to just before_dom_children and
15897         after_dom_children. Remove other GIMPLE statement walking bits.
15898         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
15899         * graphite.c: Do not include domwalk.h.
15900         * tree-into-ssa.c (interesting_blocks): New global.
15901         (struct mark_def_sites_global_data): Remove it and names_to_rename.
15902         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
15903         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
15904         now that they're not domwalk callbacks.
15905         (rewrite_initialize_block): Rename to...
15906         (rewrite_enter_block): ... this, place after called functions.  Test
15907         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
15908         (rewrite_finalize_block): Rename to...
15909         (rewrite_leave_block): ... this, place after called functions.
15910         (rewrite_update_init_block): Rename to...
15911         (rewrite_update_enter_block): ... this, place after called functions.
15912         Test interesting_blocks, call rewrite_update_stmt and
15913         rewrite_update_phi_arguments.
15914         (rewrite_update_fini_block): Rename to...
15915         (rewrite_leave_block): ... this, place after called functions.
15916         (rewrite_blocks): Remove last argument, simplify initialization of
15917         walk_data.
15918         (mark_def_sites_initialize_block): Rename to...
15919         (mark_def_sites_block): ... this, call mark_def_sites.
15920         (mark_def_sites_blocks): Remove argument, simplify initialization of
15921         walk_data.
15922         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
15923         (update_ssa): Likewise.
15924         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
15925         callback.
15926         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
15927         (dom_opt_initialize_block): Rename to...
15928         (dom_opt_enter_block): ... this, place after called functions.  Walk
15929         statements here, inline propagate_to_outgoing_edges.
15930         (dom_opt_finalize_block): Rename to...
15931         (dom_opt_leave_block): ... this, place after called functions.
15932         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
15933         domwalk callback.
15934         (dse_enter_block, dse_record_phi): New.
15935         (dse_record_phis): Delete.
15936         (dse_finalize_block): Rename to...
15937         (dse_leave_block): ... this.
15938         (tree_ssa_dse): Simplify initialization of walk_data.
15939         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
15940         Adjust initialization of walk_data.
15941         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
15942         * tree-ssa-loop-phiopt.c (get_non_trapping):
15943         Adjust initialization of walk_data.
15944         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
15945         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
15946         it's not a domwalk callback.
15947         (uncprop_initialize_block): Rename to...
15948         (dse_enter_block): ... this, call uncprop_into_successor_phis.
15949         (dse_finalize_block): Rename to...
15950         (dse_leave_block): ... this.
15951         (tree_ssa_uncprop): Simplify initialization of walk_data.
15952         * Makefile.in: Adjust dependencies.
15953
15954 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
15955
15956         * arm.md (casesi): Fix test for Thumb1.
15957         (thumb1_casesi_internal_pic): Likewise.
15958         (thumb1_casesi_dispatch): Likewise.
15959
15960 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
15961
15962         * config/arm/arm-cores.def: Added core cortex-m0.
15963         * config/arm/arm-tune.md: Regenerated.
15964         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
15965
15966 2009-06-26  DJ Delorie  <dj@redhat.com>
15967
15968         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
15969
15970         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
15971         the scheduler doesn't tag jump insns.
15972
15973 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
15974
15975         * c-decl.c (merge_decls): Re-indent.
15976
15977 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
15978
15979         PR c/39902
15980         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
15981         Special-case decimal float constants.
15982
15983 2009-06-26  Richard Henderson  <rth@redhat.com>
15984
15985         * function.h (struct function): Add cannot_be_copied_reason,
15986         and cannot_be_copied_set.
15987         * tree-inline.c (has_label_address_in_static_1): Rename from
15988         inline_forbidden_p_2; don't set inline_forbidden_reason here.
15989         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
15990         don't set inline_forbidden_reason.
15991         (copy_forbidden): New function, split out of inline_forbidden_p.
15992         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
15993         (inline_forbidden_p): Use copy_forbidden.
15994         (tree_versionable_function_p): Likewise.
15995         (inlinable_function_p): Merge into tree_inlinable_function_p.
15996         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
15997         * ipa-cp.c (ipcp_versionable_function_p): New function.
15998         (ipcp_cloning_candidate_p): Use it.
15999         (ipcp_node_modifiable_p): Likewise.
16000
16001 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
16002
16003         * builtins.c (expand_builtin_alloca): Handle builtin alloca
16004         that is marked not to be inlined. Remove flag_mudflap use.
16005         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
16006         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
16007
16008 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
16009
16010         PR bootstrap/40338
16011         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
16012         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
16013
16014 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
16015
16016         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
16017         shared libgcc.
16018         (__mingwthr_remove_key_dtor): Likewise.
16019
16020 2009-06-26  Richard Guenther  <rguenther@suse.de>
16021
16022         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
16023
16024 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
16025
16026         PR middle-end/40525
16027         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
16028         try the non-cond_exec path also.
16029
16030 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16031
16032         PR target/40468
16033         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
16034         (output_cbranch): Use new functions.
16035         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
16036         Likewise.
16037
16038 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
16039             Pat Haugen  <pthaugen@us.ibm.com>
16040             Revital Eres <ERES@il.ibm.com>
16041
16042         * config/rs6000/rs6000.c (print_operand): Correct lossage message
16043         for %c error.  Add %x support to print VSX registers as a unified
16044         register set, instead of separate float and altivec registers.
16045         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
16046         %y case, and add support for VSX pre-modify addresses.
16047         (output_toc): Add assert for CONST containing an integer constant
16048         in the PLUS case.
16049         (rs6000_adjust_cost): Add POWER7 support.
16050         (insn_must_be_first_in_group): Ditto.
16051         (insn_must_be_last_in_group): Ditto.
16052         (rs6000_emit_popcount): Ditto.
16053         (rs6000_vector_mode_supported_p): Ditto.
16054
16055         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
16056         Change some of the functions called by macros to being called
16057         through a pointer, so debug functions can be inserted if
16058         -mdebug=addr or -mdebug=cost.
16059         (rs6000_preferred_reload_class_ptr): Ditto.
16060         (rs6000_secondary_reload_class_ptr): Ditto.
16061         (rs6000_secondary_memory_needed_ptr): Ditto.
16062         (rs6000_cannot_change_mode_class_ptr): Ditto.
16063         (rs6000_secondary_reload_inner): Ditto.
16064         (rs6000_legitimize_reload_address): Ditto.
16065         (rs6000_legitimize_reload_address_ptr): Ditto.
16066         (rs6000_mode_dependent_address): Ditto.
16067         (rs6000_mode_dependent_address_ptr): Ditto.
16068
16069         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
16070         function to return true if the mode allows reg + integer
16071         addresses.
16072         (virtual_stack_registers_memory_p): New function to return true if
16073         the address refers to a virtual stack register.
16074         (rs6000_legitimate_offset_address_p): Move code to say whether a
16075         mode supports reg+int addressing to reg_offset_addressing_ok_p and
16076         call it.
16077         (rs6000_legitimate_address_p): Add checks for modes that only can
16078         do reg+reg addressing.  Start adding VSX support.
16079         (rs6000_legitimize_reload_address): Ditto.
16080         (rs6000_legitimize_address): Ditto.
16081         (rs6000_debug_legitimate_address_p): New debug functions for
16082         -mdebug=addr and -mdebug=cost.
16083         (rs6000_debug_rtx_costs): Ditto.
16084         (rs6000_debug_address_costs): Ditto.
16085         (rs6000_debug_adjust_cost): Ditto.
16086         (rs6000_debug_legitimize_address): Ditto.
16087         (rs6000_legitimize_reload_address_ptr): Point to call normal
16088         function or debug function.  Make functions called via pointer
16089         static.
16090         (rs6000_mode_dependent_address_ptr): Ditto.
16091         (rs6000_secondary_reload_class_ptr): Ditto.
16092         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
16093         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
16094         into a friendlier error.
16095         (rs6000_init_builtins): Add initial VSX support.
16096         (rs6000_adjust_cost): Fix some spacing issues.
16097
16098         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
16099         (REG_CLASS_NAMES): Ditto.
16100         (REG_CLASS_CONTENTS): Ditto.
16101         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
16102         pointer, to add -mdebug=addr support.
16103         (CANNOT_CHANGE_MODE_CLASS): Ditto.
16104         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
16105         -mdebug=addr support.
16106         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
16107         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
16108         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
16109
16110         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
16111         16-bit values.
16112         (bswapsi*): Set attribute types for load/store.  Add combiner
16113         patterns to eliminate zero extend on 64-bit.
16114         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
16115         stdbrx if the hardware supports those instructions.
16116
16117 2009-06-25  Ian Lance Taylor  <iant@google.com>
16118
16119         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
16120         (Link Options): Document -static-libstdc++.
16121
16122 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16123
16124         PR target/38731
16125         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
16126         DATA_ALIGNMENT instead.
16127
16128 2009-06-25  Richard Guenther  <rguenther@suse.de>
16129
16130         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
16131         indirect references against the callused/escaped solutions.
16132         (call_may_clobber_ref_p_1): Likewise.
16133
16134 2009-06-25  Martin Jambor  <mjambor@suse.cz>
16135
16136         PR tree-optimization/40493
16137         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
16138         (enum unscalarized_data_handling): New type.
16139         (handle_unscalarized_data_in_subtree): Return what has been done.
16140         (load_assign_lhs_subreplacements): Handle left flushes differently.
16141         (sra_modify_assign): Use unscalarized_data_handling, simplified
16142         condition determining whether to remove the statement.
16143
16144 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
16145
16146         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
16147         excerpt - @ should be doubled for texinfo.
16148
16149 2009-06-24  Ian Lance Taylor  <iant@google.com>
16150
16151         * config/arc/arc.c: Include "df.h".
16152         (arc_attribute_table): Make static.  Move higher in file.
16153         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
16154         (output_shift): Initialize n later to avoid warning.
16155         * config/arm/arm.c (arm_attribute_table): Make static.  Move
16156         higher in file.
16157         * config/avr/avr.c (avr_attribute_table): Make static.  Move
16158         higher in file.
16159         (reg_class_tab): Change array type from int to enum reg_class.
16160         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
16161         LABEL_REF.
16162         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
16163         (lshrhi3_out): Likewise.
16164         (class_likely_spilled_p): Change return type to bool.
16165         (avr_rtx_costs): Use local code variable with enum type.
16166         * config/avr/avr.md (movmemhi): Use add_reg_note.
16167         (andhi3, andsi3): Don't use AS2 with "and".
16168         (iorhi3, iorsi3): Don't use AS2 with "or".
16169         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
16170         * config/crx/crx.c: Include "df.h".
16171         (crx_attribute_table): Make static.
16172         * config/m32r/m32r.c: Include "df.h".
16173         (m32r_attribute_table): Make static.  Move higher in file.
16174         (pop): Use add_reg_note.
16175         (block_move_call): Change 0 to LCT_NORMAL in function call.
16176         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
16177         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
16178         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
16179         declare, not just when TREE_CODE is defined.
16180         * config/m68hc11/m68hc11.c: Include "expr.h".
16181         (m68hc11_attribute_table): Make static.  Move higher in file.
16182         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
16183         function call.
16184         (m68hc11_register_indirect_p): Likewise.
16185         (m68hc11_function_arg_padding): Change return type to enum
16186         direction.
16187         (emit_move_after_reload): Use add_reg_note.
16188         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
16189         (m68hc11_split_logical): Likewise.
16190         (m68hc11_rtx_costs): Add local code_and outer_code variables with
16191         enum type.
16192         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
16193         to VOIDmode in function call.
16194         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
16195         tree is defined.
16196         (m68hc11_split_logical): Update declaration.
16197         (m68hc11_function_arg_padding): Update declaration.
16198         * config/mcore/mcore.c (regno_reg_class): Change form array of int
16199         to array of enum reg_class.
16200         (mcore_attribute_table): Make static.  Move higher in file.
16201         (mcore_rtx_costs): Add cast to enum type.
16202         * config/mcore/mcore.h (regno_reg_class): Update declaration.
16203         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
16204         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
16205         in file.
16206         * config/sh/predicates.md (trapping_target_operand): Rename and to
16207         and_expr.
16208         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
16209         higher in file.
16210         * config/spu/spu.c (spu_attribute_table): Make static.  Move
16211         higher in file.
16212         * config/v850/v850.c (v850_attribute_table): Make static.  Move
16213         higher in file.
16214         (v850_rtx_costs): Use local code with enum type.
16215         (expand_epilogue): Add cast.
16216         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
16217
16218 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
16219
16220         PR target/40515
16221         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
16222         -m2a-single-only and -m2a-nofpu.
16223         * config/sh/sh.opt: Document m2a generates FPU code.
16224
16225 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
16226
16227         * defaults.h (CAN_ELIMINATE): Provide default.
16228         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
16229         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
16230         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
16231         * config/spu/spu.h (CAN_ELIMINATE): Delete.
16232         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
16233         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
16234         * config/cris/cris.h (CAN_ELIMINATE): Delete.
16235         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
16236         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
16237         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
16238
16239 2009-06-24  DJ Delorie  <dj@redhat.com>
16240
16241         * mep-ext-cop.cpu: Fix copyright notice.
16242         * mep-default: Fix copyright notice.
16243         * mep-core: Fix copyright notice.
16244         * mep: Fix copyright notice.
16245         * mep-ivc2: Fix copyright notice.
16246         * mep-c5: Fix copyright notice.
16247
16248 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
16249
16250         * doc/contrib.texi (Contributors):
16251
16252 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
16253
16254         PR middle-end/40501
16255         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
16256         src and dst operands if necessary.
16257
16258 2009-06-23  DJ Delorie  <dj@redhat.com>
16259
16260         Add MeP port.
16261         * config.gcc: Add mep support.
16262         * recog.c: Resurrect validate_replace_rtx_subexp().
16263         * recog.h: Likewise.
16264         * config/mep/: Add new port:
16265         * config/mep/constraints.md: New file.
16266         * config/mep/default.h: New file.
16267         * config/mep/intrinsics.h: New file.
16268         * config/mep/intrinsics.md: New file.
16269         * config/mep/ivc2-template.h: New file.
16270         * config/mep/mep-c5.cpu: New file.
16271         * config/mep/mep-core.cpu: New file.
16272         * config/mep/mep-default.cpu: New file.
16273         * config/mep/mep-ext-cop.cpu: New file.
16274         * config/mep/mep-intrin.h: New file.
16275         * config/mep/mep-ivc2.cpu: New file.
16276         * config/mep/mep-lib1.asm: New file.
16277         * config/mep/mep-lib2.c: New file.
16278         * config/mep/mep-pragma.c: New file.
16279         * config/mep/mep-protos.h: New file.
16280         * config/mep/mep-tramp.c: New file.
16281         * config/mep/mep.c: New file.
16282         * config/mep/mep.cpu: New file.
16283         * config/mep/mep.h: New file.
16284         * config/mep/mep.md: New file.
16285         * config/mep/mep.opt: New file.
16286         * config/mep/predicates.md: New file.
16287         * config/mep/t-mep: New file.
16288
16289 2009-06-23  Ian Lance Taylor  <iant@google.com>
16290
16291         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
16292         from loose_warn into c_loose_warn and from strict_warn into
16293         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
16294         --enable-build-with-cxx.  Set and substitute
16295         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
16296         * Makefile.in (CXXFLAGS): New variable.
16297         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
16298         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
16299         the default is the same as $(STRICT_WARN).
16300         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
16301         (CXX): New variable.
16302         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
16303         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
16304         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
16305         (HOST_LIBS): New variable.
16306         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
16307         (ALL_CXXFLAGS): New variable.
16308         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
16309         * doc/install.texi (Configuration): Document
16310         --enable-build-with-cxx, --with-stage1-ldflags,
16311         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
16312         * configure: Rebuild.
16313
16314 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16315
16316         * config/arm/arm.c (arm_override_options): Fix braces and formatting
16317         from previous commit.
16318
16319 2009-06-23  Ian Lance Taylor  <iant@google.com>
16320
16321         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
16322
16323 2009-06-23  Ian Lance Taylor  <iant@google.com>
16324
16325         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
16326         with ATTRIBUTE_UNUSED.
16327
16328 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
16329             Pat Haugen  <pthaugen@us.ibm.com>
16330             Revital Eres  <eres@il.ibm.com>
16331
16332         * config.in (HAVE_AS_POPCNTD): Add default definition.
16333         (HAVE_AS_LWSYNC): Ditto.
16334
16335         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
16336         release number.
16337         (gcc_cv_as_powerpc_cmpb): Ditto.
16338         (gcc_cv_as_powerpc_dfp): Ditto.
16339         (gcc_cv_as_powerpc_vsx): Ditto.
16340         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
16341         supporting the popcntd/lwsync instructions.
16342         (gcc_cv_as_powerpc_lwsync): Ditto.
16343         * configure: Regenerate.
16344
16345         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
16346         -mcpu=native and -mcpu=power7.
16347         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
16348
16349         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
16350         a variable instead of a mask to reduce the number of mask bits.
16351         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
16352         (-mbit-word): Ditto.
16353         (-mregnames): Ditto.
16354         * config/rs6000/rs6000.opt (-mupdate): Ditto.
16355         (-mfused-madd): Ditto.
16356
16357         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
16358         2.06 instructions.
16359         (-mvsx): New switch for VSX instructions.
16360         (-misel): Move from a variable to a mask to allow it to be set by
16361         -mcpu=.
16362
16363         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
16364         function declaration to an array declaration.
16365         (rs6000_hard_regno_nregs): New external array declaration.
16366
16367         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
16368         files included by rs6000.md.
16369
16370         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
16371         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
16372
16373         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
16374         a target mask.
16375         (rs6000_debug_reg): New -mdebug= variables.
16376         (rs6000_debug_addr): Ditto.
16377         (rs6000_debug_cost): Ditto.
16378         (rs6000_pmode): New variable to hold Pmode.
16379         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
16380         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
16381         calculated at compiler start.
16382         (rs6000_hard_regno_nregs): Change function to an array which holds
16383         HARD_REGNO_NREGS calculated at compiler start.
16384         (rs6000_explicit_options): Delete isel field.
16385         (rs6000_vector_unit): New array to hold which vector unit
16386         supports arithmetic options for a given type.
16387         (rs6000_vector_mem): New array to hold which vector unit supports
16388         memory reference operations for a given type.
16389         (rs6000_vector_align): New array to given the alignment of each
16390         vector type.
16391         (power7_cost): New basic costs for power7.
16392         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
16393         (rs6000_hard_regno_nregs_internal): New function, moved from
16394         HARD_REGNO_NREGS, to calculate the number of registers each hard
16395         register takes for each type.
16396         (rs6000_debug_reg_print): New function for -mdebug=reg support.
16397         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
16398         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
16399         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
16400         unit information here so it is calculated once at compiler startup
16401         time.
16402         (rs6000_override_options): Make -misel a target mask.  Add more
16403         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
16404         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
16405         -mdebug=cost.
16406         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
16407         (rs6000_handle_option): Move -misel from variable to target mask.
16408         (rs6000_builtin_mask_for_load): Add VSX support.
16409         (rs6000_conditional_register_usage): Ditto.
16410         (USE_ALTIVEC_FOR_ARG_P): Ditto.
16411         (function_arg_boundary): Ditto.
16412         (rs6000_expand_builtin): Ditto.
16413         (def_builtin): Make abort message a little friendlier.
16414         (rs6000_emit_int_cmove): Add support for 64-bit isel.
16415
16416         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
16417         assembler support the popcntd instruction instead of a vsx
16418         instruction to enable power7 support.
16419         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
16420         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
16421         option to the assembler if -mcpu=native.
16422         (ASM_CPU_NATIVE_SPEC): Ditto.
16423         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
16424         ISA 2.06 features.
16425         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
16426         the lwsync instruction.
16427         (enum processor_type): Add PROCESSOR_POWER7.
16428         (rs6000_debug_reg): New -mdebug= options.
16429         (rs6000_debug_addr): Ditto.
16430         (rs6000_debug_cost): Ditto.
16431         (rs6000_isel): Delete.
16432         (enum rs6000_vector): New enum to say what vector unit we have.
16433         (VECTOR_UNIT_*): New macros to say which vector unit has
16434         arithmetic operations for a given type.
16435         (VECTOR_MEM_*): New macros to say which vector unit has memory
16436         operations for a given type.
16437         (TARGET_LDBRX): Whether the machine supports the ldbrx
16438         instruction.
16439         (TARGET_ISEL): Delete, -misel moved to be a mask.
16440         (TARGET_ISEL64): New macro for 64-bit isel support.
16441         (UNITS_PER_VSX_WORD): New macro.
16442         (POINTER_SIZE): Move to be an external variable, rather than
16443         calculating whether we are generating 32 ot 64-bit code.
16444         (Pmode): Ditto.
16445         (STACK_BOUNDARY): Add VSX support.
16446         (LOCAL_ALIGNMENT): Ditto.
16447         (SLOW_UNALIGNED_ACCESS): Ditto.
16448         (VSX_REGNO_P): New macro for VSX support.
16449         (VFLOAT_REGNO_P): Ditto.
16450         (VINT_REGNO_P): Ditto.
16451         (VLOGICAL_REGNO_P): Ditto.
16452         (VSX_VECTOR_MODE): Ditto.
16453         (VSX_SCALAR_MODE): Ditto.
16454         (VSX_MODE): Ditto.
16455         (VSX_MOVE_MODE): Ditto.
16456         (VSX_REG_CLASS_P): Ditto.
16457         (HARD_REGNO_NREGS): Instead of calling a function, use an array
16458         lookup.
16459         (UNITS_PER_SIMD_WORD): Add VSX support.
16460         (MODES_TIEABLE_P): Ditto.
16461         (STARTING_FRAME_OFFSET): Ditto.
16462         (STACK_DYNAMIC_OFFSET): Ditto.
16463         (EPILOGUE_USES): Ditto.
16464         (REGNO_REG_CLASS): Move to array lookup.
16465         (CLASS_MAX_NREGS): Ditto.
16466         (rs6000_vector_reg_class): Add declaration.
16467         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
16468         overlap with the floating point and Altivec registers.
16469
16470         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
16471
16472         * config/rs6000/driver-rs6000.c (asm_names): New static array to
16473         give the appropriate asm switches if -mcpu=native.
16474         (host_detect_local_cpu): Add support for "asm".
16475         (host_detect_local_cpu): Follow GNU code guidelines for name.
16476
16477         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
16478         -mbit-word to a variable instead of being a target mask.
16479
16480         * config/rs6000/sync.md (lwsync): If the assembler supports it,
16481         emit the lwsync instruction instead of emitting the instruction as
16482         an integer constant.
16483
16484         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
16485         fixuns_trundfsi2, move expander into rs6000.md.
16486
16487         * config/rs6000/rs6000.md (cpu): Add power7.
16488         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
16489         (logical predicate patterns): Change the single instruction
16490         primitives that set CR0 to be fast_compare instead of compare.
16491         (norsi*): Ditto.
16492         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
16493         (popcntddi2): Ditto.
16494         (popcount<mode>): Ditto.
16495         (floating multiply/add insns): Name the floating point
16496         multiply/add insns.
16497         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
16498         (isel_unsigned_<mode>): Ditto.
16499         (fixuns_trundfsi2): Move expander here from spe.md.
16500         (smindi3): Define if we have -misel on 64-bit systems.
16501         (smaxdi3): Ditto.
16502         (umindi3): Ditto.
16503         (umaxdi3): Ditto.
16504
16505 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
16506
16507         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
16508         extra_objs.
16509         * config/avr/avr.c (avr_current_device): New variable.
16510         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
16511         (avr_arch, mcu_type_s): Move to avr.h.
16512         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
16513         default_data_section_start fields.
16514         (avr_arch): Moved from avr.c.
16515         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
16516         library_name fields.
16517         (avr_current_device, avr_mcu_types, avr_arch_types,
16518         avr_device_to_arch, avr_device_to_data_start,
16519         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
16520         (EXTRA_SPEC_FUNCTIONS): Define.
16521         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
16522         options mapping. Use device_to_arch and device_to_data_start insted.
16523         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
16524         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
16525         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
16526         * config/avr/driver-avr.c: New file.
16527         * config/avr/avr-devices.c: New file.
16528
16529 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
16530
16531         * var-tracking.c (unshare_variable): Force initialized to
16532         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
16533         (set_variable_part): Likewise.
16534         (struct variable_union_info): Remove pos_src field.
16535         (vui_vec, vui_allocated): New variables.
16536         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
16537         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
16538         == 1 use a simpler sorting algorithm.  Compute pos field right
16539         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
16540         Avoid quadratic comparison if !flag_var_tracking_uninit.
16541         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
16542         unshare_variable unconditionally.
16543         (dataflow_set_different_2): Removed.
16544         (dataflow_set_different): Don't traverse second hash table.
16545         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
16546         unconditionally to var_reg_set or var_mem_set.
16547         (emit_notes_in_bb): Likewise.
16548         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
16549         unshare_variable.
16550         (emit_note_insn_var_location): Don't set initialized to
16551         VAR_INIT_STATUS_INITIALIZED early.
16552         (vt_finalize): Free vui_vec if needed, clear vui_vec and
16553         vui_allocated.
16554         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
16555
16556         * tree-object-size.c (addr_object_size): Instead of checking
16557         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
16558         are no FIELD_DECLs following it.
16559
16560 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
16561
16562         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
16563         order to match bswaps with signed source operands.
16564
16565 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
16566
16567         * sdbout.c (sdbout_one_type): Fix braces in switch.
16568
16569 2009-06-23  Richard Guenther  <rguenther@suse.de>
16570
16571         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
16572         member.
16573         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
16574         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
16575         var_callused, callused_tree, var_storedanything, storedanything_tree,
16576         var_integer, integer_tree): Remove global variables.
16577         (new_var_info): Do not pass new id, append the new var to the
16578         global variable vector.
16579         (do_ds_constraint): Use is_global_var member of the variable-info.
16580         (new_scalar_tmp_constraint_exp): Adjust.
16581         (create_function_info_for): Likewise.
16582         (create_variable_info_for): Likewise.
16583         (find_what_var_points_to): Remove dead code.
16584         (init_base_vars): Simplify.
16585         (compute_points_to_sets): Adjust.
16586
16587 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
16588
16589         * combine.c (try_combine): Dump information about the insns we're
16590         combining.
16591
16592 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
16593
16594         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
16595         check when calling force_to_mode on TRUNCATE's operand.
16596
16597 2009-06-22  Ian Lance Taylor  <iant@google.com>
16598
16599         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
16600
16601 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
16602
16603         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
16604
16605 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16606
16607         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
16608         override library linkage flags such as -static-libgcc or
16609         -shared-libgcc.
16610
16611 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
16612
16613         * config/m68k/m68k-devices.def: Add line for MCF5221x.
16614
16615 2009-06-22  Ian Lance Taylor  <iant@google.com>
16616
16617         * config/linux.opt: Put mglibc ahead of muclibc.
16618
16619         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
16620         for duplicate decls.
16621
16622 2009-06-22  Matthias Klose  <doko@ubuntu.com>
16623
16624         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
16625
16626 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
16627
16628         PR objc/28050
16629         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
16630         instead of NULL if a parser error occurs.
16631
16632 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
16633
16634         * dwarf2out.c (dwarf2_debug_hooks): Initialize
16635         non-DWARF2_DEBUGGING_INFO version.
16636
16637 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
16638
16639         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
16640         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
16641
16642         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
16643         (LIBGCC2_TF_CEXT): Define.
16644         (TF_SIZE): Define.
16645
16646 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16647
16648         PR target/40463
16649         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
16650
16651 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16652
16653         * config/arm/arm.c (arm_override_options): Disable
16654         -mcaller-super-interworking and -mcallee-super-interworking.
16655         * doc/invoke.texi (ARM Options): Document this.
16656
16657 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
16658
16659         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
16660         * config/arm/constraints.md (j): New constraint for movw operands.
16661         (N): Remove thumb2 meaning.
16662         * config/arm/arm.md (*arm_movw): Delete.
16663         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
16664         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
16665         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
16666
16667 2009-06-22  Martin Jambor  <mjambor@suse.cz>
16668
16669         PR tree-optimization/40492
16670         * tree-sra.c (sra_modify_assign): Pass zero offsets to
16671         build_ref_for_offset.
16672
16673 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
16674
16675         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
16676         JUMP_TABLE_DATA_P predicates where applicable.
16677         * auto-inc-dec.c: Ditto.
16678         * builtins.c: Ditto.
16679         * caller-save.c: Ditto.
16680         * calls.c: Ditto.
16681         * cfgcleanup.c: Ditto.
16682         * cfglayout.c: Ditto.
16683         * cfgrtl.c: Ditto.
16684         * combine.c: Ditto.
16685         * combine-stack-adj.c: Ditto.
16686         * cse.c: Ditto.
16687         * cselib.c: Ditto.
16688         * dbxout.c: Ditto.
16689         * df-scan.c: Ditto.
16690         * dse.c: Ditto.
16691         * dwarf2asm.c: Ditto.
16692         * dwarf2out.c: Ditto.
16693         * emit-rtl.c: Ditto.
16694         * except.c: Ditto.
16695         * explow.c: Ditto.
16696         * expmed.c: Ditto.
16697         * expr.c: Ditto.
16698         * final.c: Ditto.
16699         * function.c: Ditto.
16700         * fwprop.c: Ditto.
16701         * gcse.c: Ditto.
16702         * genpreds.c: Ditto.
16703         * genrecog.c: Ditto.
16704         * ifcvt.c: Ditto.
16705         * ira-costs.c: Ditto.
16706         * ira-lives.c: Ditto.
16707         * jump.c: Ditto.
16708         * loop-iv.c: Ditto.
16709         * lower-subreg.c: Ditto.
16710         * modulo-sched.c: Ditto.
16711         * optabs.c: Ditto.
16712         * postreload.c: Ditto.
16713         * print-rtl.c: Ditto.
16714         * recog.c: Ditto.
16715         * reginfo.c: Ditto.
16716         * regmove.c: Ditto.
16717         * reload1.c: Ditto.
16718         * reload.c: Ditto.
16719         * reorg.c: Ditto.
16720         * rtlanal.c: Ditto.
16721         * rtl.c: Ditto.
16722         * sched-vis.c: Ditto.
16723         * sdbout.c: Ditto.
16724         * sel-sched-ir.c: Ditto.
16725         * simplify-rtx.c: Ditto.
16726         * targhooks.c: Ditto.
16727         * var-tracking.c: Ditto.
16728         * vmsdbgout.c: Ditto.
16729
16730 2009-06-22  Matthias Klose  <doko@ubuntu.com>
16731
16732         * Makefile.in (install-plugin): Always use DESTDIR.
16733
16734 2009-06-22  Olivier Hainque  <hainque@adacore.com>
16735
16736         * config/pa/pa.c (output_call): Don't optimize post call jumps
16737         into return address adjustments if the call may throw.
16738
16739 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
16740
16741         * arm.c (thumb1_output_casesi): New function.
16742         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
16743         optimizing for size or PIC.
16744         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
16745         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
16746         (casesi): Handle Thumb-1 when optimizing for size or PIC.
16747         (thumb1_casesi_internal_pic): New expand rule.
16748         (thumb1_casesi_dispatch): New pattern.
16749         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
16750         thumb-1 mode.
16751         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
16752         in the text seciton when PIC or optimizing for size.
16753         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
16754         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
16755         preservation properties of code.
16756         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
16757         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
16758         (__gnu_thumb1_case_si): New function.
16759         * t-arm (LIB1ASMSRC): Define here.
16760         (LIB1ASMFUNCS): Add some common functions.
16761         * t-arm-elf (LIB1ASMSRC): Delete.
16762         (LIB1ASMFUNCS): Append to existing set.
16763         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16764         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16765         * t-symbian (LIB1ASMFUNCS): Likewise.
16766         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16767         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16768
16769 2009-06-21  Richard Guenther  <rguenther@suse.de>
16770
16771         PR tree-optimization/38729
16772         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
16773         to loops with a single exit if -fno-expensive-optimizations.
16774
16775 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
16776
16777         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
16778         (dataflow_set): Change vars type from htab_t to shared_hash.
16779         (shared_hash_pool, empty_shared_hash): New variables.
16780         (vars_clear): Removed.
16781         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
16782         shared_hash_find_slot_unshare, shared_hash_find_slot,
16783         shared_hash_find_slot_noinsert, shared_hash_find): New
16784         static inlines.
16785         (shared_hash_unshare, shared_hash_destroy): New functions.
16786         (unshare_variable): Unshare set->vars if shared, use
16787         shared_hash_htab.
16788         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
16789         (get_init_value, find_src_set_src, dump_dataflow_set,
16790         clobber_variable_part, emit_notes_for_differences): Use
16791         shared_hash_htab.
16792         (dataflow_set_init): Remove second argument, set vars to
16793         empty_shared_hash instead of creating a new htab.
16794         (dataflow_set_clear): Call shared_hash_destroy and set vars
16795         to empty_shared_hash instead of calling vars_clear.
16796         (dataflow_set_copy): Don't call vars_copy, instead just share
16797         the src htab with dst.
16798         (variable_union): Use shared_hash_*, use initially NO_INSERT
16799         lookup if set->vars is shared.  Don't keep slot cleared before
16800         calling unshare_variable.  Unshare set->vars if needed.
16801         Even ->refcount == 1 vars must be unshared if set->vars is shared
16802         and var needs to be modified.
16803         (variable_canonicalize): New function.
16804         (dataflow_set_union): If dst->vars is empty, just share src->vars
16805         with dst->vars and traverse with variable_canonicalize to canonicalize
16806         and unshare what is needed.
16807         (dataflow_set_different): If old_set and new_set use the same shared
16808         htab, they aren't different.  If number of htab elements is different,
16809         htabs are different.  Use shared_hash_*.
16810         (dataflow_set_destroy): Call shared_hash_destroy instead of
16811         htab_delete.
16812         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
16813         second argument to dataflow_set_init.
16814         (vt_initialize): Likewise.  Initialize shared_hash_pool and
16815         empty_shared_hash, move bb in/out initialization afterwards.
16816         Use variable_htab_free instead of NULL as changed_variables del hook.
16817         (variable_was_changed): Change type of second argument to pointer to
16818         dataflow_set.  When inserting var into changed_variables, bump
16819         refcount.  Unshare set->vars if set is shared htab and slot needs to
16820         be cleared.
16821         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
16822         lookup if set->vars is shared.  Unshare set->vars if needed.
16823         Even ->refcount == 1 vars must be unshared if set->vars is shared
16824         and var needs to be modified.  Adjust variable_was_changed caller.
16825         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
16826         vars must be unshared if set->vars is shared and var needs to be
16827         modified.  Adjust variable_was_changed caller.
16828         (emit_note_insn_var_location): Don't pool_free var.
16829         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
16830         instead of 1.
16831         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
16832         free_alloc_pool on shared_hash_pool.
16833
16834 2009-06-20  Anthony Green  <green@moxielogic.com>
16835
16836         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
16837         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
16838
16839 2009-06-20  Richard Guenther  <rguenther@suse.de>
16840
16841         * tree-ssa-structalias.c (find_func_aliases): For memset use
16842         a constraint from NULL if we memset to zero.
16843         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
16844         we explicitly handle that do not read from memory.
16845         (call_may_clobber_ref_p_1): Properly handle builtins that may
16846         set errno.
16847
16848 2009-06-20  Richard Guenther  <rguenther@suse.de>
16849
16850         PR tree-optimization/40495
16851         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
16852         (new_scalar_tmp_constraint_exp): New function.
16853         (process_constraint): Do not create temporary decls.
16854         (process_all_all_constraints): Likewise.
16855         (handle_const_call): Likewise.
16856         (create_function_info_for): Do not set decl.
16857
16858 2009-06-19  Ian Lance Taylor  <iant@google.com>
16859
16860         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
16861         (rs6000_attribute_table): Make static; move before use.
16862
16863 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
16864
16865         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
16866         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
16867         Propagate the TREE_READONLY flag without overwriting it.
16868         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
16869         Propagate the TREE_READONLY flag onto the result.
16870         (process_call_operands): Move around.  Use correct constant value.
16871
16872 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16873
16874         PR target/40482
16875         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
16876         * config/arm/arm.md: Likewise.
16877
16878 2009-06-19  Ian Lance Taylor  <iant@google.com>
16879
16880         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
16881         to GIMPLE_ERROR_MARK.
16882
16883         * c-typeck.c (build_conditional_expr): Add op1_original_type and
16884         op2_original_type parameters.  Warn about using different enum types.
16885         * c-parser.c (c_parser_conditional_expression): Pass original
16886         types to build_conditional_expr.
16887         * c-tree.h (build_conditional_expr): Update declaration.
16888
16889 2009-06-19  Ian Lance Taylor  <iant@google.com>
16890
16891         * config/i386/i386.c (ix86_function_specific_save): Test that
16892         fields match values, rather than testing the values are in a
16893         certain range.
16894
16895 2009-06-19  Richard Guenther  <rguenther@suse.de>
16896
16897         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
16898         ADDR_EXPR pointers.
16899         (ptr_derefs_may_alias_p): Likewise.
16900         (ptr_deref_may_alias_ref_p_1): New function.
16901         (ptr_deref_may_alias_ref_p): Likewise.
16902         (ref_maybe_used_by_call_p_1): Handle builtins that are not
16903         covered by looking at the ESCAPED solution.
16904         (call_may_clobber_ref_p_1): Likewise.
16905         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
16906         Handle NULL_TREE offset.  Do not produce redundant constraints.
16907         (process_all_all_constraints): New helper function.
16908         (do_structure_copy): Use it.
16909         (handle_lhs_call): Likewise.
16910         (find_func_aliases): Handle some builtins with pointer arguments
16911         and/or return values explicitly.
16912
16913 2009-06-19  Ian Lance Taylor  <iant@google.com>
16914
16915         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
16916
16917 2009-06-19  Ian Lance Taylor  <iant@google.com>
16918
16919         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
16920
16921 2009-06-19  Ian Lance Taylor  <iant@google.com>
16922
16923         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
16924         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
16925         version.
16926
16927         * c-decl.c (finish_decl): If -Wc++-compat, warn about
16928         uninitialized const.
16929
16930 2009-06-19  Ian Lance Taylor  <iant@google.com>
16931
16932         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
16933         all uses.
16934
16935         * c-decl.c (in_struct, struct_types): Remove.
16936         (struct c_binding): Add in_struct field.
16937         (c_binding_ptr): Define type, along with VEC.
16938         (struct c_struct_parse_info): Define.
16939         (struct_parse_info): New static variable.
16940         (bind): Initialize in_struct field.
16941         (start_struct): Remove enclosing_in_struct and
16942         enclosing_struct_types parameters.  Add
16943         enclosing_struct_parse_info parameter.  Change all callers.  Set
16944         struct_parse_info rather than in_struct and struct_types.
16945         (grokfield): If -Wc++-compat and there is a symbol binding for the
16946         field name, set the in_struct flag and push it on the
16947         struct_parse_info->fields vector.
16948         (warn_cxx_compat_finish_struct): New static function.
16949         (finish_struct): Remove enclosing_in_struct and
16950         enclosing_struct_types parameters.  Add
16951         enclosing_struct_parse_info parameter.  Change all callers.  Don't
16952         set C_TYPE_DEFINED_IN_STRUCT here.  Call
16953         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
16954         parameter.  Only push on struct_types if warn_cxx_compat.
16955         (finish_enum): Only push on struct_types if warn_cxx_compat.
16956         (declspecs_add_type): Add loc parameter.  Change all callers.
16957         Change all error calls to error_at.  Pass loc, not input_location,
16958         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
16959         defined in a struct.  If -Wc++-compat and parsing a struct, record
16960         that a typedef name was used.
16961         * c-parser.c (c_parser_declspecs): Get location to pass to
16962         declspecs_add_type.
16963         (c_parser_struct_or_union_specifier): Update calls to start_struct
16964         and finish_struct.
16965         * c-tree.h (struct c_struct_parse_info): Declare.
16966         (finish_struct, start_struct): Update declarations.
16967         (declspecs_add_type): Update declaration.
16968
16969 2009-06-19  Ian Lance Taylor  <iant@google.com>
16970
16971         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
16972         variable with an anonymous type.
16973
16974 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
16975
16976         * see.c: Remove for real.
16977
16978 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
16979
16980         * optabs.h (enum optab_index): Add new OTI_significand.
16981         (significand_optab): Define corresponding macro.
16982         * optabs.c (init_optabs): Initialize significand_optab.
16983         * genopinit.c (optabs): Implement significand_optab using
16984         significand?f2 patterns.
16985         * builtins.c (expand_builtin_mathfn): Handle
16986         BUILT_IN_SIGNIFICAND{,F,L}.
16987         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
16988         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
16989
16990         * config/i386/i386.md (significandxf2, significand<mode>2): New
16991         expanders to implement significandf, significand and significandl
16992         built-ins as inline x87 intrinsics.
16993
16994 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
16995
16996         * config/avr/avr.c (avr_override_options): Remove setting value of
16997         PARAM_INLINE_CALL_COST.
16998
16999 2009-06-18  Richard Henderson  <rth@redhat.com>
17000
17001         PR 40488
17002         * tree-pass.h (TDF_ASMNAME): New.
17003         * tree-dump.c (dump_options): Add asmname.
17004         * doc/invoke.texi: Document it.
17005
17006         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
17007         (dump_decl_name): ...here.
17008         (dump_function_name): New flags arg; mind TDF_ASMNAME.
17009         (dump_generic_node): Update dump_function_name calls.
17010         (print_call_name): New flags arg; update all dump calls.
17011         * diagnostic.h (print_call_name): Update.
17012         * gimple-pretty-print.c (dump_gimple_call): Update.
17013
17014 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
17015
17016         PR target/40470
17017         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
17018
17019 2009-06-18  Diego Novillo  <dnovillo@google.com>
17020
17021         * doc/plugins.texi: Document plugin_is_GPL_compatible.
17022         * plugin.c (str_license): Declare.
17023         (try_init_one_plugin): Assert that the symbol
17024         'plugin_is_GPL_compatible' exists.
17025
17026 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
17027
17028         * see.c: Remove.
17029         * Makefile.in (OBJS-common): Remove see.o.
17030         (see.o): Remove.
17031         * common.opt (fsee): Mark as preserved for backward compatibility.
17032         * opts.c (common_handle_option): Add OPT_fsee to the backward
17033         compatibility section.
17034         * passes.c (init_optimization_passes, pass_see): Remove pass.
17035         * timevar.def (TV_SEE): Remove.
17036         * tree-pass.h (pass_see): Remove declaration.
17037         * doc/invoke.texi (-fsee): Remove documentation.
17038
17039 2009-06-18  Martin Jambor  <mjambor@suse.cz>
17040
17041         * tree-sra.c: Include statistics.h
17042         (sra_stats): New variable.
17043         (sra_initialize): Clear sra_stats.
17044         (create_access_replacement): Increment sra_stats.replacements.
17045         (get_access_replacement): Do not return twice.
17046         (analyze_all_variable_accesses): Increment statistics counter by the
17047         number of scalarized aggregates.
17048         (generate_subtree_copies): Increment sra_stats.subtree_copies.
17049         (sra_modify_expr): Increment sra_stats.exprs.
17050         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
17051         (sra_modify_assign): Increment sra_stats.exprs,
17052         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
17053         (perform_intra_sra): Update statistics counters.
17054         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
17055
17056 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
17057
17058         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
17059         (arm_scalar_mode_supported_p): New function.
17060
17061 2009-06-18  Paul Brook  <paul@codesourcery.com>
17062             Sandra Loosemore  <sandra@codesourcery.com>
17063
17064         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
17065         (__extendhfsf2, __truncsfhf2): Define.
17066         * config/arm/fp16.c: New file.
17067         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
17068         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
17069
17070 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
17071
17072         * doc/extend.texi (Half-Precision): New section.
17073         * doc/invoke.texi (Option Summary): List -mfp16-format.
17074         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
17075         * config/arm/arm.opt (mfp16-format=): New.
17076         * config/arm/arm.c: Include intl.h.
17077         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
17078         (TARGET_INVALID_RETURN_TYPE): Redefine.
17079         (TARGET_PROMOTED_TYPE): Redefine.
17080         (TARGET_CONVERT_TO_TYPE): Redefine.
17081         (arm_fp16_format): Define.
17082         (all_fpus): Add entry for neon-fp16.
17083         (fp_model_for_fpu): Likewise.
17084         (struct fp16_format): Declare.
17085         (all_fp16_formats): Define.
17086         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
17087         functions.
17088         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
17089         and no ldrh.
17090         (arm_legitimate_index_p): Treat HFmode like HImode.
17091         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
17092         (coproc_secondary_reload_class): Special-case HFmode.
17093         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
17094         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
17095         (arm_init_fp16_builtins): New.
17096         (arm_init_builtins): Call it.
17097         (arm_invalid_parameter_type): New.
17098         (arm_invalid_return_type): New.
17099         (arm_promoted_type): New.
17100         (arm_convert_to_type).
17101         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
17102         format.
17103         (arm_emit_fp16_const): New function.
17104         (arm_mangle_type): Mangle __fp16 as "Dh".
17105         * config/arm/arm.h (TARGET_VFPD32): Make it know about
17106         FPUTYPE_NEON_FP16.
17107         (TARGET_NEON_FP16): New.
17108         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
17109         (enum fputype): Add FPUTYPE_NEON_FP16.
17110         (enum arm_fp16_format_type): Declare.
17111         (arm_fp16_format): Declare.
17112         (LARGEST_EXPONENT_IS_NORMAL): Define.
17113         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
17114         * config/arm/arm-modes.def (HFmode): Define.
17115         * config/arm/vfp.md (*movhf_vfp): New.
17116         (extendhfsf2): New.
17117         (truncsfhf2): New.
17118         * config/arm/arm.md (fpu): Add neon_fp16.
17119         (floatsihf2, floatdihf2): New.
17120         (fix_trunchfsi2, fix_trunchfdi2): New.
17121         (truncdfhf2): New.
17122         (extendhfdf2): New.
17123         (movhf): New.
17124         (*arm32_movhf): New.
17125         (*thumb1_movhf): New.
17126         (consttable_2): Add check for HFmode constants.
17127         (consttable_4): Handle HFmode constants.
17128
17129 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
17130
17131         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
17132
17133 2009-06-17  Olivier Hainque  <hainque@adacore.com>
17134
17135         * collect2.c (main): Use CONST_CAST2 to perform char ** to
17136         const char ** conversion in AIX specific section.
17137
17138 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
17139
17140         * config/i386/i386.c (ix86_special_builtin_type): Remove
17141         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
17142         (bdesc_special_args): Updated.
17143         (ix86_init_mmx_sse_builtins): Likewise.
17144         (ix86_expand_special_args_builtin): Likewise.
17145
17146 2009-06-17  Richard Henderson  <rth@redhat.com>
17147
17148         * tree-pretty-print.c (maybe_dump_asm_name): New.
17149         (dump_decl_name): Use it.
17150         (PRINT_FUNCTION_NAME): Merge into...
17151         (dump_function_name): ... here.  Use maybe_dump_asm_name.
17152
17153 2009-06-17  Cary Coutant  <ccoutant@google.com>
17154
17155         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
17156         Change caller.
17157         * debug.c (struct gcc_debug_hooks): Change placeholder for
17158         source_line hook.
17159         (debug_nothing_int_charstar_int): Replaced by...
17160         (debug_nothing_int_charstar_int_bool): ...this.
17161         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
17162         source_line prototype.
17163         (debug_nothing_int_charstar_int): Replaced by...
17164         (debug_nothing_int_charstar_int_bool): ...this.
17165         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
17166         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
17167         Output is_stmt operand when necessary.
17168         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
17169         (notice_source_line): Add is_stmt parameter.
17170         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
17171         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
17172         Change callers.
17173         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
17174         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
17175
17176 2009-06-17  Ian Lance Taylor  <iant@google.com>
17177
17178         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
17179         Change all uses.
17180         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
17181         call uses.
17182
17183 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
17184
17185         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
17186         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
17187         tree_strip_sign_nop_conversions and
17188         tree_ssa_strip_useless_type_conversions rather than stripping
17189         the operations here.
17190         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
17191         Declare them.
17192         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
17193         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
17194         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
17195         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
17196         functions.
17197
17198 2009-06-17  Michael Eager  <eager@eagercon.com>
17199
17200         * config/rs6000/constraints.md (register_constraint "d"): New.
17201         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
17202         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
17203         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
17204         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
17205         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
17206         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
17207         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
17208         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
17209         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
17210         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
17211         __fctiwz): Same.
17212         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
17213         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
17214         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
17215         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
17216         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
17217         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
17218         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
17219         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
17220         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
17221         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
17222         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
17223         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
17224         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
17225         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
17226
17227 2009-06-16  Ian Lance Taylor  <iant@google.com>
17228
17229         * profile.c (total_num_never_executed): Don't define.
17230         (compute_branch_probabilities): Don't count or print
17231         num_never_executed.
17232         (init_branch_prob): Don't set total_num_never_executed.
17233         (end_branch_prob): Don't print total_num_never_executed.
17234
17235 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
17236
17237         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
17238
17239 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
17240
17241         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
17242         (nabstd2_fpr): Same.
17243
17244 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
17245
17246         * expr.c (expand_assignment): Change complex type check.
17247
17248 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
17249
17250         * doc/plugins.texi (Building GCC plugins): Added new section.
17251
17252 2009-06-17  Ian Lance Taylor  <iant@google.com>
17253
17254         * c-pch.c (get_ident): Don't set size of templ array.
17255         (pch_init): Don't set size of partial_pch array.
17256
17257         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
17258         string constant to intialize an array whose size is the length of
17259         the string.
17260
17261 2009-06-17  Richard Guenther  <rguenther@suse.de>
17262
17263         PR tree-optimization/40389
17264         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
17265         to addressable types.
17266         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
17267
17268 2009-06-17  Richard Guenther  <rguenther@suse.de>
17269
17270         PR middle-end/40460
17271         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
17272         if there is no evolution of left in the loop bail out.
17273         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
17274         chrec_fold_multiply.
17275
17276 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
17277             Janis Johnson  <janis187@us.ibm.com>
17278
17279         PR target/39254
17280         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
17281         for the symbol ref of a constant that is the source of a move
17282         - nor for any other not-obvious-label-ref constants.
17283
17284 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
17285
17286         * plugin.c (position_pass): Skip newly inserted pass during list
17287         traversal to avoid repeated insertion.
17288
17289 2009-06-16  Ian Lance Taylor  <iant@google.com>
17290
17291         * vec.h (VEC_stack_alloc): Define different version if
17292         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
17293         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
17294         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
17295         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
17296
17297 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
17298
17299         * config.gcc (extra_headers): Add ia32intrin.h for x86.
17300
17301         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
17302         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
17303         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
17304         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
17305         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
17306         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
17307         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
17308         (bdesc_special_args): Add __builtin_ia32_rdtsc and
17309         __builtin_ia32_rdtscp.
17310         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
17311         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
17312         and __builtin_ia32_rorhi.
17313         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
17314         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
17315         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
17316         (ix86_expand_args_builtin): Likewise.
17317         (ix86_expand_special_args_builtin): Likewise.
17318
17319         * config/i386/i386.md (UNSPECV_RDTSCP): New.
17320         (UNSPECV_RDTSC): Likewise.
17321         (UNSPECV_RDPMC): Likewise.
17322         (*bsr): Renamed to ...
17323         (bsr): This
17324         (*bsr_rex64): Renamed to ...
17325         (bsr_rex64): This.
17326         (rdpmc): New.
17327         (*rdpmc): Likewise.
17328         (*rdpmc_rex64): Likewise.
17329         (rdtsc): Likewise.
17330         (*rdtsc): Likewise.
17331         (*rdtsc_rex64): Likewise.
17332         (rdtscp): Likewise.
17333         (*rdtscp): Likewise.
17334         (*rdtscp_rex64): Likewise.
17335
17336         * config/i386/ia32intrin.h: New.
17337
17338         * config/i386/x86intrin.h: Include <ia32intrin.h>.
17339
17340 2009-06-16  Ian Lance Taylor  <iant@google.com>
17341
17342         * ira-build.c (copy_info_to_removed_store_destinations):
17343         Initialize parent_a.
17344
17345 2009-06-16  Ian Lance Taylor  <iant@google.com>
17346
17347         * c-decl.c (grokdeclarator): Change size_varies to bool.
17348
17349 2009-06-16  Ian Lance Taylor  <iant@google.com>
17350
17351         * sel-sched.c: Make forward declarations of move_op_hooks and
17352         fur_hooks explicitly extern.
17353
17354 2009-06-16  Ian Lance Taylor  <iant@google.com>
17355
17356         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
17357         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
17358
17359 2009-06-16  Ian Lance Taylor  <iant@google.com>
17360
17361         * resource.c (mark_referenced_resources): Change
17362         include_delayed_effects parameter to bool.  Change all callers.
17363         (mark_end_of_function_resources): Likewise.
17364         * reorg.c (insn_references_resource_p): Likewise.
17365         (insn_sets_resource_p): Likewise.
17366         * resource.h (mark_referenced_resources): Update declaration.
17367         (mark_end_of_function_resources): Update declaration.
17368
17369 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
17370
17371         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
17372
17373 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
17374
17375         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
17376         GCC can bootstrap on AIX with GNU Binutils 2.20.
17377
17378 2009-06-16  Ian Lance Taylor  <iant@google.com>
17379
17380         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
17381
17382 2009-06-16  Ian Lance Taylor  <iant@google.com>
17383
17384         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
17385         inline, not extern inline.
17386         (exact_log2): Likewise.
17387         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
17388         test CLZ_HWI.
17389         (exact_log2): Likewise, but don't test CTZ_HWI.
17390
17391 2009-06-16  Ian Lance Taylor  <iant@google.com>
17392
17393         * bitmap.c (bitmap_clear): Don't declare as inline.
17394         * gimple.c (gimplify_assign): Likewise.
17395         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
17396         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
17397         (sched_scan_info): Remove duplicate definition.
17398
17399 2009-06-16  Ian Lance Taylor  <iant@google.com>
17400
17401         * c-common.c (skip_evaluation): Don't define.
17402         (c_inhibit_evaluation_warnings): Define global variable.
17403         (overflow_warning): Check c_inhibit_evaluation_warnings rather
17404         than skip_evaluation.
17405         (convert_and_check, warn_for_div_by_zero): Likewise.
17406         * c-common.h (skip_evaluation): Don't declare.
17407         (c_inhibit_evaluation_warnings): Declare.
17408         * c-parser.c (c_parser_typeof_specifier): Set
17409         c_inhibit_evaluation_warnings rather than skip_evaluation.
17410         (c_parser_conditional_expression): Likewise.
17411         (c_parser_binary_expression): Likewise.
17412         (c_parser_sizeof_expression): Likewise.
17413         (c_parser_alignof_expression): Likewise.
17414         * c-typeck.c (build_indirect_ref): Check
17415         c_inhibit_evaluation_warnings rather than skip_evaluation.
17416         (build_conditional_expr, build_binary_op): Likewise.
17417
17418 2009-06-16  Richard Guenther  <rguenther@suse.de>
17419
17420         * tree-ssa-alias.c (is_escape_site): Remove.
17421         * tree-ssa-alias.h (enum escape_type): Remove.
17422         (is_escape_site): Likewise.
17423         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
17424         via casts and asms without deferring to is_escape_site.
17425
17426 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
17427
17428         PR middle-end/40446
17429         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
17430         use gen_lowpart if op0 has complex mode.
17431
17432 2009-06-16  Richard Guenther  <rguenther@suse.de>
17433
17434         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
17435         variables add them to ESCAPED.
17436         (find_func_aliases): Do not make all indirectly stored values escaped.
17437
17438 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
17439
17440         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
17441         make_decl_one_only.
17442
17443 2009-06-16  Martin Jambor  <mjambor@suse.cz>
17444
17445         PR tree-optimization/40432
17446         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
17447         check whether we need to force gimple register operand.
17448
17449 2009-06-16  Martin Jambor  <mjambor@suse.cz>
17450
17451         PR tree-optimization/40413
17452         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
17453         build_ref_for_offset.
17454         (propagate_subacesses_accross_link): Fix a typo in a comment.
17455
17456 2009-06-16  Ira Rosen  <irar@il.ibm.com>
17457
17458         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
17459         with additional parameter.
17460         * tree-vectorizer.h (enum vect_def_type): Add new value
17461         vect_nested_cycle.
17462         (enum vect_relevant): Add comments.
17463         (vect_is_simple_reduction): Add new argument.
17464         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
17465         Detect nested cycles.
17466         (vect_is_simple_reduction): Update documentation, add an argument to
17467         distinguish inner-loop reduction from nested cycle, detect nested
17468         cycles, fix printings and indentation, don't swap operands in case
17469         of nested cycle.
17470         (get_initial_def_for_reduction): Handle subtraction.
17471         (vect_create_epilog_for_reduction): Add new argument to specify
17472         reduction variable.
17473         (vect_finalize_reduction): Handle subtraction, fix comments.
17474         (vectorizable_reduction): Handle nested cycles. In case of nested
17475         cycle keep track of the reduction variable position. Call
17476         vect_is_simple_reduction with additional parameter. Use original
17477         statement code in reduction epilogue for nested cycle. Call
17478         vect_create_epilog_for_reduction with additional parameter.
17479         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
17480         inner-loop vectorization.
17481         (vect_recog_widen_sum_pattern): Likewise.
17482         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
17483         and reductions.
17484         (vect_mark_stmts_to_be_vectorized): Likewise.
17485         (vect_get_vec_def_for_operand): Handle nested cycles.
17486
17487 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17488
17489         * doc/invoke.texi (Debugging Options): Fix option index entries
17490         for -fdump-statistics, -frandom-seed add entries for
17491         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
17492         (FRV Options): Fix entries for -mTLS, -mtls.
17493         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
17494         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
17495         (M68hc1x Options): Fix @itemx for -mnominmax.
17496         (MCore Options): Fix entry for -mno-lsim.
17497         (MMIX Options): Fix entry for -mabi=mmixware.
17498         (PDP-11 Options): Fix entry for -mbcopy-builtin.
17499
17500 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
17501
17502         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
17503         Mention the plugin mode of gengtype.
17504         * doc/gty.texi (Source Files Containing Type Information): Likewise.
17505         * gengtype.c: Updated copyright.
17506         (plugin_files, nb_plugin_files) Added new static variables.
17507         (measure_input_list) Care about plugin_files.
17508         (write_rtx_next): Added early return in plugin mode.
17509         (create_file): Updated copyright year in generated file. Added
17510         asserts.
17511         (oprintf): Added early return if NULL outf.
17512         (get_output_file_with_visibility): Care of plugin_files.
17513         (get_output_file_name): May return null.
17514         (write_local): Added early return.
17515         (put_mangled_filename): Ditto.
17516         (finish_root_table): Added check for base_files.
17517         (write_roots): Care about null when plugins.
17518         (main): Added plugin mode.
17519
17520 2009-06-15  Ian Lance Taylor  <iant@google.com>
17521
17522         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
17523         * gcov.c (read_count_file): Add braces around variables declared
17524         before label.
17525
17526         * c.opt (Wjump-misses-init): New warning.
17527         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
17528         -Wall and -Wc++-compat if not already set.
17529         (c_common_post_options): Clear warn_jump_misses_init if it was not
17530         set.
17531         * c-decl.c (struct c_binding): Change type field to a union with
17532         new label field.  Make it the first field in the struct.  Update
17533         references to type to use u.type instead.
17534         (struct c_spot_bindings): Define.
17535         (struct c_goto_bindings): Define.
17536         (c_goto_bindings_p): Define, along with VECs.
17537         (struct c_label_vars): Define.
17538         (struct c_scope): Add has_label_bindings field.
17539         (bind_label, set_spot_bindings): New static functions.
17540         (decl_jump_unsafe, update_spot_bindings): New static functions.
17541         (update_label_decls): New static function.
17542         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
17543         Update binding u.label field to shadowed field.
17544         (c_binding_start_stmt_expr): New function.
17545         (c_binding_end_stmt_expr): New function.
17546         (pushdecl): Don't call c_begin_vm_scope.
17547         (make_label): Add defining and p_label_vars parameters.  Change
17548         all callers.
17549         (lookup_label): Correct test for whether a label has not yet been
17550         defined.  Call bind_label rather than bind.
17551         (warn_about_goto): New static function.
17552         (lookup_label_for_goto): New function.
17553         (declare_label): Call bind_label rather than bind.
17554         (check_earlier_gotos): New static function.
17555         (define_label): Don't give errors about jumping into statement
17556         expressions or scopes of variably modified types.  Call
17557         set_spot_bindings and check_earlier_gotos.  Call bind_label
17558         instead of bind.  Don't set label_context_stack_se or
17559         label_context_stack_vm.
17560         (c_get_switch_bindings): New function.
17561         (c_release_switch_bindings): New function.
17562         (c_check_switch_jump_warnings): New function.
17563         (start_function): Don't set label_context_stack_se or
17564         label_context_stack_vm.
17565         (finish_function): Likewise.
17566         * c-typeck.c (label_context_stack_se): Don't define.
17567         (label_context_stack_vm): Don't define.
17568         (c_finish_goto_label): Call lookup_label_for_goto rather than
17569         lookup_label.  Don't give errors about jumping into a statement
17570         expression or the scope of a variably modified type.  Don't set
17571         label_context_stack_se or label_context_stack_vm.
17572         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
17573         fields.  Add bindings field.
17574         (c_start_case): Don't set deleted fields.  Set bindings field.
17575         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
17576         or blocked_vm.  Call c_check_switch_jump_warnings.
17577         (c_finish_case): Don't test blocked_stmt_expr field.  Call
17578         c_release_switch_bindings.
17579         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
17580         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
17581         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
17582         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
17583         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
17584         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
17585         (c_begin_vm_scope, c_end_vm_scope): Don't define.
17586         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
17587         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
17588         (C_DECL_UNJUMPABLE_VM): Don't define.
17589         (C_DECL_UNDEFINABLE_VM): Don't define.
17590         (struct c_label_list): Don't define.
17591         (struct c_label_context_se): Don't define.
17592         (struct c_label_context_vm): Don't define.
17593         (struct c_spot_bindings): Declare.
17594         (c_bindings_start_stmt_expr): Declare.
17595         (c_bindings_end_stmt_expr): Declare.
17596         (lookup_label_for_goto): Declare.
17597         (c_get_switch_bindings, c_release_switch_bindings): Declare.
17598         (c_check_switch_jump_warnings): Declare.
17599         (label_context_stack_se, label_context_stack_vm): Don't declare.
17600         (c_finish_goto_label): Update declaration.
17601         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
17602         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
17603         (Warning Options): Document -Wjump-misses-init.
17604
17605 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
17606
17607         * tree-object-size.c (addr_object_size): Fix a pasto in the last
17608         change.
17609
17610 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
17611
17612         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
17613
17614 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
17615
17616         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
17617
17618 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
17619
17620         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
17621
17622 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
17623
17624         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
17625         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
17626         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
17627         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
17628         * dwarf2asm.c (dw2_force_const_mem): Update call to
17629         make_decl_one_only.
17630         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
17631         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
17632         * langhooks.c (lhd_comdat_group): Remove.
17633         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
17634         * tree.h (DECL_COMDAT_GROUP): New.
17635         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
17636         (tree_decl_with_vis): Add comdat_group. Remove one_only.
17637         (make_decl_one_only): Change signature.
17638         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
17639         make_decl_one_only.
17640         (make_decl_one_only): Change signature.
17641         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
17642
17643 2009-06-15  Richard Guenther  <rguenther@suse.de>
17644
17645         PR middle-end/40439
17646         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
17647
17648 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
17649
17650         * tree-ssa-math-opts.c: Remove extra divide.
17651
17652 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
17653
17654         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
17655
17656 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
17657
17658         * passes.c: Add bswap pass.
17659         * tree-pass.h: Add pass_optimize_bswap declaration.
17660         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
17661         Include rtl.h, expr.h and optabs.h for optab_handler check.
17662         (struct symbolic_number, pass_optimize_bswap): New definition.
17663         (do_shift_rotate, verify_symbolic_number_p): New functions.
17664         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
17665         (gate_optimize_bswap): New function.
17666         * tree.c (widest_int_cst_value): New function.
17667         * tree.h (widest_int_cst_value): Prototype added.
17668
17669 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
17670
17671         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
17672         REG_EQUAL/REG_EQUIV notes.
17673
17674 2009-06-14  Richard Guenther  <rguenther@suse.de>
17675
17676         PR middle-end/40389
17677         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
17678         has its address taken if NRV was applied and it is addressable.
17679         * tree-ssa-structalias.c (get_constraint_for_address_of): New
17680         function split out from ...
17681         (get_constraint_for_1): ... here.
17682         (handle_rhs_call): Use it to mark the return slot escaped if
17683         it is addressable and NRV was applied.
17684
17685 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
17686
17687         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
17688         Change first argument type to location_t.
17689         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
17690         Do not set input_location.
17691         Use loc instead of input_location throughout.
17692
17693 2009-06-13  Richard Guenther  <rguenther@suse.de>
17694
17695         PR tree-optimization/40421
17696         * tree-predcom.c (should_unroll_loop_p): Remove.
17697         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
17698
17699 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
17700
17701         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
17702         Add location argument.
17703
17704 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
17705
17706         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
17707         build_decl.
17708         * config/s390/s390.c (s390_build_builtin_va_list): Same.
17709         (s390_gimplify_va_arg): Pass location to create_artificial_label.
17710         * config/spu/spu-protos.h: Add location to
17711         spu_resolve_overloaded_builtin.
17712         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
17713         spu_build_builtin_va_list.
17714         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
17715         argument.  Pass location to build_function_call_vec.
17716         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
17717         build_decl.
17718         (emit_fpu_switch): Same.
17719         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
17720         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
17721         to build_decl and create_artificial_label.
17722         (xtensa_gimplify_va_arg_expr): Same.
17723         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
17724         (xstormy16_gimplify_va_arg_expr): Same.
17725         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
17726         * config/arm/arm.c (arm_build_builtin_va_list): Same.
17727         * config/mips/mips.c (mips_build_builtin_va_list): Same.
17728         (mips16_build_function_stub): Same.
17729         (mips16_build_call_stub): Same.
17730
17731 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
17732
17733         PR target/40327
17734         * arm/constraints.md (Pa, Pb): New constraints.
17735         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
17736         split pattern to deal with them.
17737
17738 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
17739
17740         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
17741         fix index entry for -Xpreprocessor.
17742
17743 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
17744
17745         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
17746         Add location argument to build_decl call.
17747         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
17748         (rs6000_init_builtins): Same.
17749         (spe_init_builtins): Same.
17750         (rs6000_gimplify_va_arg): Add location argument to
17751         create_artificial_label call.
17752
17753 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
17754
17755         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
17756         * combine-stack-adj.c (pass_stack_adjustments): Use it.
17757         * Makefile.in: Fix GGC dependency for gcse.o.
17758
17759 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
17760
17761         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
17762         * gimple-pretty-print.c (dump_gimple_stmt): Same.
17763         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
17764         created.
17765         * c-parser.c (c_parser_binary_expression): Use current column while
17766         building binary operations.
17767         * common.opt (fshow-column): Enable by default.
17768         * tree-vrp.c (check_array_ref): Use warning_at.
17769         (check_array_bounds): Use location from call back if expr has no
17770         location.
17771         * tree.h: Add location argument to maybe_fold_*.
17772         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
17773         (maybe_fold_offset_to_array_ref): Add location argument and use it.
17774         (maybe_fold_offset_to_component_ref): Same.
17775         (maybe_fold_offset_to_reference): Same.
17776         (maybe_fold_offset_to_address): Same.
17777         (maybe_fold_stmt_indirect): Same.
17778         (maybe_fold_stmt_addition): Same.
17779         (fold_stmt_r): Pass location to maybe_fold_*.
17780         (fold_gimple_assign): Same.
17781         * c-tree.h: Add location argument to finish_decl,
17782         default_function_array_conversion, store_init_value.
17783         * c-decl.c (define_label): Use error_at.
17784         (c_make_fname_decl): Pass location to finish_decl.
17785         (finish_decl): New location argument.
17786         (build_compound_literal): Pass location to store_init_value.
17787         (grokdeclarator): Pass location to finish_decl.
17788         (grokfield): Same.
17789         * c-typeck.c (array_to_pointer_conversion): New location argument.
17790         (function_to_pointer_conversion): Same.
17791         (default_function_array_conversion): Same.
17792         (parser_build_unary_op): Pass location to overflow_warning.
17793         (parser_build_binary_op): Same.  Use warning_at.
17794         (build_unary_op): Pass location to array_to_pointer_conversion.
17795         (build_c_cast): Pass location to digest_init.
17796         (build_modify_expr): New location argument.
17797         (convert_for_assignment): Same.
17798         (store_init_value): Same.
17799         (digest_init): Same.
17800         (output_init_element): Pass location to digest_init and
17801         array_to_pointer_conversion.
17802         (c_finish_return): Pass location to convert_for_assignment.
17803         * gimplify.c (gimplify_conversion): Pass location to
17804         maybe_fold_offset_to_address.
17805         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
17806         to maybe_fold_stmt_addition.
17807         * c-omp.c (c_finish_omp_atomic): Pass new location to
17808         build_modify_expr.
17809         (c_finish_omp_for): Same.
17810         * c-common.c (overflow_warning): New argument.
17811         * c-common.h: New argument to build_modify_expr, overflow_warning.
17812         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
17813         finish_decl.
17814         (c_parser_initializer): Pass location to
17815         default_function_array_conversion.
17816         (c_parser_initelt): Same.
17817         (c_parser_initval): Same.
17818         (c_parser_asm_operands): Same.
17819         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
17820         (c_parser_conditional_expression): Same.
17821         (c_parser_binary_expression): Add location info to stack.  Use it.
17822         (c_parser_unary_expression): Pass location to
17823         default_function_array_conversion, parser_build_unary_op,
17824         build_indirect_ref, c_parser_postfix_expression_after_primary.
17825         (c_parser_postfix_expression_after_primary): New location argument.
17826         Use it.
17827         (c_parser_expression_conv): Pass location to
17828         default_function_array_conversion.
17829         (c_parser_expr_list): Same.
17830         (c_parser_omp_atomic): Same.
17831         (c_parser_omp_for_loop): Same.
17832         * c-tree.h (struct c_declarator): Add comment to id_loc.
17833         (build_array_declarator): New argument.
17834         * c-decl.c (build_array_declarator): Add location argument.
17835         (grokdeclarator): Set id_loc for cdk_array.
17836         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
17837         build_array_declarator.
17838         * tree.c (build_omp_clause): Add location argument.
17839         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
17840         (OMP_CLAUSE_LOCATION): New macro.
17841         (struct tree_omp_clause): Add location field.
17842         (build_omp_clause): Add argument.
17843         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
17844         build_omp_clause.
17845         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
17846         (cp_parser_omp_clause_collapse): Same.
17847         (cp_parser_omp_clause_default): Same.
17848         (cp_parser_omp_clause_if): Same.
17849         (cp_parser_omp_clause_nowait): Same.
17850         (cp_parser_omp_clause_num_threads): Same.
17851         (cp_parser_omp_clause_ordered): Same.
17852         (cp_parser_omp_clause_schedule): Same.
17853         (cp_parser_omp_clause_untied): Same.
17854         (cp_parser_omp_for_loop): Same.
17855         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
17856         * c-tree.h (c_start_case): Add location argument.
17857         (c_process_expr_stmt): Same.
17858         (c_finish_goto_*): Same.
17859         * tree-parloops.c (initialize_reductions): Pass location to
17860         build_omp_clause.
17861         (create_parallel_loop): Same.
17862         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
17863         (gfc_trans_omp_reduction_list): Same.
17864         (gfc_trans_omp_clauses): Same.
17865         (gfc_trans_omp_do): Same.
17866         * c-typeck.c (c_finish_goto_label): Same.
17867         (c_finish_goto_ptr): New location argument.
17868         (c_start_case): Same.
17869         (emit_side_effect_warnings): Same.
17870         (c_process_expr_stmt): Same.
17871         (c_finish_stmt_expr): Same.
17872         (c_finish_omp_clauses): Use error_at instead of error.
17873         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
17874         build_omp_clause.
17875         * c-omp.c (c_split_parallel_clauses): New location argument.
17876         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
17877         to build_omp_clause.
17878         (convert_local_reference_stmt): Same.
17879         (convert_gimple_call): Same.
17880         * c-common.h (c_split_parallel_clauses): New argument.
17881         * c-parser.c (c_parser_statement_after_labels): Pass location to
17882         c_finish_goto_label.
17883         (c_parser_switch_statement): Pass location to c_start_case.
17884         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
17885         and c_process_expr_stmt.
17886         (c_parser_omp_variable_list): Add location argument.
17887         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
17888         (c_parser_omp_clause_default): Same.
17889         (c_parser_omp_clause_if): Same.
17890         (c_parser_omp_clause_num_threads): Same.
17891         (-c_parser_omp_clause_ordered): Same.
17892         (c_parser_omp_clause_reduction): Pass location to
17893         c_parser_omp_variable_list.
17894         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
17895         (c_parser_omp_clause_untied): Same.
17896         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
17897         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
17898
17899         * c-tree.h (check_for_loop_decls, undeclared_variable,
17900         build_component_ref, build_array_ref, build_external_ref,
17901         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
17902         build_conditional_expr, build_compound_expr, c_cast_expr,
17903         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
17904         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
17905         argument.
17906         * c-semantics.c (build_stmt): Same.
17907         (build_case_label): Same.
17908         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
17909         (undeclared_variable): New argument.
17910         (make_label): Same.
17911         (lookup_label): Pass location on down.
17912         (define_label): Same.
17913         (finish_decl): Same.
17914         (build_compound_literal): Same.
17915         (finish_struct): Same.
17916         (finish_function): Do not set location here.
17917         (check_for_loop_decls): New argument.
17918         * tree.c (save_expr): Set location.
17919         (build_empty_stmt): New argument.
17920         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
17921         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
17922         * builtins.c (gimplify_va_arg_expr): Use locations.
17923         (expand_builtin_sync_operation): Same.
17924         * c-typeck.c (build_component_ref): New argument.
17925         (build_array_ref): Same.
17926         (build_external_ref): Same.
17927         (c_expr_sizeof_expr): Same.
17928         (c_expr_sizeof_type): Same.
17929         (parser_build_unary_op): Same.
17930         (build_conditional_expr): Same.
17931         (build_compound_expr): Pass location on down.
17932         (build_compound_expr): New argument.
17933         (build_c_cast): Same.
17934         (c_cast_expr): Same.
17935         (build_asm_expr): Same.
17936         (c_finish_return): Same.
17937         (c_process_expr_stmt): Pass location on down.
17938         (c_finish_stmt_expr): New argument.
17939         (push_clenaup): Same.
17940         (c_finish_omp_parallel): Same.
17941         (c_finish_omp_task): Same.
17942         * gimplify.c (gimplify_call_expr): Pass location on down.
17943         * c-omp.c (c_finish_omp_master): New argument.
17944         (c_finish_omp_critical): Same.
17945         (c_finish_omp_ordered): Same.
17946         (c_finish_omp_barrier): Same.
17947         (-c_finish_omp_taskwait): Same.
17948         (c_finish_omp_atomic): Same.
17949         (c_finish_omp_flush): Same.
17950         * tree-inline.c (copy_tree_body_r): Pass location on down.
17951         (inline_forbidden_p): Remove use of input_location.
17952         * c-gimplify.c (c_build_bind_expr): New argument.
17953         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
17954         (c_sizeof_or_alignof_type): New argument.
17955         (c_alignof_expr): Same.
17956         (build_va_arg): Same.
17957         (c_add_case_label): Same.
17958         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
17959         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
17960         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
17961         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
17962         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
17963         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
17964         New argument.
17965         * stub-objc.c (objc_build_selector_expr): Same.
17966         (objc_build_throw_stmt): Same.
17967         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
17968         (c_parser_initelt): Same.
17969         (c_parser_compound_statement): Same.
17970         (c_parser_compound_statement_nostart): Same.
17971         (c_parser_label): Same.
17972         (c_parser_statement_after_labels): Same.
17973         (c_parser_if_body): Same.
17974         (c_parser_else_body): Same.
17975         (c_parser_if_statement): Same.
17976         (c_parser_switch_statement): Same.
17977         (c_parser_while_statement): Same.
17978         (c_parser_do_statement): Same.
17979         (c_parser_for_statement): Same.
17980         (c_parser_asm_statement): Same.
17981         (c_parser_conditional_expression): Same.
17982         (c_parser_binary_expression): Same.
17983         (c_parser_cast_expression): Same.
17984         (c_parser_unary_expression): Same.
17985         (c_parser_sizeof_expression): Same.
17986         (c_parser_alignof_expression): Same.
17987         (c_parser_postfix_expression): Same.
17988         (c_parser_expression): Same.
17989         (c_parser_objc_receiver): Same.
17990         (c_parser_omp_variable_list): Same.
17991         (c_parser_omp_structured_block): Same.
17992         (c_parser_omp_atomic): New argument.
17993         (c_parser_omp_barrier): Same.
17994         (c_parser_omp_critical): Same.
17995         (c_parser_omp_flush): Pass location on down.
17996         (c_parser_omp_for_loop): New argument.
17997         (c_parser_omp_for): Same.
17998         (c_parser_omp_master): Same.
17999         (c_parser_omp_ordered): Same.
18000         (c_parser_omp_sections_scope): Same.
18001         (c_parser_omp_sections): Same.
18002         (c_parser_omp_parallel): Same.
18003         (c_parser_omp_single): Same.
18004         (c_parser_omp_task): Same.
18005         (c_parser_omp_taskwait): Pass location on down.
18006         (c_parser_omp_construct): Same.
18007         (c_parser_omp_threadprivate): Same.
18008         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
18009         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
18010         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
18011         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
18012         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
18013         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
18014         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
18015         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
18016         config/i386/i386.c, stmt.c:
18017         Add location argument to the following function definitions and/or
18018         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
18019         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
18020         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
18021         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
18022         do_case, c_finish_bc_stmt, build_compound_literal,
18023         build_function_call.
18024         * c-decl.c (build_compound_literal): Add location argument.
18025         Make all diagnostic calls use location.
18026         (start_struct): Same.
18027         (finish_struct): Same.
18028         (start_enum): Same.
18029         (build_enumerator): Same.
18030         (start_function): Same.
18031         (grokdeclarator): Make all diagnostic calls use location.
18032         (store_parm_decls_oldstyle): Same.
18033         * c-typeck.c (build_function_call): Add location argument.
18034         Make all diagnostic calls use location.
18035         (do_case): Same.
18036         (c_finish_bc_stmt): Same.
18037         * tree-nested.c (get_trampoline_type): Add argument.
18038         Pass location to build_decl.
18039         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
18040         * rtl.h (RTL_LOCATION): New.
18041         * c-common.c (c_add_case_label): Add location argument.
18042         Make all diagnostic calls use location.
18043         * c-common.h: Add location argument to make_fname_decl, do_case,
18044         c_add_case_label, build_function_call, resolve_overloaded_builtin.
18045         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
18046         Set it appropriately for every case.  Pass enum_loc to start_enum
18047         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
18048         parser_xref_tag.
18049         (c_parser_struct_or_union_specifier): Save location.  Use it for
18050         start_struct, finish_struct, and parser_xref_tag.
18051
18052 2009-06-12  Ian Lance Taylor  <iant@google.com>
18053
18054         * fold-const.c (fold_unary): Rename local variable and to and_expr.
18055
18056         * c-opts.c (c_common_handle_option): For -Wc++-compat set
18057         cpp_opts->warn_cxx_operator_names.
18058
18059 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18060
18061         PR tree-opt/38865
18062         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
18063         is returns NULL and OP is a VCE, look through the VCE.
18064
18065 2009-06-12  Ian Lance Taylor  <iant@google.com>
18066
18067         PR bootstrap/40430
18068         * collect2.c (main): Use CONST_CAST2 in code inside #if
18069         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
18070
18071 2009-06-12  Joey Ye  <joey.ye@intel.com>
18072
18073         PR middle-end/39146
18074         * cfgexpand.c (get_decl_align_unit): Update
18075         max_used_stack_slot_alignment with align instead of
18076         stack_alignment_needed.
18077
18078         * function.c (assign_stack_local_1): Update
18079         max_used_stack_slot_alignment with alignment_in_bits instead
18080         of stack_alignment_needed.
18081         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
18082         here.
18083
18084 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
18085
18086         * dwarf2out.c (last_var_location_insn): New variable.
18087         (dwarf2out_end_epilogue): Clear last_var_location_insn.
18088         (dwarf2out_var_location): Don't record anything after last real
18089         insn.  Only change labels if there were any real instructions
18090         in between last note and this one, or if changed sections.
18091
18092 2009-06-11  Richard Henderson  <rth@redhat.com>
18093
18094         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
18095         note when storing the frame pointer in a register.
18096         (FRP): Don't redefine to nothing for epilogue.
18097         (alpha_expand_epilogue): Mark register and sp restores.
18098         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
18099
18100         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
18101         when gen_lowpart is needed.
18102
18103 2009-06-11  Richard Henderson  <rth@redhat.com>
18104
18105         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
18106
18107         * dwarf2out.c (need_data_align_sf_opcode): New.
18108         (div_data_align): Move earlier.
18109         (def_cfa_1, reg_save): Use it.
18110
18111 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
18112
18113         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
18114         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
18115         (ix86_handle_option): Handle OPT_mcrc32.
18116         (ix86_target_string): Add -mcrc32.
18117         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
18118
18119         * config/i386/i386.h (TARGET_CRC32): New.
18120
18121         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
18122         (sse4_2_crc32di): Likewise.
18123
18124         * config/i386/i386.opt (mcrc32): New.
18125
18126         * doc/invoke.texi: Document -mcrc32.
18127
18128 2009-06-11  Richard Henderson  <rth@redhat.com>
18129
18130         * common.opt (gdwarf-): Accept a version number.
18131         * doc/invoke.texi (gdwarf-): Update docs.
18132         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
18133         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
18134         version level, and record it.
18135
18136         * dwarf2.h (DW_CIE_VERSION): Remove.
18137         * dwarf2out.c (DWARF_VERSION): Remove.
18138         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
18139         (output_call_frame_info): Use CIE version 3 for dwarf3,
18140         or if the return register column is out of range for version 1.
18141         (dwarf_stack_op_name): Add all dwarf3 values.
18142         (DEBUG_PUBTYPES_SECTION): New.
18143         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
18144         encoding change for dwarf3.
18145         (output_die) [dw_val_class_die_ref]: Likewise.
18146         (output_compilation_unit_header): Emit correct version for dwarf3.
18147         (output_line_info): Likewise.
18148         (output_pubnames): Update for DWARF_VERSION removal.
18149         (output_aranges): Likewise.
18150         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
18151         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
18152         (dwarf2out_finish): Likewise.
18153
18154 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
18155
18156         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
18157         in r148403.
18158
18159 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
18160
18161         PR c/39252
18162         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
18163         * builtins.c (expand_builtin_unreachable): New function.
18164         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
18165         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
18166         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
18167         successors.
18168         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
18169         searching for missing barriers.
18170
18171 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
18172
18173         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
18174         when -fprofile-generate* was passed.
18175         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
18176
18177 2009-06-11  Anthony Green  <green@moxielogic.com>
18178
18179         * config/moxie/moxie.md: Define length attribute for all instructions.
18180         (rCC): Define.
18181         (*b<cond:code>): Support limited branch ranges for new PC-relative
18182         branch instructions.
18183         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
18184
18185 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
18186
18187         * config/i386/i386.c (min_insn_size): Use get_attr_length
18188         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
18189         For __asm return 0.
18190
18191         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
18192         instead of emit_insn_before.
18193
18194 2009-06-10  Ian Lance Taylor  <iant@google.com>
18195
18196         PR bootstrap/40408
18197         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
18198         GIMPLE_SWITCH.
18199
18200 2009-06-10  Revital Eres  <eres@il.ibm.com>
18201
18202         * passes.c (init_optimization_passes): Reschedule
18203         predictive-commoning pass before complete unroll pass.
18204
18205 2009-06-10  Martin Jambor  <mjambor@suse.cz>
18206
18207         * cgraph.c (cgraph_node_can_be_local_p): New function.
18208         (cgraph_make_node_local): New function.
18209         * cgraph.h (cgraph_node_can_be_local_p): Declare.
18210         (cgraph_make_node_local): Declare.
18211
18212 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
18213
18214         * tree.h (tree_base): Add packed_flag and user_align fields.
18215         Decrease size of spare field.
18216         (TYPE_USER_ALIGN): Use user_align from tree_base.
18217         (DECL_USER_ALIGN): Likewise.
18218         (TYPE_PACKED): Use packed_flag from tree_base.
18219         (DECL_PACKED): Likewise.
18220         (tree_type): Delete packed_flag and user_align fields.  Widen
18221         precision field.  Widen mode field and shuffle fields to align
18222         mode on an 8-bit boundary.
18223         (tree_decl_common): Delete decl_flag_1 and user_align fields.
18224         Renumber decl_flag_* fields.  Fix comments.  Widen
18225         decl_common_unused field.
18226         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
18227         (DECL_EXTERNAL): Likewise.
18228         (DECL_BIT_FIELD): Likewise.
18229         (DECL_NONADDRESSABLE_P): Likewise.
18230         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
18231         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
18232
18233 2009-06-10  Ian Lance Taylor  <iant@google.com>
18234
18235         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
18236         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
18237         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
18238         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
18239         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
18240         DEF_VEC_ALLOC_FUNC_P.
18241         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
18242         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
18243         DEF_VEC_ALLOC_FUNC_O.
18244         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
18245         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
18246         DEF_VEC_ALLOC_FUNC_I.
18247         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
18248         (vec_stack_p_reserve_exact_1): Declare.
18249         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
18250         (vec_stack_free): Declare.
18251         (VEC_stack_alloc): Define.
18252         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
18253         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
18254         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
18255         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
18256         for void_p.
18257         (stack_vecs): New static variable.
18258         (vec_stack_p_reserve_exact_1): New function.
18259         (vec_stack_o_reserve_1): New static function.
18260         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
18261         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
18262         (vec_stack_free): New function.
18263         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
18264         (VEC_df_ref_stack_alloc): Define.
18265         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
18266         DEF_VEC_ALLOC_P_STACK.
18267         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
18268         (struct df_collection_rec): Change _vec fields to VEC.  Remove
18269         _use fields.
18270         (df_free_collection_rec): Adjust for new fields.
18271         (df_insn_rescan): Use new df_collection_rec fields.
18272         (df_notes_rescan, df_canonize_collection_rec): Likewise.
18273         (df_ref_create_structure, df_ref_record): Likewise.
18274         (df_get_conditional_uses, df_get_call_refs): Likewise.
18275         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
18276         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
18277         (df_record_exit_block_uses, df_bb_verify): Likewise.
18278         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
18279         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
18280         Remove count parameter.  Change return type to void.  Change all
18281         callers.
18282         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
18283         Remove count parameter.  Change return type to void.  Change all
18284         callers.
18285         (df_install_refs): Change old_vec parameter to VEC.  Remove count
18286         parameter.  Change all callers.
18287         (df_install_mws): Change old_vec parameter to VEC.  Remove count
18288         parameter.  Change all callers.
18289         (df_refs_verify): Change new_rec parameter to VEC.  Change call
18290         callers.
18291         (df_mws_verify): Likewise.
18292
18293 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
18294
18295         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
18296
18297 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
18298
18299         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
18300
18301 2009-06-10  Anthony Green  <green@moxielogic.com>
18302
18303         * config/moxie/crti.asm: New file.
18304         * config/moxie/crtn.asm: New file.
18305         * config/moxie/moxie.c: New file.
18306         * config/moxie/moxie.h: New file.
18307         * config/moxie/sfp-machine.h: New file.
18308         * config/moxie/moxie-protos.h: New file.
18309         * config/moxie/t-moxie: Created.
18310         * config/moxie/t-moxie-softfp: Created.
18311         * config/moxie/moxie.md: Created.
18312         * config/moxie/constraints.md: Created.
18313         * config.gcc: Add moxie support.
18314         * doc/md.texi (Machine Constraints): Add moxie constraints.
18315         * doc/contrib.texi (Contributors): Mention moxie port.
18316         * doc/install.texi (Specific): Mention the moxie port.
18317
18318 2009-06-09  Ian Lance Taylor  <iant@google.com>
18319
18320         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
18321         compiling with C++.
18322         * optabs.c (optab_table): Only use designated initializers if
18323         HAVE_DESIGNATED_INITIALIZERS is defined.
18324         (convert_optab_table): Likewise.
18325         (init_optabs): Always call init_insn_codes if
18326         HAVE_DESIGNATED_INITIALIZERS is not defined.
18327
18328 2009-06-09  Ian Lance Taylor  <iant@google.com>
18329
18330         * targhooks.c (default_builtin_vectorized_function): Change fn
18331         parameter to unsigned int.
18332         (default_builtin_vectorized_conversion): Change code parameter to
18333         unsigned int.
18334         (default_builtin_reciprocal): Change fn parameter to unsigned int.
18335         * targhooks.h: Update declarations.
18336         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
18337         parameter to unsigned int.
18338
18339         * c-typeck.c (comptypes_check_enum_int): New static function.
18340         (comptypes_internal): Add enum_and_int_p parameter.  Change all
18341         callers.
18342         (comp_target_types): Add location parameter.  Change all callers.
18343         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
18344         Change all callers.
18345         (function_types_compatible_p, type_lists_compatible_p): Likewise.
18346         (build_conditional_expr): Add colon_loc parameter.  Change all
18347         callers.
18348         (convert_for_assignment): Add location parameter.  Change all callers.
18349         * c-parser.c (c_parser_conditional_expression): Pass location of
18350         colon to build_conditional_expr.
18351         * c-tree.h (build_conditional_expr): Update declaration.
18352
18353 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
18354
18355         * graphite.c: Revert previous patch.
18356
18357 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
18358
18359         PR bootstrap/40103
18360         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
18361
18362 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
18363
18364         * tree-ssa-loop-prefetch.c
18365         (loop_prefetch_arrays): Fixed a portability problem in printf format
18366         string.
18367
18368 2009-06-09  Martin Jambor  <mjambor@suse.cz>
18369
18370         PR tree-optimization/40351
18371         * tree-sra.c (propagate_subacesses_accross_link): Check that a
18372         refrence to a potential artifical subaccess can be constructed.
18373
18374 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
18375
18376         * config/sh/sh-protos.h (sh_optimization_options): Declare.
18377         (sh_override_options): Likewise.
18378         * config/sh/sh.c: Include params.h.
18379         (sh_optimization_options): New.
18380         (sh_override_options): Likewise.
18381         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
18382         (OVERRIDE_OPTIONS): Use sh_override_options.
18383
18384 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
18385
18386         * dwarf2out.c (emit_cfa_remember): New variable.
18387         (add_fde_cfi): If emit_cfa_remember, recurse to add
18388         DW_CFA_remember_state first.
18389         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
18390         instead just set emit_cfa_remember.
18391
18392 2009-06-08  Jan Hubicka  <jh@suse.cz>
18393
18394         PR debug/40126
18395         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
18396
18397 2009-06-08  Jan Hubicka  <jh@suse.cz>
18398
18399         PR middle-end/39834
18400         * cgraphunit.c (save_inline_function_body): Do not copy transform
18401         hooks for saved inline bodies.
18402         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
18403         for given function.
18404
18405 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
18406
18407         * jump.c (returnjump_p): Handle delayed branches.  Add missing
18408         function comment.
18409
18410 2009-06-08  Jan Hubicka  <jh@suse.cz>
18411
18412         PR middle-end/40102
18413         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
18414         original node might've been modified.
18415         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
18416
18417 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
18418
18419         * tree-object-size.c (addr_object_size): Add OSI argument.
18420         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
18421         (compute_builtin_object_size, expr_object_size): Adjust callers.
18422         (plus_stmt_object_size): Call addr_object_size instead of
18423         compute_builtin_object_size.
18424
18425 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
18426             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
18427
18428         * tree-ssa-loop-prefetch.c
18429         (gather_memory_references): Introduced a counter for the number of
18430         memory references.
18431         (anything_to_prefetch_p): Introduced a counter for the number of
18432         prefetches.
18433         (is_loop_prefetching_profitable): New function with a cost model
18434         for prefetching.
18435         (loop_prefetch_arrays): Use the new cost model to determine if
18436         prefetching is profitable.
18437         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
18438         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18439         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
18440         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18441         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
18442         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18443
18444 2009-06-08  Michael Matz  <matz@suse.de>
18445
18446         PR debug/40012
18447         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
18448         partitions use the same.
18449         (expand_one_var): Deal with DECL_RTL sometimes begin set also
18450         for basevars of SSA_NAMEs.
18451         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
18452         to not expand them twice.
18453         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
18454         multiple places.
18455
18456 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
18457
18458         * common.opt (fcompare-debug=, fcompare-debug-second): New.
18459         (fdump-final-insns=, gtoggle): New.
18460         * doc/invoke.texi: Document them.
18461         * final.c (rest_of_clean_state): Dump final insn stream.
18462         * gcc.c (invoke_as): Hook in -fcompare-debug.
18463         (static_spec_functions): Add compare-debug-dump-opt,
18464         compare-debug-self-opt and compare-debug-auxbase-opt.
18465         (compare_debug, compare_debug_second, compare_debug_opt): New.
18466         (switches_debug_check, n_switches_debug_check): New.
18467         (debug_auxbase_opt, debug_check_temp_file): New.
18468         (process_command): Handle -fno-compare-debug, -fcompare-debug and
18469         -fcompare-debug=*.
18470         (do_self_spec): Handle arguments after switches.
18471         (do_spec_1): Add .gk extension to temp file basenames for compare.
18472         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
18473         (cc1_options): Use it instead of normal auxbase computation for
18474         the second compare-debug compilation.
18475         (compare_files): New.
18476         (main): Set up and implement compare debug mode.
18477         (compare_debug_dump_opt_spec_function): New.
18478         (compare_debug_self_opt_spec_function): New.
18479         (compare_debug_auxbase_opt_spec_function): New.
18480         * toplev.c (process_options): Handle flag_gtoggle,
18481         flag_dump_final_insns.
18482         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
18483         during -fcompare-debug-second compilation.
18484
18485 2009-06-07  Ian Lance Taylor  <iant@google.com>
18486
18487         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
18488         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
18489
18490         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
18491         with no default node.  Change warning with %H to warning_at.
18492         Don't clear warn_switch around case checking.
18493         * doc/invoke.texi (Warning Options): Clarify distinction between
18494         -Wswitch and -Wswitch-enum.
18495
18496 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18497
18498         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
18499
18500 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18501
18502         * gbl-ctors.h: Add header guard.
18503
18504 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18505
18506         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
18507         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
18508         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
18509         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
18510         prototypes for removed functions.
18511         (expressions_equal_p): Move to ...
18512         * tree-ssa-sccvn.h: ... here and ...
18513         * matrix-reorg.c: ... adjust includes.
18514
18515 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18516
18517         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
18518
18519 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18520
18521         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
18522         (finish_function): Remove erroneous whitespace.
18523
18524 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18525
18526         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
18527         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
18528
18529 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18530
18531         * errors.c (internal_error): Commentary typo fix.
18532         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
18533         * tree-ssa-pre.c: Ditto.
18534
18535 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
18536
18537         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
18538         them is supposed to hold actual statements.
18539
18540 2009-06-06  Ian Lance Taylor  <iant@google.com>
18541
18542         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
18543         empty statements can now have attributes.
18544
18545 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
18546
18547         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
18548         * config/mips/mips.md: Ditto.
18549
18550 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
18551
18552         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
18553         _RELOCATABLE.
18554         (__eabi_uconvert): Likewise.
18555
18556 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
18557
18558         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
18559         CFI_* definitions with IN_GCC.
18560
18561 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
18562
18563         * xcoffout.h (xcoffout_source_line): Update prototype.
18564
18565 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18566
18567         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
18568         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
18569
18570 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
18571
18572         PR middle-end/40340
18573         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
18574         inlined_function_outer_scope_p blocks for artificial inlines
18575         even at -g0/-g1.
18576         * tree.c (tree_nonartificial_location): Rewrite using
18577         block_nonartificial_location.
18578
18579 2009-06-05  Revital Eres  <eres@il.ibm.com>
18580             Leehod Baruch  <leehod@il.ibm.com>
18581
18582         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
18583         (expand_expr_real_1): Remove comment.
18584         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
18585         Vectorize misaligned access when the target supports it.
18586         (vect_supportable_dr_alignment): Check for unaligned access support.
18587         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
18588         and remove asset.
18589
18590 2009-06-05  Julian Brown  <julian@codesourcery.com>
18591
18592         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
18593         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
18594
18595 2009-06-05  Richard Guenther  <rguenther@suse.de>
18596
18597         PR bootstrap/40350
18598         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
18599         as possibly unused.
18600
18601 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
18602
18603         * config/s390/s390.c (global_not_special_regno_p): New static inline.
18604         (save_gprs): Don't tell unwinder when a global register is saved.
18605         (s390_emit_epilogue): Emit needed epilogue unwind info.
18606
18607 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
18608
18609         * dwarf2out.c (deferred_asm_name): New.
18610         (add_name_and_src_coords_attributes): Defer creation of
18611         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
18612         computed yet.
18613         (move_linkage_attr): New.
18614         (dwarf2out_finish): Revisit deferrals and emit attributes at the
18615         right place.
18616
18617 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
18618
18619         * tree-nested.c (finalize_nesting_tree_1): Declare the
18620         frame_decl in the binding tree.
18621
18622 2009-06-04  Cary Coutant  <ccoutant@google.com>
18623
18624         * basic-block.h (struct basic_block_def): Add discriminator field.
18625         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
18626         callers.
18627         * debug.c (do_nothing_debug_hooks): Add additional entry.
18628         (debug_nothing_int_charstar_int): New function.
18629         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
18630         (debug_nothing_int_charstar_int): New declaration.
18631         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
18632         discriminator value in .loc directive.
18633         * final.c (last_discriminator): New variable.
18634         (discriminator): New variable.
18635         (final_start_function): Initialize above variables, pass current
18636         discriminator to debug hook.
18637         (notice_source_line): Check for discriminator change.
18638         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
18639         * sdbout.c (sdbout_source_line): New parameter.
18640         * tree-cfg.c (struct locus_discrim_map): New structure type.
18641         (discriminator_per_locus): New hash table.
18642         (build_gimple_cfg): Allocate and free discriminator hash table.
18643         (make_edges): Call assign_discriminator.
18644         (locus_map_hash): New function.
18645         (locus_map_eq): New function.
18646         (next_discriminator_for_locus): New function.
18647         (same_line_p): New function.
18648         (assign_discriminator): New function.
18649         (make_cond_expr_edges): Call assign_discriminator.
18650         (make_gimple_switch_edges): Likewise.
18651         (first_non_label_stmt): New function.
18652         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
18653         all callers.
18654         * xcoffout.c (xcoffout_source_line): Add new parameter.
18655
18656         * configure.ac (gcc_cv_as_discriminator): New configury check for
18657         gas support for discriminator.
18658         * configure: Regenerate.
18659         * config.in: Regenerate.
18660
18661 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
18662
18663         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
18664         val after checking for integers.
18665
18666 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
18667
18668         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
18669         X64_REGPARM_MAX.
18670         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
18671         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
18672         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
18673         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
18674         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
18675         X64_SSE_REGPARM_MAX.
18676         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
18677         X64_SSE_REGPARM_MAX.
18678
18679 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
18680
18681         * gcc.c (report_times_to_file): New.
18682         (execute): Implement it.
18683         (process_command): Support -time=.
18684         * doc/invoke.texi: Document it.
18685
18686 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
18687
18688         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
18689         that have value exprs.
18690
18691 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
18692
18693         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
18694         declarations for constants until...
18695         (dw2_output_indirect_constant_1): ... this point.
18696
18697 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
18698
18699         PR target/10242
18700         * arm.md (arm_addsi3): Don't try to split an add with an
18701         eliminable register until after reload has completed.
18702
18703 2009-06-03  Ian Lance Taylor  <iant@google.com>
18704
18705         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
18706         * genattrtab.c (write_length_unit_log): Likewise.
18707         * genchecksum.c (dosum): Likewise.
18708         * gengtype.c (write_rtx_next): Likewise.
18709         (finish_root_table, write_roots): Likewise.
18710         * gimple.c (gimple_ops_offset_): Likewise.
18711         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
18712         * config/arc/arc.c (arc_attribute_table): Likewise.
18713         * config/arm/arm.c (arm_attribute_table): Likewise.
18714         * config/avr/avr.c (avr_attribute_table): Likewise.
18715         * config/crx/crx.c (crx_attribute_table): Likewise.
18716         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
18717         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
18718         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
18719         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
18720         * config/sh/sh.c (sh_attribute_table): Likewise.
18721         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
18722         * config/spu/spu.c (spu_attribute_table): Likewise.
18723         * config/v850/v850.c (v850_attribute_table): Likewise.
18724
18725         * config/alpha/alpha.c (vms_attribute_table): Make static.
18726         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
18727         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
18728         * config/mips/mips.c (mips_attribute_table): Likewise.
18729
18730         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
18731         $(SYSTEM_H).
18732         (cc1-checksum.o): Likewise.
18733
18734 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
18735
18736         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
18737
18738 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
18739
18740         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
18741         insn if it is changing sp.  Use gen_add3_insn instead of
18742         conditionally gen_addsi3 and gen_adddi3.
18743         (offset_below_red_zone_p): New static inline function.
18744         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
18745         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
18746         * config/rs6000/ppc-asm.h: Include auto-host.h.
18747         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
18748         CFI_RESTORE): Define.
18749         * config/rs6000/crtresxgpr.asm: Add unwind info.
18750         * config/rs6000/crtresxfpr.asm: Likewise.
18751         * config/rs6000/crtresgpr.asm: Likewise.
18752         * config/rs6000/crtresfpr.asm: Likewise.
18753         * config/rs6000/crtsavgpr.asm: Likewise.
18754         * config/rs6000/crtsavfpr.asm: Likewise.
18755
18756         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
18757         argument of DWARF2_FRAME_REG_OUT macros.
18758
18759 2009-06-03  Julian Brown  <julian@codesourcery.com>
18760
18761         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
18762         words or less (including TImode) in core registers.
18763
18764 2009-06-03  Richard Guenther  <rguenther@suse.de>
18765
18766         PR middle-end/40328
18767         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
18768
18769 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
18770
18771         * statistics.c (statistics_counter_event): Do not record event
18772         in pass dump if its number == -1.
18773         (curr_statistics_hash): Add assert that we never get passes
18774         with static number == -1.
18775
18776 2009-06-03  Richard Guenther  <rguenther@suse.de>
18777             Andrey Belevantsev  <abel@ispras.ru>
18778
18779         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
18780         non-BLKmode arrays addressable.
18781
18782 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
18783
18784         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
18785         * config/m68k/m68k.h: ... here.
18786
18787 2009-06-03  Martin Jambor  <mjambor@suse.cz>
18788
18789         PR tree-optimization/40323
18790         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
18791         assignment.
18792
18793 2009-06-03  Richard Guenther  <rguenther@suse.de>
18794
18795         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
18796         consistently.
18797
18798 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
18799
18800         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
18801         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
18802         JUMP_TABLE_DATA_P where applicable.
18803         * config/sh/sh.c: Ditto.
18804         * config/sh/sh.h: Ditto.
18805         * config/sh/sh.md: Ditto.
18806         * config/sh/symbian.c: Ditto.
18807
18808 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
18809
18810         * config/i386/driver-i386.c (describe_cache): Optimize
18811         concatenation of strings.  Use snprintf instead of sprintf.
18812         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
18813         target when not compiling with GCC.
18814
18815 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
18816
18817         * config/sh/sh.c: Revert last change.
18818         (sh_expand_epilogue): Emit a blockage insn before the frame
18819         pointer adjustment unconditionally.
18820
18821 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18822
18823         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
18824         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
18825         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
18826         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
18827         to COLLECT_GCC_OPTIONS.
18828
18829 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18830
18831         * collect2.c (target_system_root): New variable.
18832         (main): Handle --sysroot=.
18833         (ignore_library): Strip the sysroot from the library path.
18834
18835 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18836
18837         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
18838         (collect2.o): Depend on collect2-aix.h.
18839         (collect2-aix.o): New rule.
18840         * collect2-aix.h: New file.
18841         * collect2-aix.c: Likewise.
18842         * collect2.c: Include collect2-aix.h.  Don't undefine
18843         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
18844         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
18845         Use TARGET_AIX_VERSION instead of _AIX51.
18846         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
18847         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
18848         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
18849         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
18850         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
18851
18852 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18853
18854         * collect2.c (ignore_library): Avoid premature post-increment
18855         and null deference.
18856
18857 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18858
18859         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
18860         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
18861         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
18862         CROSS_DIRECTORY_STRUCTURE too.
18863         (LINK_LIBG_SPEC): Likewise.
18864         (LIB_SPEC): Add %R to sysroot paths.
18865         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
18866         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
18867         * config/rs6000/aix51.h: As for aix43.h.
18868         * config/rs6000/aix52.h: Likewise.
18869         * config/rs6000/aix53.h: Likewise.
18870         * config/rs6000/aix61.h: Likewise.
18871         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
18872         to the beginning of sysroot paths.
18873
18874 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18875
18876         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
18877         INSN_LISTs that are out of the REG_NOTE range.
18878
18879 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18880
18881         * loop-unroll.c (struct iv_to_split): Add pointer to next.
18882         (struct var_to_expand): Likewise.
18883         (struct opt_info): Add head and tail for linked lists of the above.
18884         (analyze_insn_to_expand_var): Initialize next.
18885         (analyze_iv_to_split_insn): Likewise.
18886         (analyze_insns_in_loop): Create linked lists.
18887         (allocate_basic_variable): Simplify for use without hash table.
18888         (insert_var_expansion_initialization): Likewise, make it type-safer.
18889         (combine_var_copies_in_loop_exit): Likewise.
18890         (apply_opt_in_copies): Walk lists rather than hash tables.
18891         (release_var_copies): Simplified and inlined by hand into...
18892         (free_opt_info): ... this function.
18893
18894 2009-06-02  Richard Guenther  <rguenther@suse.de>
18895
18896         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
18897         for field decls.
18898
18899 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18900
18901         * cfgexpand.c (gimple_expand_cfg): Discard the source location
18902         only for builtins that are not overridden.
18903
18904 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18905
18906         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
18907         label string.
18908
18909 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18910
18911         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
18912
18913 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18914
18915         * combine.c (move_deaths): Compare LUIDs within the same BB only.
18916
18917 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18918
18919         * common.opt (fdump-unnumbered-links): New.
18920         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
18921         * print-rtl.c (flag_dump_unnumbered_links): New.
18922         (print_rtx): Test it.
18923
18924 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
18925
18926         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
18927         push/pop multiple to 8-byte alignment.
18928
18929 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
18930
18931         * config/i386/i386.c (queued_cfa_restores): New static variable.
18932         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
18933         functions.
18934         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
18935         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
18936         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
18937         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
18938         note unconditionally.
18939         (ix86_emit_restore_regs_using_mov): Likewise.
18940         (ix86_emit_restore_sse_regs_using_mov): Likewise.
18941         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
18942         it through to ix86_emit_restore_reg_using_pop.
18943         (ix86_emit_leave): Add RED_OFFSET argument.  Call
18944         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
18945         instead of adding REG_CFA_OFFSET note unconditionally.
18946         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
18947         the above functions.  Call ix86_add_queued_cfa_restore_notes when
18948         needed.
18949
18950         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
18951         force output of the label even for dwarf2out_do_cfi_asm.
18952         (add_fde_cfi): If -g2 and above and cfi might change CFA,
18953         force creation of CFI label and chain DW_CFA_set_loc jumping to it
18954         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
18955         caller.
18956         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
18957         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
18958         dwarf2out_cfi_label callers.
18959         * tree.h (dwarf2out_cfi_label): Adjust prototype.
18960         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
18961         Adjust dwarf2out_cfi_label callers.
18962         * config/vax/vax.c (vax_output_function_prologue): Likewise.
18963
18964         * config/i386/i386.h (struct machine_cfa_state,
18965         struct machine_function): Guard with ifndef USED_FOR_TARGET
18966         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
18967
18968         PR other/40024
18969         * emutls.c (__emutls_get_address): Change arr->size to mean number
18970         of allocated arr->data entries instead of # of slots + 1.
18971
18972         PR middle-end/40316
18973         * recog.c (peep2_reinit_state): New function.
18974         (peephole2_init_state): Use it at the end of a basic block and also
18975         when seeing a RTX_FRAME_RELATED_P insn.
18976
18977 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
18978
18979         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
18980         fixuns_truncrfdi2): New.
18981         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
18982         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
18983         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
18984         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
18985         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
18986         *recip_approx): Remove.
18987         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
18988         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
18989         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
18990         move to div.md.
18991         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
18992         setf_exp_rf): New.
18993
18994 2009-06-01  Ian Lance Taylor  <iant@google.com>
18995
18996         * attribs.c (register_attribute): Use CONST_CAST.
18997         * collect2.c (main): Use CONST_CAST2.
18998         (scan_prog_file): Likewise.
18999         * gcc.c (process_command, main): Likewise.
19000         * toplev.c (toplev_main): Likewise.
19001
19002         * c-typeck.c (handle_warn_cast_qual): New static function,
19003         partially broken out of build_c_cast.
19004         (build_c_cast): Call handle_warn_cast_qual.
19005         * doc/invoke.texi (Warning Options): Document new effect of
19006         -Wcast-qual.
19007
19008 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
19009
19010         * diagnostic.c (diagnostic_build_prefix): Always print columns.
19011         (diagnostic_report_current_module): Print columns.
19012         * common.opt (flag_show_column): Enable by default.
19013
19014 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
19015
19016         * alias.c (find_base_term): Check for NULL term before returning.
19017
19018 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19019
19020         Revert due to PR40320:
19021         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19022         * calls.c (emit_library_call_value_1): Don't force_operand for move
19023         and push insns.
19024
19025 2009-06-01  Olivier Hainque  <hainque@adacore.com>
19026             Eric Botcazou  <ebotcazou@adacore.com>
19027
19028         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
19029         to be processed as a bitfield for constructor output purposes.
19030         * output.h (initializer_constant_valid_for_bitfield_p): Declare
19031         new function.
19032         * varasm.c (oc_local_state): New type, output_constructor
19033         local state to support communication with helpers.
19034         (oc_outer_state): New type, output_constructor outer state of
19035         relevance in recursive calls.
19036         (output_constructor_array_range): New output_constructor helper,
19037         extracted code for an array range element.
19038         (output_constructor_regular_field): New output_constructor helper,
19039         extracted code for an element that is not a bitfield.
19040         (output_constructor_bitfield): New output_constructor helper,
19041         extracted code for a bitfield element.  Accept an OUTER state
19042         argument for recursive processing.  Recurse on record or array
19043         CONSTRUCTOR values, possibly past noop conversions.
19044         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
19045         VALUE is a valid constant-valued expression for use in a static
19046         bit-field initializer.
19047         (output_constructor): Rework to use helpers.  Accept and honor an
19048         OUTER state argument for recursive calls.  Return total size.  Be
19049         prepared for nested constructors initializing bitfields.
19050         (output_constant): Feed OUTER in calls to output_constructor.
19051
19052 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19053
19054         * calls.c (emit_library_call_value_1): Don't force_operand for move
19055         and push insns.
19056
19057 2009-06-01  Nick Clifton  <nickc@redhat.com>
19058
19059         * doc/invoke.texi (IA-64 Options): Fix typo.
19060
19061 2009-06-01  Ira Rosen  <irar@il.ibm.com>
19062
19063         PR tree-optimization/39129
19064         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
19065         printed message.
19066         (vect_do_peeling_for_loop_bound): Use
19067         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
19068         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
19069         (vect_loop_versioning): Likewise.
19070         (vect_create_cond_for_alias_checks): Fix indentation.
19071         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
19072         macros.
19073         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
19074         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
19075         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
19076         "control flow in loop".
19077         (vect_estimate_min_profitable_iters): Use
19078         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
19079         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
19080         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
19081         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
19082         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
19083         statement belongs to a group of strided accesses with the exact code
19084         check.
19085         (vectorizable_load): Likewise.
19086         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
19087         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
19088
19089 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
19090
19091         * config/freebsd-stdint.h: New file.
19092         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
19093         Add freebsd-stdint.h to tm_file.
19094
19095 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
19096
19097         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
19098         (thumb2_extendhidi2): Likewise.
19099
19100 2009-05-31  Ian Lance Taylor  <iant@google.com>
19101
19102         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
19103
19104 2009-05-31  Ian Lance Taylor  <iant@google.com>
19105
19106         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
19107         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
19108         (ipa-reference.o): Depend upon gt-ipa-reference.h.
19109
19110 2009-05-31  Jason Merrill  <jason@redhat.com>
19111
19112         * tree-pretty-print.c (print_call_name): Take the callee, not the
19113         call itself.  Make non-static.  Use dump_function_name for functions.
19114         (dump_generic_node): Adjust.
19115         * diagnostic.h: Declare print_call_name.
19116         * gimple-pretty-print.c (dump_gimple_call): Use it.
19117
19118 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
19119
19120         * config/sh/sh.md (ashldi3_std): New define_expand.
19121         (ashldi3): Use it.
19122
19123 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
19124
19125         PR target/40313
19126         * config/sh/sh.c: Include debug.h.
19127         (sh_expand_epilogue): Emit a blockage insn before the frame
19128         pointer adjustment also when dwarf2out_do_frame returns true.
19129
19130 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
19131
19132         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
19133         (thumb2_extendqidi2): New pattern.
19134
19135 2009-05-31  Ira Rosen  <irar@il.ibm.com>
19136
19137         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
19138         mark phis for renaming.
19139         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
19140         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
19141         Call mark_sym_for_renaming.
19142         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
19143         * tree-vect-loop.c (vect_transform_loop): Remove
19144         vect_memsyms_to_rename initialization and a call to
19145         mark_set_for_renaming.
19146
19147 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
19148
19149         PR middle-end/40304
19150         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
19151         frame related even if !set_cfa && style < 0.
19152
19153 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
19154
19155         * config/i386/mingw-tls.c: New file.
19156         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
19157         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
19158         defining _WIN32 but not __CYGWIN__.
19159
19160 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19161
19162         * configure.ac: Add MPC support.
19163
19164         * config.in, configure: Regenerate.
19165
19166 2009-05-29  Richard Henderson  <rth@redhat.com>
19167
19168         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
19169         NOTE_INSN_BASIC_BLOCK.
19170         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
19171         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
19172         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
19173         to be deleted.
19174         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
19175         add in_use field.
19176         (add_cfi): Disable check redefining cfa away from drap.
19177         (lookup_cfa_1): Add remember argument; handle remember/restore.
19178         (lookup_cfa): Pass remember argument.
19179         (cfa_remember): New.
19180         (compute_barrier_args_size_1): Remove sibcall check.
19181         (dwarf2out_frame_debug_def_cfa): New.
19182         (dwarf2out_frame_debug_adjust_cfa): New.
19183         (dwarf2out_frame_debug_cfa_offset): New.
19184         (dwarf2out_frame_debug_cfa_register): New.
19185         (dwarf2out_frame_debug_cfa_restore): New.
19186         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
19187         (dwarf2out_begin_epilogue): New.
19188         (dwarf2out_frame_debug_restore_state): New.
19189         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
19190         DW_CFA_restore_state.
19191         (output_cfi_directive): Likewise.
19192         (convert_cfa_to_fb_loc_list): Likewise.
19193         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
19194         * dwarf2out.h: Update.
19195         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
19196         (copy_insn_1): Early out for null.
19197         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
19198         and dwarf2out_frame_debug_restore_state.
19199         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
19200         (prologue_insn_hash, epilogue_insn_hash): New.
19201         (free_after_compilation): Adjust freeing accordingly.
19202         (record_insns): Create hash table if needed; push insns into
19203         hash instead of array.
19204         (maybe_copy_epilogue_insn): New.
19205         (contains): Search hash table instead of array.
19206         (sibcall_epilogue_contains): Remove.
19207         (thread_prologue_and_epilogue_insns): Split eh_return insns
19208         and mark them as epilogues.
19209         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
19210         scanning in terms of basic blocks.
19211         * insn-notes.def (CFA_RESTORE_STATE): New.
19212         * jump.c (returnjump_p_1): Accept EH_RETURN.
19213         (eh_returnjump_p_1, eh_returnjump_p): New.
19214         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
19215         CFA_REGISTER, CFA_RESTORE): New.
19216         * rtl.def (EH_RETURN): New.
19217         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
19218
19219         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
19220         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
19221
19222         * config/i386/i386.c (gen_push): Update cfa state.
19223         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
19224         add a CFA_ADJUST_CFA note.
19225         (ix86_dwarf_handle_frame_unspec): Remove.
19226         (ix86_expand_prologue): Update cfa state.
19227         (ix86_emit_restore_reg_using_pop): New.
19228         (ix86_emit_restore_regs_using_pop): New.
19229         (ix86_emit_leave): New.
19230         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
19231         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
19232         * config/i386/i386.h (struct machine_cfa_state): New.
19233         (ix86_cfa_state): New.
19234         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
19235         (eh_return_internal): Merge from eh_return_<mode>,
19236         use eh_return rtx, split w/ epilogue.
19237
19238 2009-05-29  Ian Lance Taylor  <iant@google.com>
19239
19240         * builtins.c (validate_gimple_arglist): Don't use va_arg with
19241         enum type.
19242         * calls.c (emit_library_call_value_1): Likewise.
19243
19244         * c-typeck.c (c_build_va_arg): New function.
19245         * c-tree.h (c_build_va_arg): Declare.
19246         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
19247         instead of build_va_arg.
19248
19249 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
19250
19251         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
19252         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
19253         (ptr_difference_cost): Use affine combinations to compute it.
19254         (difference_cost): Likewise.
19255         (get_computation_cost_at): Compute more accurate cost for addresses
19256         if the ratio is a multiplier allowed in addresses.
19257         For non-addresses, consider that an additional offset or symbol is
19258         added only once.
19259
19260 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19261
19262         * config/i386/i386.c (ix86_decompose_address): Avoid useless
19263         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
19264
19265         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
19266         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
19267         (prefix_rex): For UNIT_MMX don't imply the prefix by default
19268         if MODE_DI.
19269         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
19270         to 1 for TYPE_SSE{IADD1,CVT1}.
19271         (prefix_vex_imm8): Removed.
19272         (length_vex): Only pass 1 as second argument to
19273         ix86_attr_length_vex_default if prefix_extra is 0.
19274         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
19275         (length): For prefix vex computation use length_immediate
19276         attribute instead of prefix_vex_imm8.
19277         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
19278         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
19279         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
19280         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
19281         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
19282         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
19283         a space in between the operands.
19284         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
19285         if one operand is 0xff and the other one si, di, bp or sp.
19286         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
19287         other one si, di, bp or sp.
19288         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
19289         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
19290         type and mode attributes.
19291         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
19292         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
19293         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
19294         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
19295         prefix_data16 attribute iff MODE_DF.
19296         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
19297         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
19298         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
19299         constm128_operand in length_immediate computation.
19300         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
19301         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
19302         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
19303         length_immediate attribute to 1.
19304         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
19305         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
19306         for certain alternatives.
19307         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
19308         prefix_data16 attribute if MODE_V1DF.
19309         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
19310         length_immediate to 1.
19311         (set_got_rex64, set_rip_rex64): Remove length attribute, set
19312         length_address to 4, set mode attribute to MODE_DI.
19313         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
19314         (fxam<mode>2_i387): Set length attribute to 4.
19315         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
19316         *prefetch_3dnow_rex): Override length_address attribute.
19317         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
19318         attributes.
19319         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
19320         (constm128_operand): Removed.
19321         * config/i386/i386.c (memory_address_length): For
19322         disp && !index && !base in 64-bit mode account for SIB byte if
19323         print_operand_address can't optimize disp32 into disp32(%rip)
19324         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
19325         for fs: or gs: segment.
19326         (ix86_attr_length_immediate_default): When checking if shortform
19327         is possible, truncate immediate to the length of the non-shortened
19328         immediate.
19329         (ix86_attr_length_address_default): Ignore MEM_P operands
19330         with X constraint.
19331         (ix86_attr_length_vex_default): Only check for DImode on
19332         GENERAL_REG_P operands.
19333         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
19334         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
19335         (sse_cvttps2pi): Clear prefix_rep attribute.
19336         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
19337         attribute.
19338         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
19339         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
19340         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
19341         iff operand 2 is const_int_operand.
19342         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
19343         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
19344         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
19345         instead of vex.
19346         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
19347         prefix_data16.
19348         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
19349         prefix_data16 attribute for movlpd and movhpd instructions.
19350         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
19351         length_immediate for shufpd instruction.
19352         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
19353         (avx_cmpp<avxmodesuffixf2c><mode>3,
19354         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
19355         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
19356         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
19357         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
19358         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
19359         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
19360         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
19361         prefix_data16 attribute for the first alternative to 1.
19362         (*avx_loadlps): Override length_immediate for the first alternative.
19363         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
19364         attributes for second alternative.
19365         (*vec_concatv2sf_sse4_1): Override length_immediate and
19366         prefix_data16 attributes for second alternative.
19367         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
19368         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
19369         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
19370         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
19371         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
19372         prefix_data16 and length_immediate to 1.
19373         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
19374         to 1.
19375         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
19376         prefix_extra attribute for variants that don't have 0f prefix alone.
19377         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
19378         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
19379         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
19380         *sse4_1_pextrd): Set length_immediate to 1.
19381         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
19382         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
19383         to 1.
19384         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
19385         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
19386         length_immediate to 1 for second alternative.
19387         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
19388         prefix_extra and length_immediate attributes for the first
19389         alternative.
19390         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
19391         first alternative.
19392         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
19393         to 1 for the first and third alternative.
19394         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
19395         alternative.
19396         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
19397         attribute.
19398         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
19399         attribute to 0.
19400         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
19401         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
19402         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
19403         *avx_psign<mode>3): Set prefix_extra attribute to 1.
19404         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
19405         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
19406         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
19407         ssse3_psign<mode>3): Override prefix_rex attribute.
19408         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
19409         (ssse3_palignrti): Override length_immediate to 1.
19410         (ssse3_palignrdi): Override length_immediate to 1, override
19411         prefix_rex attribute.
19412         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
19413         (sse4a_extrqi): Override length_immediate to 2.
19414         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
19415         (sse4a_insertq): Override prefix_data16 to 0.
19416         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
19417         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
19418         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
19419         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
19420         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
19421         and length_immediate to 1.
19422         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
19423         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
19424         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
19425         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
19426         and length_immediate to 1.
19427         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
19428         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
19429         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
19430         avx_ptest256): Override prefix_extra to 1.
19431         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
19432         Override prefix_data16 and length_immediate to 1.
19433         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
19434         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
19435         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
19436         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
19437         prefix_data16 to 0 and prefix_extra to 2.
19438         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
19439         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
19440         attribute.
19441         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
19442         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
19443         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
19444         and prefix_extra to 2.
19445         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
19446         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
19447         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
19448         avx_vpermilvar<mode>3,
19449         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
19450         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
19451         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
19452         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
19453         Override prefix_extra to 1.
19454         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
19455         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
19456         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
19457         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
19458         prefix_extra and length_immediate to 1.
19459         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
19460         modrm to 0.
19461         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
19462         to 1 for the first alternative.
19463         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
19464         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
19465         cases.
19466         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
19467         *movv2sf_internal_avx, *movv2sf_internal): Override
19468         prefix_rep attribute for certain alternatives.
19469         (*mov<mode>_internal): Override prefix_rep or prefix_data16
19470         attributes for certain alternatives.
19471         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
19472         attributes for certain alternatives.
19473         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
19474         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
19475         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
19476         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
19477         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
19478         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
19479         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
19480         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
19481         length_immediate to 1 if operand 2 is const_int_operand.
19482         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
19483         *vec_extractv2si_1): Set length_immediate attribute to 1.
19484         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
19485         using old 3DNOW insn rather than SSE/3DNOW_A.
19486         (mmx_emms, mmx_femms): Clear modrm attribute.
19487
19488 2009-05-29  Martin Jambor  <mjambor@suse.cz>
19489
19490         * tree-sra.c:  New implementation of SRA.
19491
19492         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
19493         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
19494         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
19495         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
19496         (SRA_MAX_STRUCTURE_COUNT): Removed.
19497         (SRA_FIELD_STRUCTURE_RATIO): Removed.
19498         * doc/invoke.texi (sra-max-structure-size): Removed.
19499         (sra-field-structure-ratio): Removed.
19500
19501 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19502
19503         PR middle-end/40291
19504         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
19505         before expansion.
19506
19507 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
19508
19509         PR rtl-optimization/40101
19510         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
19511         seqno.  Adjust comment.
19512         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
19513         inserting bookkeeping before a jump, the jump is not scheduled.
19514         When no positive seqno found, provide a value.  Add comment.
19515
19516 2009-05-29  Richard Guenther  <rguenther@suse.de>
19517
19518         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
19519         short-cutting on the first component.
19520
19521 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19522
19523         PR middle-end/39958
19524         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
19525         for trees other than decls/types.
19526
19527 2009-05-29  Richard Guenther  <rguenther@suse.de>
19528
19529         * tree-ssa-operands.c (get_expr_operands): Do not handle
19530         INDIRECT_REFs in the handled-component case.  Remove
19531         unused get_ref_base_and_extent case.
19532         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
19533         tree_low_cst and host_integerp where possible.
19534         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
19535         codes for equivalence.
19536         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
19537
19538 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
19539
19540         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
19541         to tmake_file for i[34567]86-*-cygwin*.
19542
19543 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19544
19545         PR target/40017
19546         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
19547         (altivec_categorize_keyword, init_vector_keywords,
19548         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
19549         similar to bool.
19550
19551 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
19552
19553         * tree.c (handle_dll_attribute): Check if node is
19554         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
19555
19556 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
19557
19558         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
19559         component.
19560         (thumb2_zero_extendqidi2): Likewise.
19561
19562 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
19563
19564         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
19565         instead of gen_movrt.
19566         * config/sh/sh.md (movrt): Remove.
19567
19568 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
19569
19570         * doc/invoke.texi (IA-64 Options):
19571         Add -msdata, -mfused-madd, -mno-inline-float-divide,
19572         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
19573         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
19574         -msched-prefer-non-control-spec-insns,
19575         -msched-stop-bits-after-every-cycle,
19576         -msched-count-spec-in-critical-path,
19577         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
19578         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
19579         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
19580         and -msched-spec-verbose.
19581
19582 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
19583
19584         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
19585         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
19586         error if used.
19587         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
19588
19589 2009-05-28  Richard Guenther  <rguenther@suse.de>
19590
19591         * tree-ssa-alias.c (ao_ref_init): New function.
19592         (ao_ref_base): Likewise.
19593         (ao_ref_base_alias_set): Likewise.
19594         (ao_ref_alias_set): Likewise.
19595         (refs_may_alias_p_1): Change signature.
19596         (refs_may_alias_p): Adjust.
19597         (refs_anti_dependent_p): Likewise.
19598         (refs_output_dependent_p): Likewise.
19599         (call_may_clobber_ref_p_1): Change signature.
19600         (call_may_clobber_ref_p): Adjust.
19601         (stmt_may_clobber_ref_p_1): New function split out from ...
19602         (stmt_may_clobber_ref_p): ... here.
19603         (maybe_skip_until): Adjust signature.
19604         (get_continuation_for_phi): Likewise.
19605         (walk_non_aliased_vuses): Likewise.
19606         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
19607         (ao_ref_init): Declare.
19608         (ao_ref_base): Likewise.
19609         (ao_ref_alias_set): Likewise.
19610         (stmt_may_clobber_ref_p_1): Likewise.
19611         (walk_non_aliased_vuses): Adjust.
19612         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
19613         (get_ref_from_reference_ops): remove.
19614         (vn_reference_lookup_2): Adjust signature.
19615         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
19616         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
19617         (vn_reference_lookup): Adjust.
19618         (vn_reference_insert): Likewise.
19619         (vn_reference_insert_pieces): Adjust signature.
19620         (visit_reference_op_call): Adjust.
19621         * tree-ssa-pre.c (get_expr_type): Simplify.
19622         (phi_translate_1): Adjust.
19623         (compute_avail): Likewise.
19624         (translate_vuse_through_block): Do not re-build trees.
19625         (value_dies_in_block_x): Likewise.
19626         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
19627         fields.
19628         (vn_reference_lookup_pieces): Adjust declaration.
19629         (vn_reference_insert_pieces): Likewise.
19630
19631 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
19632
19633         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
19634         with checking disabled.
19635
19636 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
19637
19638         PR target/37216
19639
19640         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
19641         macro definition for support of three-operand format aligned
19642         .comm directive in assembler on cygwin/pe/mingw target OS.
19643         * configure:  Regenerate.
19644         * config.h:  Regenerate.
19645
19646         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
19647         aligned form of .comm directive if -mpe-aligned-commons is in effect.
19648         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
19649
19650         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
19651         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
19652
19653 2009-05-28  Ira Rosen  <irar@il.ibm.com>
19654
19655         PR tree-optimization/40254
19656         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
19657         in analysis of basic blocks.
19658
19659 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
19660
19661         PR middle-end/33699
19662         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
19663         * target-def.h (TARGET_CONST_ANCHOR): New macro.
19664         (TARGET_INITIALIZER): Use it.
19665         * cse.c (CHEAPER): Move it up to the other macros.
19666         (insert): Rename this ...
19667         (insert_with_costs): ... to this.  Add cost parameters.  Update
19668         function comment.
19669         (insert): New function.  Call insert_with_costs.
19670         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
19671         find_reg_offset_for_const, try_const_anchors): New functions.
19672         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
19673         when using a const-anchor.  Call insert_const_anchors.
19674         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
19675         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
19676
19677 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
19678
19679         * tree-inline.c (remap_decls): Enable nonlocalized variables
19680         when not optimizing.
19681
19682 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
19683
19684         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
19685         Simplify other tests involving optimize.
19686
19687 2009-05-27  Tom Tromey  <tromey@redhat.com>
19688
19689         * unwind-dw2.c (_Unwind_DebugHook): New function.
19690         (uw_install_context): Call _Unwind_DebugHook.
19691
19692 2009-05-27  Tom Tromey  <tromey@redhat.com>
19693
19694         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
19695
19696 2009-05-27  Ian Lance Taylor  <iant@google.com>
19697
19698         * Makefile.in (LINKER, LINKER_FLAGS): Define.
19699         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
19700         (ALL_LINKERFLAGS): Define.
19701         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
19702         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
19703         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
19704         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
19705         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
19706         $(LINKER_FOR_BUILD).
19707         (build/gcov-iov$(build_exeext)): Likewise.
19708
19709 2009-05-27  Julian Brown  <julian@codesourcery.com>
19710
19711         * gcse.c (target.h): Include.
19712         (can_assign_to_reg_without_clobbers_p): Check that the target allows
19713         copy of argument to a pseudo register.
19714
19715 2009-05-27  Diego Novillo  <dnovillo@google.com>
19716
19717         * tree-ssa-live.c (dump_scope_block): Document arguments.
19718         (dump_scope_blocks): Document.
19719         (debug_scope_blocks): New.
19720         * tree-flow.h (debug_scope_blocks): Declare.
19721
19722 2009-05-21  Denis Chertykov  <denisc@overta.ru>
19723
19724         * doc/contrib.texi (Contributors): Add myself to the list.
19725
19726 2009-05-27  Olivier Hainque  <hainque@adacore.com>
19727
19728         * expr.c (target_align): New function.  Alignment the TARGET of an
19729         assignment may be assume to have.
19730         (highest_pow2_factor_for_target): Use it instead of relying on
19731         immediate tree attributes of TARGET, not necessarily honored when
19732         intermediate bitfields are involved.
19733
19734 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
19735
19736         PR target/40266
19737         * config/i386/driver-i386.c (host_detect_local_cpu): Support
19738         AVX, SSE4, AES, PCLMUL and POPCNT.
19739
19740 2009-05-27  Diego Novillo  <dnovillo@google.com>
19741
19742         * tree-pretty-print.c (dump_location): New.
19743         (dump_generic_node): Call it.
19744         Factor code to handle BLOCK nodes ...
19745         (dump_block_node): ... here.
19746
19747 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
19748
19749         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
19750         with it.
19751         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
19752         included.
19753         * gcc-plugin.h: Include config.h and system.h.
19754         (IN_GCC): Define if not defined.
19755
19756 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
19757
19758         PR middle-end/40249
19759         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
19760         with -fno-inline.
19761
19762 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
19763
19764         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
19765         applicable.
19766         * config/m32r/m32r.h: Ditto.
19767         * config/m32r/m32r.md: Ditto.
19768         * config/m32r/predicates.md: Ditto.
19769
19770 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
19771
19772         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
19773
19774 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
19775
19776         * doc/plugins.texi
19777         (Loading plugins): typo.
19778         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
19779         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
19780         (Interacting with the GCC Garbage Collector): Added new section.
19781         (Giving information about a plugin): Added new section for
19782         PLUGIN_INFO.
19783         * ggc.h (ggc_register_root_tab): Added declaration.
19784         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
19785         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
19786         (register_callback): Improved comment in declaration.
19787         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
19788         (extra_root_vec) Added static variable for dynamic roots registration.
19789         (ggc_register_root_tab) Added new routine.
19790         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
19791         PLUGIN_GGC_MARKING event.
19792         * ggc-zone.c: Include plugin.h.
19793         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
19794         * ggc-page.c: Include plugin.h.
19795         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
19796         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
19797         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
19798         (register_callback): check lack of callbacks for
19799         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
19800         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
19801         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
19802         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
19803         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
19804         dependency on plugin.h.
19805         (plugin.o): Added dependency on ggc.h...
19806
19807 2009-05-26  Richard Guenther  <rguenther@suse.de>
19808
19809         PR middle-end/40248
19810         Revert
19811         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
19812         with mismatched comparison modes.
19813
19814         * expr.c (expand_expr_real_1): Expand the operand of a
19815         VIEW_CONVERT_EXPR in its natural mode.
19816
19817 2009-05-26  Ian Lance Taylor  <iant@google.com>
19818
19819         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
19820         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
19821         (ALL_COMPILERFLAGS): Define.
19822         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
19823         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
19824         (collect2$(exeext), collect2.o): Likewise.
19825         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
19826         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
19827         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
19828         (libbackend.o, intl.o, cppdefault.o): Likewise.
19829         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
19830         (build/%.o): Use $(COMPILER_FOR_BUILD).
19831         (build/gen%$(build_exeext)): Likewise.
19832         (build/gcov-iov$(build_exeext)): LIkewise.
19833         * config/t-darwin (darwin.o): Use $(COMPILER).
19834         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
19835         * config/t-sol2 (sol2-c.o): Likewise.
19836         (sol2.o): Likewise.
19837         * config/t-vxworks (vxworks.o): Likewise.
19838         * config/x-darwin (host-darwin.o): Likewise.
19839         * config/x-hpux (host-hpux.o): Likewise.
19840         * config/x-linux (host-linux.o): Likewise.
19841         * config/x-solaris (host-solaris.o): Likewise.
19842         * config/alpha/x-alpha (driver-alpha.o): Likewise.
19843         * config/arm/t-arm (arm-c.o): Likewise.
19844         * config/arm/t-pe (pe.o): Likewise.
19845         * config/arm/t-wince-pe (pe.o): Likewise.
19846         * config/i386/t-cygming (winnt.o): Likewise.
19847         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
19848         * config/i386/t-cygwin (cygwin1.o): Likewise.
19849         (cygwin2.o): Likewise.
19850         * config/i386/t-i386 (i386-c.o): Likewise.
19851         * config/i386/t-interix (winnt.o): Likewise.
19852         * config/i386/t-netware (netware.o): Likewise.
19853         * config/i386/t-nwld (nwld.o): Likewise.
19854         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
19855         * config/i386/x-i386 (driver-i386.o): Likewise.
19856         * config/i386/x-cygwin (host-cygwin.o): Likewise.
19857         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
19858         * config/ia64/t-ia64 (ia64-c.o): Likewise.
19859         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
19860         * config/mips/x-native (driver-native.o): Likewise.
19861         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
19862         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
19863         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
19864         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
19865         * config/score/t-score-elf (score7.o): Likewise.
19866         (score3.o): Likewise.
19867         * config/sh/t-sh (sh-c.o): Likewise.
19868         * config/sh/t-symbian (sh-c.o): Likewise.
19869         (symbian.o): Likewise.
19870         * config/spu/t-spu-elf (spu-c.o): Likewise.
19871         * config/v850/t-v850 (v850-c.o): Likewise.
19872         * config/v850/t-v850e (v850-c.o): Likewise.
19873
19874 2009-05-26  Richard Guenther  <rguenther@suse.de>
19875
19876         PR tree-optimization/40122
19877         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
19878         VECTOR_CSTs if possible.
19879         (fold_gimple_assign): Likewise.
19880
19881 2009-05-26  Richard Guenther  <rguenther@suse.de>
19882
19883         PR middle-end/40252
19884         * fold-const.c (fold_binary): Use the correct types for building
19885         rotates.
19886
19887 2009-05-26  Richard Guenther  <rguenther@suse.de>
19888
19889         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
19890         redundant calls to merge_alias_info.
19891         (bump_vector_ptr): Likewise.
19892         * tree-ssa-copy.c (merge_alias_info): Remove.
19893         (replace_exp_1): Remove call to merge_alias_info.
19894         (propagate_tree_value): Likewise.
19895         (fini_copy_prop): Propagate points-to info.
19896         * tree-flow.h (merge_alias_info): Remove.
19897
19898 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
19899
19900         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
19901
19902 2009-05-25  Jan Hubicka  <jh@suse.cz>
19903
19904         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
19905         * cgraph.h (struct inline_summary): New filed self_wize,
19906         size_inlining_benefit, self_time and time_inlining_benefit.
19907         (struct cgraph_global_info): Replace insns by time ans size fields.
19908         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
19909         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
19910         (ipcp_update_callgraph): Do not touch function bodies.
19911         * ipa-inline.c: Include except.h
19912         (MAX_TIME): New constant.
19913         (overall_insns): Remove.
19914         (leaf_node_p): New.
19915         (overall_size, max_benefit): New static variables.
19916         (cgraph_estimate_time_after_inlining): New function.
19917         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
19918         (cgraph_clone_inlined_nodes): Update size.
19919         (cgraph_mark_inline_edge): Update size.
19920         (cgraph_estimate_growth): Use size info.
19921         (cgraph_check_inline_limits): Check size.
19922         (cgraph_default_inline_p): Likewise.
19923         (cgraph_edge_badness): Compute badness based on benefit and size cost.
19924         (cgraph_decide_recursive_inlining): Check size.
19925         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
19926         and times.
19927         (cgraph_decide_inlining): Likewise.
19928         (cgraph_decide_inlining_incrementally): Likewise; honor
19929         PARAM_EARLY_INLINING_INSNS.
19930         (likely_eliminated_by_inlining_p): New predicate.
19931         (estimate_function_body_sizes): New function.
19932         (compute_inline_parameters): Use it.
19933         * except.c (must_not_throw_labels): New function.
19934         * except.h (must_not_throw_labels): Declare.
19935         * tree-inline.c (init_inline_once): Kill inlining_weigths
19936         * tree-ssa-structalias.c: Avoid uninitialized warning.
19937         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
19938         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
19939         (PARAM_INLINE_CALL_COST): Remove.
19940         (PARAM_EARLY_INLINING_INSNS): New.
19941
19942 2009-05-25  Richard Guenther  <rguenther@suse.de>
19943
19944         PR tree-optimization/36327
19945         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
19946         callback for reference translation or lookup at the point of may-defs.
19947         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
19948         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
19949         for union COMPONENT_REFs.
19950         (vn_reference_lookup_3): New callback.  Lookup from memset
19951         and CONSTRUCTOR assignment, translate through struct copies.
19952         (vn_reference_lookup_pieces): Make sure to not free the
19953         passed operands array.  Adjust walk_non_aliased_vuses call.
19954         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
19955         make sure we do not leak memory.
19956
19957 2009-05-25  Richard Guenther  <rguenther@suse.de>
19958
19959         * tree-ssa-alias.h (dump_points_to_solution): Declare.
19960         * tree-inline.c (expand_call_inline): Reset the escaped and
19961         callused solutions.
19962         * tree-ssa-structalias.c (pass_build_ealias): New.
19963         * tree-pass.h (pass_build_ealias): Declare.
19964         * passes.c (init_optimization_passes): Add PTA during
19965         early optimizations.
19966         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
19967         and CALLUSED solutions.
19968         (dump_points_to_solution): New function, split out from ...
19969         (dump_points_to_info_for): ... here.
19970         * tree-parloops.c (parallelize_loops): Reset the escaped and
19971         callused solutions.
19972
19973 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
19974
19975         PR bootstrap/40027
19976         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
19977         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
19978
19979 2009-05-25  Ira Rosen  <irar@il.ibm.com>
19980
19981         PR tree-optimization/40238
19982         * tree-vect-stmts.c (vect_init_vector): Insert initialization
19983         statements after basic block's labels.
19984         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
19985         to free the allocated memory.
19986
19987 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
19988
19989         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
19990         return address with a USE.
19991
19992 2009-05-24  Richard Guenther  <rguenther@suse.de>
19993
19994         PR middle-end/40233
19995         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
19996         array type from the main variant of the inner type.
19997
19998 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
19999
20000         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
20001         definition to bool (from int) to un-break build.
20002         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
20003
20004 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
20005
20006         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
20007         discard_stmt_changes): Delete.
20008         * tree-ssa-operands.c (scb_stack): Delete.
20009         (init_ssa_operands): Do not initialize it.
20010         (fini_ssa_operands): Do not free it.
20011         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
20012
20013         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
20014         update_stmt, remove the others.  Fix comments.
20015         * tree-dfa.c (optimize_stack_restore): Likewise.
20016         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
20017         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
20018         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
20019         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
20020         Likewise.
20021         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
20022         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
20023         (dom_opt_finalize_block): Likewise, adjusting access to
20024         stmts_to_rescan.
20025         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
20026         (stmts_to_rescan): Change item type to gimple.
20027         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
20028
20029 2009-05-24  Ira Rosen  <irar@il.ibm.com>
20030
20031         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
20032         * tree-pass.h (pass_slp_vectorize): New pass.
20033         * params.h (SLP_MAX_INSNS_IN_BB): Define.
20034         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
20035         * tree-vectorizer.c (timevar.h): Include.
20036         (user_vect_verbosity_level): Declare.
20037         (vect_location): Fix comment.
20038         (vect_set_verbosity_level): Update user_vect_verbosity_level
20039         instead of vect_verbosity_level.
20040         (vect_set_dump_settings): Add an argument. Ignore user defined
20041         verbosity if dump flags require higher level of verbosity. Print to
20042         stderr only for loop vectorization.
20043         (vectorize_loops): Update call to vect_set_dump_settings.
20044         (execute_vect_slp): New function.
20045         (gate_vect_slp): Likewise.
20046         (struct gimple_opt_pass pass_slp_vectorize): New.
20047         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
20048         access its members.
20049         (vec_info_for_bb): New function.
20050         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
20051         (VECTORIZATION_ENABLED): New macro.
20052         (SLP_ENABLED, SLP_DISABLED): Likewise.
20053         (vect_is_simple_use): Add bb_vec_info argument.
20054         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
20055         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
20056         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
20057         vect_schedule_slp, vect_analyze_slp): Likewise.
20058         (vect_analyze_stmt): Add slp_tree argument.
20059         (find_bb_location): Declare.
20060         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
20061         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
20062         (vect_analyze_loop_operations, vect_analyze_loop,
20063         get_initial_def_for_induction, vect_create_epilog_for_reduction,
20064         vect_finalize_reduction, vectorizable_reduction,
20065         vectorizable_live_operation, vect_transform_loop): Likewise.
20066         * tree-data-ref.c (dr_analyze_innermost): Update comment,
20067         skip evolution analysis if analyzing a basic block.
20068         (dr_analyze_indices): Likewise.
20069         (initialize_data_dependence_relation): Skip the test whether the
20070         object is invariant for basic blocks.
20071         (compute_all_dependences): Skip dependence analysis for data
20072         references in basic blocks.
20073         (find_data_references_in_stmt): Don't fail in case of invariant
20074         access in basic block.
20075         (find_data_references_in_bb): New function.
20076         (find_data_references_in_loop): Move code to
20077         find_data_references_in_bb and add a call to it.
20078         (compute_data_dependences_for_bb): New function.
20079         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
20080         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
20081         that STEP is 0.
20082         (vect_analyze_data_ref_dependence): Check for interleaving in case of
20083         unknown dependence in basic block and fail in case of dependence in
20084         basic block.
20085         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
20086         dependence instances from either loop or basic block vectorization
20087         info.
20088         (vect_compute_data_ref_alignment): Check if it is loop vectorization
20089         before calling nested_in_vect_loop_p.
20090         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
20091         dependence instances from either loop or basic block vectorization
20092         info.
20093         (vect_verify_datarefs_alignment): Likewise.
20094         (vect_enhance_data_refs_alignment): Adjust function calls.
20095         (vect_analyze_data_refs_alignment): Likewise.
20096         (vect_analyze_group_access): Fix printing. Skip different checks if
20097         DR_STEP is 0. Keep strided stores either in loop or basic block
20098         vectorization data structure. Fix indentation.
20099         (vect_analyze_data_ref_access): Fix comments, allow zero step in
20100         basic blocks.
20101         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
20102         dependence instances from either loop or basic block vectorization
20103         info.
20104         (vect_analyze_data_refs): Update comment. Call
20105         compute_data_dependences_for_bb to analyze basic blocks.
20106         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
20107         case of loop vectorization. In case of basic block vectorization use
20108         data-ref itself as a base.
20109         (vect_create_data_ref_ptr): In case of basic block vectorization:
20110         don't advance the pointer, add new statements before the current
20111         statement.  Adjust function calls.
20112         (vect_supportable_dr_alignment): Support only aligned accesses in
20113         basic block vectorization.
20114         * common.opt (ftree-slp-vectorize): New flag.
20115         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
20116         (vect_pattern_recog_1): Likewise.
20117         * tree-vect-stmts.c (process_use): Likewise.
20118         (vect_init_vector): Add new statements in the beginning of the basic
20119         block in case of basic block SLP.
20120         (vect_get_vec_def_for_operand): Adjust function calls.
20121         (vect_finish_stmt_generation): Likewise.
20122         (vectorizable_call): Add assert that it is loop vectorization, adjust
20123         function calls.
20124         (vectorizable_conversion, vectorizable_assignment): Likewise.
20125         (vectorizable_operation): In case of basic block SLP, take
20126         vectorization factor from statement's type and skip the relevance
20127         check. Adjust function calls.
20128         (vectorizable_type_demotion): Add assert that it is loop
20129         vectorization, adjust function calls.
20130         (vectorizable_type_promotion): Likewise.
20131         (vectorizable_store): Check for outer loop only in case of loop
20132         vectorization. Adjust function calls. For basic blocks, skip the
20133         relevance check and don't advance pointers.
20134         (vectorizable_load): Likewise.
20135         (vectorizable_condition): Add assert that it is loop vectorization,
20136         adjust function calls.
20137         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
20138         that it is not reduction, get vector type, call only supported
20139         functions, skip loop specific parts.
20140         (vect_transform_stmt): Check for outer loop only in case of loop
20141         vectorization.
20142         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
20143         (vect_is_simple_use): Fix comment, add new argument, fix conditions
20144         for external definition.
20145         * passes.c (pass_slp_vectorize): New pass.
20146         * tree-vect-slp.c (find_bb_location): New function.
20147         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
20148         check for patterns only in loops.
20149         (vect_build_slp_tree): Add argument, adjust function calls, fail in
20150         case of multiple types in basic block SLP.
20151         (vect_mark_slp_stmts_relevant): New function.
20152         (vect_supported_load_permutation_p): Fix comment.
20153         (vect_analyze_slp_instance): Add argument. In case of basic block
20154         SLP, take vectorization factor from statement's type, check that
20155         unrolling factor is 1. Adjust function call. Save SLP instance in
20156         either loop or basic block vectorization structure. Return FALSE,
20157         if SLP failed.
20158         (vect_analyze_slp): Add argument. Get strided stores groups from
20159         either loop or basic block vectorization structure. Return FALSE
20160         if basic block SLP failed.
20161         (new_bb_vec_info): New function.
20162         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
20163         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
20164         (vect_schedule_slp): Add argument. Get SLP instances from either
20165         loop or basic block vectorization structure. Set vectorization factor
20166         to be 1 for basic block SLP.
20167         (vect_slp_transform_bb): New function.
20168         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
20169
20170 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
20171
20172         * final.c (shorten_branches): Do not align labels for jump tables.
20173         (final_scan_insn): Use JUMP_TABLE_DATA_P.
20174
20175 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
20176
20177         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
20178         Remove outdated reference to flow.c and fix nits.
20179         * doc/gccint.texi: Tweak RTL description.
20180         * doc/rtl.texi: Likewise.
20181
20182 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
20183
20184         * config/avr/avr.c: Change my email address.
20185         * config/avr/avr.h: Likewise.
20186         * config/avr/avr.md: Likewise.
20187         * config/avr/avr-protos.h: Likewise.
20188         * config/avr/libgcc.S: Likewise.
20189
20190 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
20191
20192         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
20193         (spu_split_load, spu_split_store): Change return type to int.
20194         (spu_split_convert): Declare.
20195         * config/spu/predicates.md (spu_mem_operand): Remove.
20196         (spu_mov_operand): Update.
20197         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
20198         * config/spu/spu.c (regno_aligned_for_load): Remove.
20199         (reg_aligned_for_addr, spu_expand_load): Define.
20200         (spu_expand_extv): Reimplement and handle MEM.
20201         (spu_expand_insv): Handle MEM.
20202         (spu_sched_reorder): Handle insn's with length 0.
20203         (spu_legitimate_address_p): Reimplement.
20204         (store_with_one_insn_p): Return TRUE for any mode with size
20205         larger than 16 bytes.
20206         (address_needs_split): Define.
20207         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
20208         operands.
20209         (spu_convert_move): Define.
20210         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
20211         (spu_split_store): Change all MEM's to TImode.
20212         (spu_init_expanders): Preallocate registers that correspond to
20213         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
20214         mark_reg_pointer.
20215         (spu_split_convert): Define.
20216         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
20217         (_move<mode>, _movdi, _movti): Update predicate and condition.
20218         (load, store): Change to define_split.
20219         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
20220         extend<mode>ti2.
20221         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
20222         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
20223         define_insn_and_split of lshr<mode>3.
20224         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
20225         (<v>ashr<mode>3_imm): Define.
20226         (extv, extzv, insv): Allow MEM operands.
20227         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
20228         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
20229         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
20230         (_spu_convert2): Change to define_insn_and_split and remove the
20231         corresponding define_peephole2.
20232         (stack_protect_set, stack_protect_test, stack_protect_test_si):
20233         Change predicates to memory_operand.
20234
20235 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
20236
20237         * config/arm/thumb2.md: Add 16-bit multiply instructions.
20238
20239 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
20240
20241         PR tree-optimization/40219
20242         * tree.c (iterative_hash_expr): Make sure the builtin function is
20243         a normal builtin function and not a front end or back end builtin
20244         before indexing into the built_in_decls array.
20245
20246 2009-05-22  Richard Guenther  <rguenther@suse.de>
20247
20248         PR middle-end/38964
20249         * alias.c (write_dependence_p): Do not use TBAA for answering
20250         anti-dependence or output-dependence.
20251         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
20252         (emit_pointer_definition): Remove.
20253         (emit_alias_warning): Likewise.
20254         (find_what_var_points_to): Remove TBAA pruning code.
20255         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
20256         violations.
20257         (compute_points_to_sets): Remove code computing the set of
20258         dereferenced pointers.
20259         * tree-data-ref.c (dr_may_alias_p): Properly use the split
20260         oracle for querying anti and output dependencies.
20261         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
20262         if TBAA may be applied.
20263         (refs_anti_dependent_p): New function.
20264         (refs_output_dependent_p): Likewise.
20265         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
20266         (refs_output_dependent_p): Likewise.
20267         * doc/tree-ssa.texi (Memory model): New section.
20268         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
20269         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
20270         * cfgexpand.c (expand_gimple_basic_block): Do not handle
20271         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
20272         * expr.c (expand_expr_real_1): Likewise.
20273         * gimple-low.c (lower_stmt): Likewise.
20274         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
20275         (dump_gimple_cdt): Remove.
20276         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
20277         (gimple_size): Likewise.
20278         (walk_gimple_op): Likewise.
20279         (is_gimple_stmt): Likewise.
20280         (walk_stmt_load_store_addr_ops): Likewise.
20281         (gimple_build_cdt): Remove.
20282         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
20283         * gimple.h (gimple_cdt_new_type): Remove.
20284         (gimple_cdt_new_type_ptr): Likewise.
20285         (gimple_cdt_set_new_type): Likewise.
20286         (gimple_cdt_location): Likewise.
20287         (gimple_cdt_location_ptr): Likewise.
20288         (gimple_cdt_set_location): Likewise.
20289         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
20290         * tree-cfg.c (remove_useless_stmts_1): Do not handle
20291         GIMPLE_CHANGE_DYNAMIC_TYPE.
20292         (verify_types_in_gimple_stmt): Likewise.
20293         * tree-inline.c (estimate_num_insns): Likewise.
20294         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
20295         (copy_decl_to_var): Likewise.
20296         (copy_result_decl_to_var): Likewise.
20297         * tree-pretty-print.c (dump_generic_node): Do not handle
20298         CHANGE_DYNAMIC_TYPE_EXPR.
20299         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
20300         * tree-ssa-operands.c (get_expr_operands): Likewise.
20301         * tree-ssa-structalias.c (struct variable_info): Remove
20302         no_tbaa_pruning member.
20303         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
20304         (unify_nodes): Do not copy it.
20305         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
20306         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
20307         (set_uids_in_ptset): Do not check it.
20308         (find_what_var_points_to): Likewise.
20309         (compute_tbaa_pruning): Remove.
20310         (compute_points_to_sets): Do not call it.
20311         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
20312         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
20313         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
20314         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
20315         (DECL_NO_TBAA_P): Likewise.
20316         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
20317         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
20318         (expand_omp_atomic_pipeline): Do not set it.
20319         * print-tree.c (print_node): Do not dump it.
20320         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
20321         redundant check.
20322
20323 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
20324
20325         PR target/39856
20326         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
20327         for clobber.
20328
20329 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
20330
20331         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
20332         non-external.
20333
20334 2009-05-22  Ben Elliston  <bje@au.ibm.com>
20335
20336         * Makefile.in (bversion.h, s-bversion): New targets.
20337         (TOPLEV_H): Add bversion.h.
20338         * toplev.h: Include "bversion.h".
20339         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
20340         the __format__ attribute only if compiling with the same version
20341         of GCC as the sources (the "build version").
20342
20343 2009-05-22  Ben Elliston  <bje@au.ibm.com>
20344
20345         * c-format.c (handle_format_attribute): Fix comment typo.
20346
20347 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
20348
20349         PR target/37846
20350         * config/ia64/ia64.opt (mfused-madd): New.
20351         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
20352         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
20353         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
20354         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
20355         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
20356         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
20357         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
20358         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
20359         instruction if !TARGET_FUSED_MADD.
20360         (fpma, fpms): Remove colon from name.
20361
20362 2009-05-22  Richard Guenther  <rguenther@suse.de>
20363
20364         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
20365         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
20366         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
20367         TARGET_MEM_REF.
20368         (create_expression_by_pieces): Only convert if necessary.
20369         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
20370         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
20371
20372 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
20373
20374         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
20375         regular pattern from a template and rename it ...
20376         (*extzv_truncsi_exts): ... to this.
20377
20378 2009-05-21  Richard Guenther  <rguenther@suse.de>
20379
20380         * cgraph.h (struct cgraph_node): Remove inline_decl member.
20381         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
20382         (cgraph_default_inline_p): Likewise.
20383         (cgraph_decide_inlining_incrementally): Likewise.
20384
20385 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
20386             Uros Bizjak  <ubizjak@gmail.com>
20387
20388         * config/i386/cpuid.h (bit_MOVBE): New.
20389
20390         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
20391
20392         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
20393         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
20394         (ix86_handle_option): Handle OPT_mmovbe.
20395         (ix86_target_string): Add -mmovbe.
20396         (pta_flags): Add PTA_MOVBE.
20397         (processor_alias_table): Add PTA_MOVBE to "atom".
20398         (override_options): Handle PTA_MOVBE.
20399
20400         * config/i386/i386.h (TARGET_MOVBE): New.
20401
20402         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
20403         (*bswapsi_movbe): New.
20404         (*bswapdi_movbe): Likewise.
20405         (bswapdi2): Renamed to ...
20406         (*bswapdi_1): This.
20407         (bswapdi2): New expander.
20408
20409         * config/i386/i386.opt (mmovbe): New.
20410
20411         * doc/invoke.texi: Document -mmovbe.
20412
20413 2009-05-21  Taras Glek  <tglek@mozilla.com>
20414
20415         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
20416         * gcc-plugin.h (plugin_init): Updated signature.
20417         * gcc-plugin.h (plugin_name_args): Moved to this header.
20418         * doc/plugins.texi (plugin_init): Updated documention to reflect
20419         API change.
20420         * doc/plugins.texi (plugin_name_args): Added to documention.
20421
20422 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
20423
20424         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
20425         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
20426
20427 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
20428
20429         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
20430         JUMP_TABLE_DATA_P predicates where applicable.
20431         * config/i386/predicates.md: Ditto.
20432         * config/i386/sse.md: Ditto.
20433
20434 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
20435
20436         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
20437         operand2 -128 override length_immediate attribute to 1.
20438         * config/i386/predicates.md (constm128_operand): New predicate.
20439
20440         * config/i386/i386.c (memory_address_length): Handle %r12
20441         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
20442         also check REGNO.
20443         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
20444         mode look through optional ZERO_EXTEND and SUBREG.
20445         * config/i386/i386.md (R12_REG): New define_constant.
20446         (prefix_data16): For sse unit set also for MODE_TI insns.
20447         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
20448         insns set if operand 1 is ext_QIreg_operand.
20449         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
20450         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
20451         immediate.
20452         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
20453         mode from MODE_DI to MODE_SI.
20454         (movdi_1_rex64): Override modrm and length_immediate attributes
20455         only for movabs (TYPE_IMOV, alternative 2).
20456         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
20457         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
20458         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
20459         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
20460         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
20461         prefix_rex attribute if DImode.
20462         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
20463         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
20464         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
20465         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
20466         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
20467         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
20468         Likewise.  For TYPE_IMOV clear length_immediate attribute.
20469         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
20470         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
20471         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
20472         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
20473         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
20474         or one operand TYPE_ISHIFT.
20475         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
20476         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
20477         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
20478         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
20479         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
20480         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
20481         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
20482         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
20483         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
20484         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
20485         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
20486         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
20487         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
20488         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
20489         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
20490         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
20491         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
20492         set mode attribute, don't override length attribute.
20493         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
20494         to 1.
20495         (return_internal_long): Set length attribute to 2 instead of 1.
20496         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
20497         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
20498         prefix_rex attribute.
20499         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
20500         New predicates.
20501         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
20502
20503 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
20504
20505         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
20506
20507 2009-05-20  Ian Lance Taylor  <iant@google.com>
20508
20509         * tree.c (build_tree_list_vec_stat): New function.
20510         (ctor_to_vec): New function.
20511         (build_nt_call_vec): New function.
20512         (build_call_array): Change args to be a const pointer.
20513         (build_call_vec): New function.
20514         * tree.h (build_nt_call_vec): Declare.
20515         (build_tree_list_vec_stat): Declare.
20516         (build_tree_list_vec): Define.
20517         (build_call_array): Update declaration.
20518         (build_call_vec): Declare.
20519         (ctor_to_vec): Declare.
20520         * c-common.c (tree_vector_cache): New static variable.
20521         (make_tree_vector): New function.
20522         (release_tree_vector): New function.
20523         (make_tree_vector_single): New function.
20524         (make_tree_vector_copy): New function.
20525         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
20526         (make_tree_vector_single, make_tree_vector_copy): Declare.
20527         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
20528         (c_parser_expr_list): Don't manage cache here, instead call
20529         make_tree_vector.
20530         (c_parser_release_expr_list): Remove static function.
20531         (c_parser_vec_to_tree_list): Remove static function.
20532         (c_parser_attributes): Call build_tree_list_vec instead of
20533         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
20534         c_parser_release_expr_list.
20535         (c_parser_postfix_expression_after_primary): Likewise.
20536         (c_parser_objc_keywordexpr): Likewise.
20537
20538 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
20539
20540         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
20541         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
20542         TARGET_CONVERT_TO_TYPE.
20543         * hooks.c (hook_tree_const_tree_null): Define.
20544         * hooks.h (hook_tree_const_tree_null): Declare.
20545         * target.h (struct gcc_target):  Add invalid_parameter_type,
20546         invalid_return_type, promoted_type, and convert_to_type fields.
20547         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
20548         (TARGET_INVALID_RETURN_TYPE): Define.
20549         (TARGET_PROMOTED_TYPE): Define.
20550         (TARGET_CONVERT_TO_TYPE): Define.
20551         (TARGET_INITIALIZER): Update for new fields.
20552         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
20553         (grokparms): Check targetm.invalid_parameter_type.
20554         * c-typeck.c (default_conversion): Check targetm.promoted_type.
20555         * c-convert.c (convert): Check targetm.convert_to_type.
20556
20557 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
20558
20559         * config/mips/mips.md (*extenddi_truncate<mode>,
20560         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
20561         defintions.
20562         (*extendhi_truncateqi): New define_insn_and_sptit.
20563
20564 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
20565
20566         PR middle-end/40204
20567         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
20568         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
20569
20570 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
20571
20572         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
20573         the operand of VIEW_CONVERT_EXPR.
20574
20575 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
20576
20577         * config/i386/driver-i386.c (host_detect_local_cpu): Check
20578         extended family and model for Intel processors.  Support Intel Atom.
20579
20580 2009-05-20  Olivier Hainque  <hainque@adacore.com>
20581
20582         * gstab.h (stab_code_type): Define, to be used instead of the
20583         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
20584         notice.
20585         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
20586         occurrences by stab_code_type.
20587         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
20588
20589 2009-05-20  Martin Jambor  <mjambor@suse.cz>
20590
20591         * tree-flow.h (insert_edge_copies_seq): Undeclare.
20592         (sra_insert_before): Likewise.
20593         (sra_insert_after): Likewise.
20594         (sra_init_cache): Likewise.
20595         (sra_type_can_be_decomposed_p): Likewise.
20596         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
20597         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
20598         (sra_insert_before): Likewise.
20599         (sra_insert_after): Likewise.
20600         (sra_init_cache): Likewise.
20601         (insert_edge_copies_seq): Made static and moved upwards.
20602
20603         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
20604         case.
20605
20606         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
20607
20608         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
20609         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
20610         simple copies.
20611
20612 2009-05-20  Richard Guenther  <rguenther@suse.de>
20613
20614         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
20615         with mismatched comparison modes.
20616
20617 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
20618
20619         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
20620         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
20621         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
20622         with shifts for Thumb2.
20623         (orsi_notsi): New for orn.
20624         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
20625         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
20626         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
20627         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
20628         Don't invert remainder for IOR.
20629
20630 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
20631
20632         PR tree-optimization/40087
20633         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
20634         number_of_iterations_ne): Rename never_infinite argument.
20635         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
20636         number_of_iterations_le): Handle pointer-type ivs when
20637         exit_must_be_taken is false.
20638         (number_of_iterations_cond):  Do not always assume that
20639         exit_must_be_taken if the control variable is a pointer.
20640
20641 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20642
20643         * c-typeck.c (build_binary_op): Allow % on integal vectors.
20644         * doc/extend.texi (Vector Extension): Document that % is allowed too.
20645
20646 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
20647
20648         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
20649         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
20650
20651 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20652
20653         PR c/40172
20654         * c.opt (Wlogical-op): Disabled by default.
20655         * c-opt (c_common_post_options): Do not enable Wlogical-op with
20656         Wextra.
20657         * doc/invoke.texi (Wlogical-op): Likewise.
20658
20659 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
20660
20661         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
20662         into CASE_CONVERT.
20663         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
20664         Propagate the type of the first operand.
20665         <ASSERT_EXPR>: Simplify.
20666         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
20667         Rewrite using the RHS code as discriminant.
20668         <NOP_EXPR>: Turn into CASE_CONVERT.
20669         <PLUS_EXPR>: Propagate the type of the first operand.
20670
20671 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
20672
20673         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
20674         (ia64_dconst_0_375): New.
20675         * config/ia64/ia64.c (ia64_override_options): Remove
20676         -minline-sqrt-min-latency warning.
20677         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
20678         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
20679         * config/ia64/ia64.md (*sqrt_approx): Remove.
20680         (sqrtsf2): Remove #if 0.
20681         (sqrtsf2_internal_thr): Rewrite and move to div.md.
20682         (sqrtdf): Remove assert.
20683         (sqrtdf2_internal_thr): Rewrite and move to div.md.
20684         (sqrtxf2): Remove #if 0.
20685         (sqrtxf2_internal_thr): Rewrite and move to div.md.
20686         * div.md (sqrt_approx_rf): New.
20687         (sqrtsf2_internal_thr): New implementation.
20688         (sqrtsf2_internal_lat): New.
20689         (sqrtdf2_internal_thr: New implementation.
20690         (sqrtxf2_internal): New implementation.
20691
20692 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
20693             Hans-Peter Nilsson  <hp@axis.com>
20694
20695         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
20696         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
20697         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
20698         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
20699         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
20700         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
20701         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
20702         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
20703         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
20704         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
20705         * c-common.c: ...from here.
20706
20707 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20708
20709         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
20710
20711 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20712
20713         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
20714
20715 2009-05-19  Ben Elliston  <bje@au.ibm.com>
20716
20717         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
20718         assignments with memcpy calls.
20719         (add_fdes): Likewise.
20720         (binary_search_unencoded_fdes): Likewise.
20721         (linear_search_fdes): Eliminate type puns.
20722
20723 2009-05-19  Richard Guenther  <rguenther@suse.de>
20724
20725         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
20726         not falsely claim to have propagated into all uses.
20727
20728 2009-05-19  Ben Elliston  <bje@au.ibm.com>
20729
20730         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
20731         version to v3.0.
20732
20733 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
20734
20735         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
20736         * config/sh/sh.c (sh_legitimate_address_p): Make static.
20737         (TARGET_LEGITIMATE_ADDRESS_P): New.
20738         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20739         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
20740
20741 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
20742
20743         PR debug/40109
20744         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
20745         child of the containing namespace's DIE.
20746
20747 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
20748
20749         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
20750         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
20751         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
20752         extend patterns.
20753
20754 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
20755
20756         PR target/39942
20757         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
20758         gen_align with gen_pad.
20759         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
20760         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
20761
20762         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
20763         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
20764
20765         * config/i386/i386.md (align): Renamed to ...
20766         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
20767         ASM_OUTPUT_MAX_SKIP_PAD.
20768
20769 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
20770
20771         * config.gcc: Fix variable syntax.
20772
20773         PR target/39531
20774         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
20775         before calling exact_log2.
20776         (output_iorsi3): Likewise.
20777         (output_xorsi3): Likewise.
20778
20779 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
20780
20781         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
20782         for the none zero constant operand except for EQ and NE
20783         comprisons even when the first operand is R0.
20784
20785 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
20786
20787         * config/s390/2064.md: Remove trailing whitespaces.
20788         * config/s390/2084.md: Likewise.
20789         * config/s390/constraints.md: Likewise.
20790         * config/s390/fixdfdi.h: Likewise.
20791         * config/s390/libgcc-glibc.ver: Likewise.
20792         * config/s390/s390-modes.def: Likewise.
20793         * config/s390/s390-protos.h: Likewise.
20794         * config/s390/s390.c: Likewise.
20795         * config/s390/s390.h: Likewise.
20796         * config/s390/s390.md: Likewise.
20797         * config/s390/tpf-unwind.h: Likewise.
20798
20799 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
20800
20801         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
20802
20803 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
20804
20805         M68K TLS support.
20806         * configure.ac (m68k-*-*): Check if binutils support TLS.
20807         * configure: Regenerate.
20808         * config/m68k/predicates.md (symbolic_operand): Extend comment.
20809         * config/m68k/constraints.md (Cu): New constraint.
20810         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
20811         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
20812         (movsi): Handle TLS symbols.
20813         (addsi3_5200): Handle XTLS symbols, indent.
20814         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
20815         (m68k_tls_reference_p): Declare.
20816         (m68k_legitimize_address): Declare.
20817         (m68k_unwrap_symbol): Declare.
20818         * config/m68k/m68k.opt (mxtls): New option.
20819         * config/m68k/m68k.c (ggc.h): Include.
20820         (m68k_output_dwarf_dtprel): Implement hook.
20821         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
20822         (m68k_expand_prologue): Load GOT pointer when function needs it.
20823         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
20824         (m68k_legitimate_constant_address_p): Same.
20825         (m68k_decompose_address): Handle TLS references.
20826         (m68k_get_gp): New static function.
20827         (enum m68k_reloc): New contants.
20828         (TLS_RELOC_P): New macro.
20829         (m68k_wrap_symbol): New static function.
20830         (m68k_unwrap_symbol): New function.
20831         (m68k_final_prescan_insn_1): New static function.
20832         (m68k_final_prescan_insn): New function.
20833         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
20834         functions.
20835         (legitimize_pic_address): Handle TLS references..
20836         (m68k_tls_get_addr, m68k_get_tls_get_addr)
20837         (m68k_libcall_value_in_a0_p)
20838         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
20839         (m68k_call_m68k_read_tp): Helper variables and functions for ...
20840         (m68k_legitimize_tls_address): Handle TLS references.
20841         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
20842         New functions.
20843         (m68k_legitimize_address): Handle TLS symbols.
20844         (m68k_get_reloc_decoration): New static function.
20845         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
20846         UNSPEC_RELOC32.
20847         (m68k_output_dwarf_dtprel): Implement hook.
20848         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
20849         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
20850         m68k_call_* routines.
20851         (sched_attr_op_type): Handle TLS symbols.
20852         (gt-m68k.h): Include.
20853         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
20854         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
20855
20856 2009-05-18  Martin Jambor  <mjambor@suse.cz>
20857
20858         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
20859         (visit_store_addr_for_mod_analysis): New function.
20860         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
20861         (determine_cst_member_ptr): Use gimple_assign_single_p.
20862         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
20863         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
20864         operands.  Don't check number of operands of a NOP_EXPR.
20865
20866 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
20867
20868         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
20869
20870 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20871
20872         PR c/40172
20873         * c-common.c (warn_logical_operator): Don't warn if one of
20874         expression isn't always true or false.
20875
20876 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
20877
20878         * config/i386/biarch32.h: New file.
20879         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
20880
20881 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
20882
20883         * config/mips/mips.md (*zero_extend<mode>_trunchi,
20884         *zero_extend<mode>_truncqi): Merge these into ...
20885         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
20886         Name the pattern following this as *zero_extendhi_truncqi.
20887
20888 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
20889
20890         PR middle-end/39301
20891         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
20892         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
20893         (output_info): Make field HOST_WIDEST_INT.
20894         (print_statistics): Use HOST_WIDEST_INT_PRINT.
20895         (dump_bitmat_statistics): Same.
20896
20897 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
20898
20899         * config.gcc (use_gcc_stdint):  Set to wrap.
20900         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
20901         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
20902         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
20903         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
20904         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
20905         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
20906         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
20907         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
20908
20909 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
20910
20911         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
20912         tune_64.
20913         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
20914         Move definitions earlier.
20915         (OPT_ARCH64, OPT_ARCH32): Define.
20916         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
20917         and tune_64.
20918
20919 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
20920
20921         PR target/40153
20922         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
20923         implies.
20924
20925 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
20926
20927         * arm.md (movdi2): Copy non-reg values to DImode registers.
20928
20929 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
20930
20931         PR target/39942
20932         * final.c (label_to_max_skip): New function.
20933         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
20934         CODE_LABEL_NUMBER <= max_labelno.
20935         * output.h (label_to_max_skip): New prototype.
20936         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
20937         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
20938         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
20939         Handle CODE_LABELs with >= 16 byte alignment or with
20940         max_skip == (1 << align) - 1.
20941         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
20942         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
20943
20944         PR target/39942
20945         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
20946         .p2align 3 if MAX_SKIP is smaller than 7.
20947         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
20948
20949 2009-05-15  Ian Lance Taylor  <iant@google.com>
20950
20951         * alias.c (struct alias_set_entry_d): Rename from struct
20952         alias_set_entry.  Change all uses.
20953         * except.c (struct call_site_record_d): Rename from struct
20954         call_site_record.  Change all uses.
20955         * except.h (struct eh_region_d): Rename from struct eh_region.
20956         Change all uses.
20957         * gcse.c (struct hash_table_d): Rename from struct hash_table.
20958         Change all uses.
20959         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
20960         ivtype_map_elt.  Change all uses.
20961         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
20962         Change all uses.
20963         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
20964         * graphite.h (struct name_tree_d): Rename from struct name_tree.
20965         Change all uses.
20966         (struct sese_d): Rename from struct sese.  Change all uses.
20967         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
20968         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
20969         * optabs.h (struct optab_d): Rename from struct optab.  Change all
20970         uses.
20971         (struct convert_optab_d): Rename from struct convert_optab.
20972         Change all uses.
20973         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
20974         ipa_opt_pass.  Change all uses.
20975         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
20976         all uses.
20977
20978         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
20979         defined as a typedef.
20980         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
20981         defined as a tag.
20982
20983 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20984
20985         PR 16302
20986         * fold-const.c (make_range,build_range_check,merge_ranges): Move
20987         declaration to...
20988         (merge_ranges): Returns bool.
20989         * tree.h (make_range): .. to here.
20990         (build_range_check): Likewise.
20991         (merge_ranges): Likewise. Renamed from merge_ranges.
20992         * c-typeck.c (parser_build_binary_op): Update calls to
20993         warn_logical_operator.
20994         * c-common.c (warn_logical_operator): Add new warning.
20995         * c-common.h (warn_logical_operator): Update declaration.
20996
20997 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20998
20999         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
21000
21001 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21002
21003         * doc/install.texi: Document MPC requirements, flags etc.
21004
21005         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
21006         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
21007         Evaluate constant arguments.
21008         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
21009         (fold_builtin_1): Likewise, also evaluate constant arguments.
21010         Remove superfluous break.
21011         (do_mpc_ckconv): New.
21012         * real.h: Include mpc.h.
21013         * toplev.c (print_version): Output MPC version info if available.
21014
21015 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21016
21017         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
21018
21019 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
21020
21021         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
21022         only once.
21023
21024 2009-05-15  Jan Hubicka  <jh@suse.cz>
21025
21026         * doc/invoke.texi (max-early-inliner-iterations): New flag.
21027         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
21028         (try_inline): Fix return value.
21029         (cgraph_decide_inlining_incrementally): Honor new value.
21030         (cgraph_early_inlining): Handle indirect inlining.
21031         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
21032
21033 2009-05-15  Jan Hubicka  <jh@suse.cz>
21034
21035         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
21036         * cgraphunit.c (cgraph_finalize_function): Set it.
21037         (cgraph_expand_function): Use it.
21038
21039 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21040
21041         * real.c (encode_ieee_half): Define.
21042         (decode_ieee_half): Define.
21043         (ieee_half_format): Define.
21044         (arm_half_format): Define.
21045         * real.h (ieee_half_format): Declare.
21046         (arm_half_format): Declare.
21047
21048 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21049
21050         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
21051         swapped, and reversed optabs exist before trying to use them.
21052
21053 2009-05-15  Paul Brook  <paul@codesourcery.com>
21054             Sandra Loosemore  <sandra@codesourcery.com>
21055
21056         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
21057         loads.  Allow PRE_DEC.
21058         (output_move_neon): Handle PRE_DEC.
21059         (arm_print_operand): Add 'A' for neon structure loads.
21060         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
21061         * config/arm/neon.md (neon_mov): Update comment.
21062         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
21063         calls.
21064         (Um): New constraint.
21065
21066 2009-05-15  Jan Hubicka  <jh@suse.cz>
21067
21068         Revert the following patch until testsuite fallout is fixed:
21069         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21070         * cgraph.h (struct inline_summary): New filed self_wize,
21071         size_inlining_benefit, self_time and time_inlining_benefit.
21072         (struct cgraph_global_info): Replace insns by time ans size fields.
21073         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21074         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21075         (ipcp_update_callgraph): Do not touch function bodies.
21076         * ipa-inline.c: Include except.h
21077         (MAX_TIME): New constant.
21078         (overall_insns): Remove
21079         (overall_size, max_benefit): New static variables.
21080         (cgraph_estimate_time_after_inlining): New function.
21081         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21082         (cgraph_clone_inlined_nodes): Update size.
21083         (cgraph_mark_inline_edge): Update size.
21084         (cgraph_estimate_growth): Use size info.
21085         (cgraph_check_inline_limits): Check size.
21086         (cgraph_default_inline_p): Likewise.
21087         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21088         (cgraph_decide_recursive_inlining): Check size.
21089         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21090         and times.
21091         (cgraph_decide_inlining): Likewise.
21092         (cgraph_decide_inlining_incrementally): Likewise; honor
21093         PARAM_EARLY_INLINING_INSNS.
21094         (likely_eliminated_by_inlining_p): New predicate.
21095         (estimate_function_body_sizes): New function.
21096         (compute_inline_parameters): Use it.
21097         * except.c (must_not_throw_labels): New function.
21098         * except.h (must_not_throw_labels): Declare.
21099         * tree-inline.c (init_inline_once): Kill inlining_weigths
21100         * tree-ssa-structalias.c: Avoid uninitialized warning.
21101         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
21102         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
21103         (PARAM_INLINE_CALL_COST): Remove.
21104         (PARAM_EARLY_INLINING_INSNS): New.
21105
21106 2009-05-15  Richard Guenther  <rguenther@suse.de>
21107
21108         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
21109         not TODO_update_ssa.
21110
21111 2009-05-15  Richard Guenther  <rguenther@suse.de>
21112
21113         PR tree-optimization/39999
21114         * gimple.h (gimple_expr_type): Use the expression type looking
21115         through useless conversions.
21116         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
21117         (vn_nary_op_insert_stmt): Likewise.
21118         (simplify_binary_expression): Likewise.
21119
21120 2009-05-15  Richard Guenther  <rguenther@suse.de>
21121
21122         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
21123         New options, enabled by default.
21124         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
21125         Document.
21126         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
21127         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
21128         * tree-ssa-structalias.c (gate_tree_pta): New function.
21129         (pass_build_alias): Use it.
21130
21131 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
21132
21133         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
21134         recurse on an invariant address if a conversion from a pointer
21135         type to a wider integer type is involved.
21136
21137 2009-05-15  Jan Hubicka  <jh@suse.cz>
21138
21139         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21140         * cgraph.h (struct inline_summary): New filed self_wize,
21141         size_inlining_benefit, self_time and time_inlining_benefit.
21142         (struct cgraph_global_info): Replace insns by time ans size fields.
21143         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21144         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21145         (ipcp_update_callgraph): Do not touch function bodies.
21146         * ipa-inline.c: Include except.h
21147         (MAX_TIME): New constant.
21148         (overall_insns): Remove
21149         (overall_size, max_benefit): New static variables.
21150         (cgraph_estimate_time_after_inlining): New function.
21151         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21152         (cgraph_clone_inlined_nodes): Update size.
21153         (cgraph_mark_inline_edge): Update size.
21154         (cgraph_estimate_growth): Use size info.
21155         (cgraph_check_inline_limits): Check size.
21156         (cgraph_default_inline_p): Likewise.
21157         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21158         (cgraph_decide_recursive_inlining): Check size.
21159         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21160         and times.
21161         (cgraph_decide_inlining): Likewise.
21162         (cgraph_decide_inlining_incrementally): Likewise; honor
21163         PARAM_EARLY_INLINING_INSNS.
21164         (likely_eliminated_by_inlining_p): New predicate.
21165         (estimate_function_body_sizes): New function.
21166         (compute_inline_parameters): Use it.
21167         * except.c (must_not_throw_labels): New function.
21168         * except.h (must_not_throw_labels): Declare.
21169         * tree-inline.c (init_inline_once): Kill inlining_weigths
21170         * tree-ssa-structalias.c: Avoid uninitialized warning.
21171         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
21172         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
21173         (PARAM_INLINE_CALL_COST): Remove.
21174         (PARAM_EARLY_INLINING_INSNS): New.
21175         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
21176         (inline-call-cost): Remove.
21177         (early-inlining-insns): New.
21178
21179 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
21180
21181         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
21182         for bounds.
21183         (print_int_cst_bounds_in_octal_p): Likewise.
21184         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
21185         with subtypes.
21186         * dwarf2out.c (base_type_die): Likewise.
21187         (is_subrange_type): Delete.
21188         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
21189         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
21190         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
21191         if the destination type is boolean.
21192         (build_range_check): Do not special-case subtypes.
21193         (fold_sign_changed_comparison): Likewise.
21194         (fold_unary): Likewise.
21195         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
21196         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
21197         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
21198         * tree.c (subrange_type_for_debug_p): New predicate based on the
21199         former is_subrange_type.
21200         * tree.h (subrange_type_for_debug_p): Declare.
21201         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
21202         (convert_affine_scev): Remove call to above function.
21203         (chrec_convert_aggressive): Likewise.
21204         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
21205         false for conversions involving subtypes.
21206         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
21207         (vrp_val_min): Likewise.
21208         (needs_overflow_infinity): Likewise.
21209         (extract_range_from_unary_expr): Likewise.
21210
21211 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
21212
21213         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
21214         * config/frv/frv.c: Likewise.
21215         * config/s390/s390.c: Likewise.
21216         * config/sparc/sparc.h: Likewise.
21217         * config/i386/i386.h: Likewise.
21218         * config/i386/i386.c: Likewise.
21219         * config/crx/crx.c: Likewise.
21220         * config/m68hc11/m68hc11.h: Likewise.
21221         * config/iq2000/iq2000.c: Likewise.
21222         * config/mn10300/mn10300.h: Likewise.
21223         * config/mn10300/mn10300.c: Likewise.
21224         * config/m68k/m68k.c: Likewise.
21225         * config/rs6000/rs6000.c: Likewise.
21226         * config/rs6000/xcoff.h: Likewise.
21227         * config/rs6000/linux64.h: Likewise.
21228         * config/rs6000/sysv4.h: Likewise.
21229         * config/score/score3.c: Likewise.
21230         * config/score/score7.c: Likewise.
21231         * config/score/score.c: Likewise.
21232         * config/arm/arm.md: Likewise.
21233         * config/mips/mips.c: Likewise.
21234         * config/mips/mips.md: Likewise.
21235         * config/bfin/bfin.h: Likewise.
21236         * config/pa/pa.c: Likewise.
21237         * config/pa/constraints.md: Likewise.
21238
21239         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
21240         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
21241         * config/pdp11/pdp11.h: Use memory_address_p instead.
21242
21243 2009-05-14  Ian Lance Taylor  <iant@google.com>
21244
21245         * passes.c (finish_optimization_passes): Change i to int.
21246         * plugin.c (plugins_active_p): Change event to int.
21247         (dump_active_plugins): Likewise.
21248         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
21249         Add cast.
21250         * tree.c (tree_range_check_failed): Change c to unsigned int.
21251         (omp_clause_range_check_failed): Likewise.
21252         (build_common_builtin_nodes): Change mode to int.  Add cast.
21253         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
21254         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
21255
21256         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
21257         ++ or -- with a variable of enum type.
21258
21259 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21260
21261         PR driver/40144
21262         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
21263
21264 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21265
21266         * store-motion.c: Do not include params.h
21267         * Makefile.in: Fix dependencies for various files.
21268
21269 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21270
21271         * auto-inc-dec.c: Fix pass description, remove apparent
21272         accidental duplication.
21273
21274 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
21275
21276         PR middle-end/40147
21277         * ipa-utils.h (memory_identifier_string): Moved to ...
21278         * tree.h (memory_identifier_string): Here.  Add GTY(()).
21279
21280 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
21281
21282         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
21283         in the former documentation of...
21284         (GO_IF_LEGITIMATE_ADDRESS): ... this.
21285         * ira-conflicts.c (get_dup_num): Use address_operand.
21286         * targhooks.c (default_legitimate_address_p): New.
21287         * targhooks.h (default_legitimate_address_p): New.
21288         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
21289         Call hook.
21290         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
21291         * target.h (struct target): Add legitimate_address_p.
21292         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
21293         (TARGET_INITIALIZER): Include it.
21294
21295         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21296         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
21297         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
21298         (TARGET_LEGITIMATE_ADDRESS_P): New.
21299
21300         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21301         (REG_OK_STRICT_P): Delete.
21302         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
21303         (frv_legitimate_address_p_1): ... this.
21304         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
21305         (frv_legitimate_address_p_1): ... the renamed old
21306         frv_legitimate_address_p.
21307         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
21308         (TARGET_LEGITIMATE_ADDRESS_P): New.
21309
21310         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21311         * config/s390/s390-protos.h (legitimate_address_p): Remove.
21312         * config/s390/s390.c (legitimate_address_p): Rename to...
21313         (s390_legitimate_address_p): ... this, make static.
21314         (legitimize_address): Adjust call.
21315         (TARGET_LEGITIMATE_ADDRESS_P): New.
21316         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
21317
21318         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21319         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
21320         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
21321         (TARGET_LEGITIMATE_ADDRESS_P): New.
21322
21323         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21324         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
21325         * config/spu/spu.c (spu_legitimate_address): Rename to...
21326         (spu_legitimate_address_p): ... this, make static.
21327         (TARGET_LEGITIMATE_ADDRESS_P): New.
21328
21329         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21330         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
21331         * config/sparc/sparc.c (legitimate_address_p): Rename to...
21332         (sparc_legitimate_address_p): ... this, make static and return bool.
21333         (legitimize_address): Adjust call.
21334         (TARGET_LEGITIMATE_ADDRESS_P): New.
21335
21336         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21337         * config/i386/i386-protos.h (legitimate_address_p): Remove.
21338         * config/i386/i386.c (legitimate_address_p): Rename to...
21339         (ix86_legitimate_address_p): ... this, make static.
21340         (constant_address_p): Move after it, adjust call.
21341         (TARGET_LEGITIMATE_ADDRESS_P): New.
21342
21343         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21344         * config/avr/avr-protos.h (legitimate_address_p): Remove.
21345         * config/avr/avr.c (legitimate_address_p): Rename to...
21346         (avr_legitimate_address_p): ... this, make static.
21347         (legitimize_address): Adjust call.
21348         (TARGET_LEGITIMATE_ADDRESS_P): New.
21349
21350         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21351         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
21352         * config/crx/crx.c (crx_legitimate_address_p): Make static.
21353         (TARGET_LEGITIMATE_ADDRESS_P): New.
21354
21355         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21356         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
21357         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
21358         (TARGET_LEGITIMATE_ADDRESS_P): New.
21359
21360         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21361         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
21362         Remove.
21363         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
21364         Make static.
21365         (TARGET_LEGITIMATE_ADDRESS_P): New.
21366
21367         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21368         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
21369         Remove.
21370         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
21371         Rename to...
21372         (m68hc11_legitimate_address_p): ... this, make static.
21373         (go_if_legitimate_address_internal): Rename to...
21374         (m68hc11_legitimate_address_p_1): ... this.
21375         (legitimize_address): Adjust call.
21376         (TARGET_LEGITIMATE_ADDRESS_P): New.
21377
21378         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21379         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
21380         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
21381         (TARGET_LEGITIMATE_ADDRESS_P): New.
21382
21383         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21384         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
21385         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
21386         (mn10300_legitimate_address_p): ... this, make static.
21387         (TARGET_LEGITIMATE_ADDRESS_P): New.
21388
21389         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21390         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
21391         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
21392         (TARGET_LEGITIMATE_ADDRESS_P): New.
21393
21394         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21395         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
21396         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
21397         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21398         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
21399         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
21400         (rs6000_legitimate_address_p): ... this, make static.
21401         (TARGET_LEGITIMATE_ADDRESS_P): New.
21402         (REG_MODE_OK_FOR_BASE_P): Delete.
21403         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
21404
21405         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21406         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
21407         Delete.
21408         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
21409         static, adjust types.
21410         (TARGET_LEGITIMATE_ADDRESS_P): New.
21411
21412         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21413         * config/score/score.c (score_address_p): Rename to...
21414         (score_legitimate_address_p): ... this.
21415         (TARGET_LEGITIMATE_ADDRESS_P): New.
21416         * config/score/score3.c (score3_address_p): Rename to...
21417         (score3_legitimate_address_p): ... this.
21418         * config/score/score7.c (score7_address_p): Rename to...
21419         (score7_legitimate_address_p): ... this.
21420
21421         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
21422         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
21423         GO_IF_LEGITIMATE_ADDRESS): Delete.
21424         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
21425         thumb2_legitimate_address_p): Delete.
21426         (arm_legitimate_address_p): Rename to...
21427         (arm_legitimate_address_outer_p): ... this.
21428         * config/arm/constraints.md ("Uq"): Adjust call.
21429         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
21430         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
21431         to...
21432         (arm_legitimate_address_outer_p): ... this.
21433         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
21434         static.
21435         (TARGET_LEGITIMATE_ADDRESS_P): New.
21436
21437         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21438         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
21439         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
21440         (TARGET_LEGITIMATE_ADDRESS_P): New.
21441
21442         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21443         * config/vax/vax-protos.h (legitimate_address_p): Remove.
21444         * config/vax/vax.c (legitimate_address_p): Rename to...
21445         (vax_legitimate_address_p): ... this, make static.
21446         (TARGET_LEGITIMATE_ADDRESS_P): New.
21447
21448         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21449         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
21450         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
21451         (TARGET_LEGITIMATE_ADDRESS_P): New.
21452
21453         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21454         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
21455         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
21456         (mmix_legitimate_address_p): ... this, make static.
21457         (TARGET_LEGITIMATE_ADDRESS_P): New.
21458
21459         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21460         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
21461         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
21462         (TARGET_LEGITIMATE_ADDRESS_P): New.
21463
21464 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
21465
21466         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
21467         of MODE_COMPLEX_INT.
21468
21469 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
21470
21471         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
21472         LCT_NORMAL in function call.
21473         * mips-tdump.c (print_file_desc): Add cast to enum type.
21474         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
21475         (mark_stabs): Add casts to enum types.
21476         (parse_stabs_common): Add casts to enum types.
21477
21478 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
21479
21480         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
21481         Check for invalid values of LETTER.
21482
21483 2009-05-13  Taras Glek  <tglek@mozilla.com>
21484
21485         * attribs.c (register_attribute): moved out attribute registration
21486         into register_attribute.
21487         * doc/plugins.texi: Documented register_attribute and
21488         PLUGIN_ATTRIBUTES.
21489         * gcc-plugin.h: Added forward decl for register_attribute.
21490         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
21491         * plugin.c (register_callback, invoke_plugin_callbacks): Added
21492         PLUGIN_ATTRIBUTES boilerplate.
21493
21494 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
21495
21496         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
21497         values even in sentinel and empty entries.
21498         (ms_printf_flag_specs):  Likewise.
21499         (ms_scanf_flag_specs):  Likewise.
21500         (ms_strftime_flag_specs):  Likewise.
21501         (ms_print_char_table):  Likewise.
21502         (ms_scan_char_table):  Likewise.
21503         (ms_time_char_table):  Likewise.
21504
21505 2009-05-13  Doug Kwan  <dougkwan@google.com>
21506
21507         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
21508
21509 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
21510
21511         * config/mips/mips.md (store): Add attributes for QI and HI.
21512         Update comment.
21513         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
21514         (truncdi<mode>2): ... this new pattern.
21515
21516 2009-05-13  Brad Hards  <bradh@kde.org>
21517
21518         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
21519
21520 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
21521             Ben Elliston <bje@au.ibm.com>
21522
21523         PR middle-end/40035
21524         * dse.c (check_mem_read_rtx): Guard against width == -1.
21525
21526 2009-05-13  Michael Matz  <matz@suse.de>
21527
21528         PR middle-end/39976
21529         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
21530         (trivially_conflicts_p): New function.
21531         (insert_backedge_copies): Use it.
21532
21533 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
21534
21535         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
21536         (handle_stdc_pragma): Use new enum constant names.
21537         (handle_pragma_float_const_decimal64): Ditto.
21538
21539 2009-05-13  Ian Lance Taylor  <iant@google.com>
21540
21541         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
21542         tree.def.
21543
21544 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
21545
21546         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
21547         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
21548         multilibs.
21549         * config/m68k/m68k.h (FL_UCLINUX): Define.
21550
21551 2009-05-13  Jan Hubicka  <jh@suse.cz>
21552
21553         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
21554
21555 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
21556
21557         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
21558         unless -fschedule-insns is specified.
21559
21560 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
21561
21562         PR target/39561
21563         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
21564         TARGET_EXPAND_CBRANCHDI4.
21565         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
21566         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
21567         (cmpeqdi): Fix comment.
21568
21569 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
21570
21571         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
21572         (sh_legitimate_address_p): Likewise.
21573         * config/sh/sh.c (sh_legitimate_index_p): New.
21574         (sh_legitimate_address_p): Likewise.
21575         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
21576         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
21577         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
21578         (MAYBE_BASE_REGISTER_RTX_P): New macro.
21579         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
21580         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
21581         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
21582         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
21583         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
21584
21585 2009-05-12  Jan Hubicka  <jh@suse.cz>
21586
21587         * tree-inline.c (estimate_operator_cost): Add operands;
21588         when division happens by constant, it is cheap.
21589         (estimate_num_insns): Loads and stores are not having cost of 0;
21590         EH magic stuff is cheap; when computing runtime cost of switch,
21591         use log2 base of amount of its cases; builtin_expect has cost of 0;
21592         compute cost for moving return value of call.
21593         (init_inline_once): Initialize time_based flags.
21594         * tree-inline.h (eni_weights_d): Add time_based flag.
21595
21596 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21597
21598         * df-core.c: Update head documentation.
21599
21600 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
21601
21602         PR bootstrap/40118
21603         * rs6000.c (rs6000_generate_compare): Use op1b instead of
21604         shadowing exisiting variable op1.
21605
21606 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
21607
21608         PR target/37179
21609         * config/i386/driver-i386.c (processor_signatures): New enum.
21610         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
21611         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
21612         processor signature to detect geode processor.
21613
21614 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21615
21616         Revert:
21617
21618         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21619
21620         * optabs.c (prepare_cmp_insn): Temporarily disable test that
21621         causes spurious differences between trunk and cond-optab branch.
21622
21623 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21624
21625         * dojump.c (compare_from_rtx): Delete.
21626         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
21627         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
21628         if the comparison does not satisfy the predicate; test predicates for
21629         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
21630         further if one existing pattern fails.
21631         * expr.h (compare_from_rtx): Delete.
21632         (prepare_operand): Declare it.
21633         * optabs.c: Change "lib call" to "libcall" throughout.
21634         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
21635         HAVE_conditional_trap, emit_cmp_insn): Delete.
21636         (can_compare_p): Delete cmp_optab case.
21637         (prepare_float_lib_cmp): Return an rtx and a machine mode.
21638         Accept other parameters by value.
21639         (prepare_operand): Make non-static.
21640         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
21641         other parameters by value.  Try to widen operands here based on
21642         an optab_methods argument and looking at cbranch_optab.
21643         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
21644         loop.  Use cbranch_optab directly.
21645         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
21646         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
21647         assertion.
21648         (emit_conditional_move, emit_conditional_add): Inline what's needed
21649         of compare_from_rtx, using new prepare_cmp_insn for the rest.
21650         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
21651         with COMPARE.  Move cmov_optab and cstore_optab above
21652         with cbranch_optab, move cmp_optab down with ucmp_optab,
21653         remove tst_otpab.  Do not initialize trap_rtx.
21654         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
21655         for trap code.  Do not check HAVE_conditional_trap.  Use
21656         prepare_cmp_insn.  Accept no predicate for operand 3.
21657         * optabs.h (OTI_cmp): Mark as used only for libcalls.
21658         (OTI_ctrap, ctrap_optab): New.
21659         (tst_optab): Delete.
21660         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
21661         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
21662         with lookup of ctrap_optab.
21663         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
21664         Delete.
21665         (ctrap_optab): New.
21666
21667         * combine.c (combine_simplify_rtx, simplify_set): Do not
21668         special case comparing against zero for cc0 machines.
21669         * simplify-rtx.c (simplify_binary_operation_1): Never remove
21670         COMPARE on cc0 machines.
21671         (simplify_relational_operation): Return a new expression when
21672         a COMPARE could be removed.
21673         * final.c (final_scan_insn): Compare cc_status values
21674         against LHS of a (compare FOO (const_int 0)) cc0 source.
21675         Also check if cc_status.value is the full compare.
21676
21677         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
21678         (cstoreMM4): Document.
21679         (conditional_trap): Document ctrapMM4 instead.
21680         (sync_compare_and_swapMM): Refer to cbranchcc4.
21681         (Dependent Patterns): Eliminate obsolete information referring to
21682         the old jump optimization phase.
21683         (Canonicalization): Include cbranchcc4 case, omit canonicalization
21684         of compares with 0 on cc0 machines.
21685         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
21686         avoiding references to cc0.  Remove text about storing operands
21687         in cmpMM.
21688         * doc/tm.texi (Condition Codes): Include blurb on different
21689         condition code representations, separate into subsections for
21690         CC0, MODE_CC and conditional execution.
21691
21692         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
21693         alpha_emit_setcc): Accept operands and a machine mode.
21694         * config/alpha/alpha.c (alpha_emit_conditional_branch):
21695         Get code/op0/op1 from operands, use machine mode argument
21696         instead of alpha_compare.fp_p.  Emit the branch here.
21697         (alpha_emit_setcc): Likewise, and return boolean.
21698         (alpha_emit_conditional_move): Likewise.  Assert that
21699         cmp_op_mode == cmp_mode, and simplify accordingly.
21700         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
21701         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
21702         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
21703         Delete.
21704         (stack probe test): Use cbranchdi4.
21705         * config/alpha/predicates.md (alpha_cbranch_operator): New.
21706
21707         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
21708         * config/arc/arc.h (movsicc, movsfcc): Use it.
21709         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
21710         (cbranchsi4, cstoresi4): New.
21711         (cmpsi, bCC and sCC expanders): Remove.
21712
21713         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
21714         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
21715         * config/arm/predicates.md (arm_comparison_operator): Only include
21716         floating-point operators if there is a hardware floating-point unit.
21717         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
21718         deferring to cbranch_cc and cstore_cc respectively.
21719         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
21720         cbranch_cc, cstore_cc): New.
21721         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
21722         arm_compare_op1.
21723         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
21724
21725         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
21726         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
21727         as an argument.
21728         (adjust_insn_length): Adjust calls.
21729         (avr_reorg): Handle (compare (foo) (const_int 0)).
21730         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
21731         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
21732         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
21733         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
21734         (bCC): Remove.
21735         (cbranchqi4, cbranchhi4, cbranchsi4): New.
21736         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
21737
21738         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
21739         (cbranchsi4, cstorebi4, cstoresi4): New.
21740         (movbisi): This insn is duplicate, split it to zero_extend.
21741         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
21742         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
21743         (bfin_optimize_loop): Use cbranch expander.
21744         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
21745         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
21746         (bfin_bimode_comparison_operator): ... this.
21747         (bfin_direct_comparison_operator): New.
21748
21749         * config/cris/cris.c (cris_normal_notice_update_cc): Look
21750         inside (compare FOO (const_int 0)).
21751         (cris_rtx_costs): Handle ZERO_EXTRACT.
21752         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
21753         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
21754         (*tstdi_v32): Delete.
21755         (*cmpdi_non_v32): Add M alternative for operand 1.
21756         (cmpsi, cmp<mode>): Make private.
21757         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
21758         with COMPARE.
21759         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
21760
21761         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
21762         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
21763         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
21764         (cc_reg_operand): New.
21765         (any_cond): Delete.
21766         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
21767         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
21768         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
21769         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
21770         crx_expand_scond): Delete.
21771
21772         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
21773         (cbranchsi4): New.
21774         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
21775         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
21776
21777         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
21778         cstoresi4, cstoresf4, cstoredf4): New.
21779         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
21780         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
21781         Receive the entire operands array.
21782         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
21783         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
21784         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
21785         Get test/op0/op1 from the operands array.
21786         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
21787
21788         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
21789         (h8300_expand_store): New.
21790         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
21791         (const_int 0)).
21792         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
21793         (h8300_expand_store): New.
21794         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
21795         or do not try to produce (set (cc0) REG).
21796         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
21797         change a compare into a move to a scratch register.  Disable some
21798         peepholes when comparing with zero.
21799         (tstsi, tsthi, tstsi, cmpqi): Make private.
21800         (cmphi): Delete.
21801         (bCC, sCC): Delete.
21802         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
21803         cstoresi4): New.
21804
21805         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
21806         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
21807         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
21808         (ix86_emit_i387_log1p): Use cbranchxf2.
21809         (ix86_expand_setcc): Return void.
21810         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
21811         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
21812         cmp<MODEF>, cmpcc): Remove.
21813         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
21814         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
21815         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
21816         (sCC and bCC expanders): Remove.
21817         (stack_protect_test): Use cbranchcc4.
21818
21819         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
21820         Delete.
21821         (ia64_expand_compare): Accept three rtx by reference and return void.
21822         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
21823         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
21824         from *expr.  Update *expr with the BImode comparison to do.
21825         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
21826         cmptf, bCC, sCC, conditional_trap): Delete.
21827         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
21828         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
21829         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
21830         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
21831         * config/ia64/predicates.md (ia64_cbranch_operator): New.
21832
21833         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
21834         type of last argument.
21835         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
21836         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
21837         use machine mode argument instead of branch_type.  Remove dead
21838         code for floating-point comparisons.
21839         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
21840         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
21841         Remove.
21842         (cbranchsi4, cstoresi4): New.
21843         * config/iq2000/predicates.md (reg_or_const_operand): New.
21844
21845         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
21846         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
21847         (b<code>_op): Rewrite to...
21848         (bcc_op): ... this, using match_operator.
21849         (s<code>_op): Rewrite to...
21850         (scc_op): ... this, using match_operator.
21851         (s<code>_24_op): Rewrite to...
21852         (scc_op_24): ... this, using match_operator.
21853         (s<code>_<mode>): Rewrite to...
21854         (cstore<mode>4): ... this, using match_operator.
21855         (s<code>_<mode>_24): Rewrite to...
21856         (cstore<mode>4_24): ... this, using match_operator.
21857         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
21858         m32c_unpend_compare, m32c_expand_scc): Delete.
21859         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
21860         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
21861         (m32c_expand_movcc): Change NE to EQ if necessary.
21862         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
21863
21864         * config/m32r/m32r-protos.h (gen_cond_store): New.
21865         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
21866         (gen_cond_store): New, from sCC patterns.
21867         (m32r_expand_block_move): Use cbranchsi4.
21868         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
21869         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
21870         (cbranchsi4, cstoresi4): New.
21871
21872         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
21873         Delete.
21874         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
21875         (m68hc11_notice_update_cc): Look into a compare with 0.
21876         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
21877         Delete.
21878         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
21879         cmphi, cmpqi, bCC): Delete.
21880         (cbranchsi4, cbranchhi4, cbranchqi4): New.
21881         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
21882         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
21883         sets with COMPARE.
21884
21885         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
21886         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
21887         * config/m68k/constraints.md (H): New.
21888         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
21889         the define_insn below.
21890         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
21891         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
21892         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
21893         patterns): Wrap RHS with COMPARE.
21894         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
21895         (*cmpdi_internal): Name this pattern.
21896         (cmpdi): Change to define_insn.
21897         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
21898         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
21899         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
21900         predicate.
21901         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
21902         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
21903         (conditional_trap): Change to...
21904         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
21905         (*conditional_trap): Use the ordered_comparison_operator and
21906         const1_operand predicates.
21907         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
21908         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
21909         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
21910         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
21911
21912         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
21913         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
21914         (mcore_gen_compare): New.
21915         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
21916         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
21917         (mcore_gen_compare): ... this.
21918         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
21919         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
21920         (stack probe pattern): Use cbranchsi4.
21921
21922         * config/mips/predicates.md (mips_cstore_operator): New.
21923         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
21924         * config/mips/mips.md (any_cond): Delete.
21925         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
21926         always succeed.
21927         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
21928         fixuns_truncsfdi2): Use cbranch patterns.
21929         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
21930         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
21931         Adjust call to mips_expand_conditional_branch.
21932         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
21933         cstore<GPR:mode>4.
21934         * config/mips/mips-protos.h (mips_expand_conditional_branch,
21935         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
21936         * config/mips/mips.c (cmp_operands): Delete.
21937         (mips_emit_compare): Get comparison operands from *op0/*op1.
21938         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
21939         that it succeeds.  Use op0/op1 instead of cmp_operands.
21940         (mips_expand_conditional_branch, mips_expand_conditional_move,
21941         mips_expand_conditional_trap): Likewise.
21942         (mips_block_move_loop): Use cbranch patterns.
21943         * config/mips/mips.h (cmp_operands): Delete.
21944
21945         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
21946         (mmix_gen_compare_reg): Just return a register in the right CC mode.
21947         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
21948         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
21949         (*cmpcc_folded): Rename to...
21950         (*cmpdi_folded): this.
21951         (*cmpcc): Rename to...
21952         (*cmps): ... this.
21953         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
21954         (bCC): Remove.
21955         (cbranchdi4): New.
21956         (cbranchdf4): New.  Handle invalid comparisons here.
21957         * config/mmix/predicates.md (float_comparison_operator): New.
21958
21959         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
21960         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
21961         * config/mn10300/mn10300.md (tst): Delete.
21962         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
21963         Name these patterns and wrap RHS in a compare.
21964         (*cmpsi): Make this pattern private.  Include tst.
21965         (*cmpsf): Make this pattern private.
21966         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
21967         (compare with zero peepholes): Likewise.
21968         (bCC): Remove.
21969         (cbranchsi4, cbranchsf4): New.
21970         (casesi): Use cbranchsi4.
21971
21972         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
21973         hppa_branch_type): Delete.
21974         (return_addr_rtx): Use cbranchsi4.
21975         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
21976         Emit CCFPmode comparison here.
21977         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
21978         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
21979         hppa_branch_type): Delete.
21980         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
21981         (movsicc, movdicc): Remove references to hppa_compare_op0,
21982         hppa_compare_op1 and compare_from_rtx.
21983         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
21984         (casesi): Use cbranchsi4.
21985
21986         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
21987         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
21988         * config/pdp11/pdp11.md (register_or_const0_operand): New.
21989         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
21990         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
21991         (bCC): Delete.
21992         (cbranchdf4, cbranchhi4, cbranchqi4): New.
21993         (*branch, *branch_inverted): New.
21994
21995         * config/picochip/picochip.md (cbranchhi4): Use
21996         ordered_comparison_operator.
21997         (cmphi, bCC): Remove.
21998
21999         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
22000         (trap_comparison_operator): Delete.
22001         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
22002         rs6000_emit_cbranch): Accept mode and operands.
22003         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
22004         rs6000_compare_fp_p): Delete.
22005         (rs6000_generate_compare): Accept mode and comparison.  Extract code
22006         and op0/op1 from there.  Replace references to rs6000_compare_op0
22007         and rs6000_compare_op1.
22008         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
22009         extract result from passed operands.
22010         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
22011         extract loc from passed operands.
22012         (rs6000_emit_cmove): Likewise.
22013         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
22014         rs6000_compare_fp_p): Delete.
22015         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
22016         (cbranch<GPR>4, cbranch<FP>4): New.
22017         (cstore<mode>4): New.  Consolidate here all choices about when to use
22018         portable or specialized sCC sequences.
22019         (stack_protect_test): Use cbranchsi4.
22020         (conditional_trap): Replace with ctrap<GPR>4.
22021         (conditional trap insn): Replace trap_comparison_operator with
22022         ordered_comparison_operator.
22023
22024         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
22025         (s390_emit_prologue): Use ctrap.
22026         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
22027         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
22028         New predicates replacing...
22029         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
22030         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
22031         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
22032         (add<mode>cc): Do not use s390_compare_op0/op1.
22033         (s<code>): Change to...
22034         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
22035         (seq): Change to...
22036         (cstorecc4): ... this.  Handle EQ or NE equally.
22037         (*sne): Un-privatize for use in cstorecc4.
22038         (b<code>): Change to...
22039         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
22040         (conditional_trap): Replace with...
22041         (ctrap<GPR>4, ctrap<FP>4): ... these.
22042         (stack_protect): Use cbranchcc4.
22043
22044         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
22045         * config/score/score-protos.h (score_gen_cmp): Delete.
22046         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
22047         (score_block_move-loop): Use cbranchsi4.
22048         * config/score/score.md (cbranchsi4): New.
22049         (cmpsi, bCC): Delete.
22050         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
22051         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
22052         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
22053         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
22054         * config/score/score3.h (score3_gen_cmp): Delete.
22055         * config/score/score7.h (score7_gen_cmp): Delete.
22056
22057         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
22058         (sh_emit_scc_to_t): ... this.  Return void.
22059         (from_compare): Rename to...
22060         (sh_emit_compare_and_branch): ... this.
22061         (sh_emit_compare_and_set): New.
22062         (sh_expand_t_scc): Accept operands.
22063         * config/sh/predicates.md (sh_float_comparison_operator): New.
22064         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
22065         (prepare_scc_operands): Rename to...
22066         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
22067         arguments.
22068         (sh_emit_cheap_store_flag): New.
22069         (sh_emit_set_t_insn): New.
22070         (from_compare): Rename to...
22071         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
22072         handling of TARGET_SH2E floating point to avoid recursive call.
22073         Generate branch here.
22074         (sh_emit_compare_and_set): New.
22075         (sh_expand_t_scc): Get op0/op1 from arguments.
22076         (sh_emit_cheap_store_flag): New.
22077         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
22078         cases.
22079         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
22080         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
22081         (movsicc, movdicc): Do nothing when it recreated operands from
22082         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
22083         prepare_scc_operands (now sh_emit_scc_to_t).
22084         (udivdi3): Use cstoresi4.
22085         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
22086         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
22087         (cbranchint4_media, cbranchfp4_media): New.
22088         (casesi): Use cbranchdi4.
22089         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
22090         Delete.
22091         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
22092         (movnegt): Remove second operand.
22093         (cbranchsf4, cbranchdf4): New.
22094         (stack_protect): Use cbranchdi4/cbranchsi4.
22095
22096         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
22097         (gen_compare_reg): Accept comparison, extract part of it to...
22098         (gen_compare_reg_1): ... this.
22099         (gen_compare_operator): Delete.
22100         (gen_v9_scc): Accept separate destination, comparison code and arms.
22101         Do not use sparc_compare_op0/sparc_compare_op1.
22102         (emit_scc_insn, emit_conditional_branch_insn): New.
22103         (emit_v9_brxx): Make static.  Remove useless assertion.
22104         (sparc_emit_float_lib_cmp): Return RTL instead of calling
22105         emit_cmp_insn.
22106         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
22107         * config/sparc/sparc-protos.h (gen_compare_reg,
22108         sparc_emit_float_lib_cmp): Adjust prototype.
22109         (emit_scc_insn, emit_conditional_branch_insn): New.
22110         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
22111         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
22112         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
22113         iterators to the top.
22114         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
22115         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
22116         snedi_special_trunc): Delete.
22117         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
22118         and snedi_special_trunc.
22119         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
22120         cbranchdi4, cbranch<F:mode>4): New.
22121         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
22122         here.  Use gen_compare_reg instead of gen_compare_operator.
22123         (conditional_trap): Replace with...
22124         (ctrapsi4, ctrapdi4): ... this.
22125         (stack_protect_test): Use cbranchcc4.
22126
22127         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
22128         argument to rtx.
22129         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
22130         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
22131         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
22132         from operands[0] or operands[3] depending on is_set.
22133         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
22134         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
22135         cmpdf, bCC), sCC: Remove.
22136         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
22137         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
22138         cstoredf4): New.
22139         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
22140         spu_emit_branch_or_set.
22141
22142         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
22143         Add two arguments.
22144         * config/stormy16/stormy16.h (xstormy16_compare_op0,
22145         xstormy16_compare_op1): Delete.
22146         * config/stormy16/stormy16.c (xstormy16_compare_op0,
22147         xstormy16_compare_op1): Delete.
22148         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
22149         Adjust calls.
22150         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
22151         (cmphi, cmpsi, bCC): Remove.
22152
22153         * config/v850/v850.md (tstsi, cmpsi): Fold into...
22154         (*cmpsi): ... this one.
22155         (cbranchsi4, cstoresi4): New.
22156         (bCC expanders): Delete.
22157         (sCC insns): Fold into...
22158         (*setcc): ... this one.
22159         (casesi): Do not use gen_cmpsi and gen_bgtu.
22160         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
22161         (movsicc): Simplify.
22162         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
22163
22164         * config/vax/vax-protos.h (cond_name): New.
22165         (vax_output_conditional_branch): Remove.
22166         * config/vax/vax.c (cond_name): New.
22167         (vax_output_conditional_branch): Remove.
22168         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
22169         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
22170         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
22171         (bit<VAXint>): Wrap source with (compare).
22172         (b<code> and following unnamed pattern): Rename to *branch and
22173         *branch_reversed.  Change macroization to match_operator.
22174         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
22175
22176         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
22177         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
22178         Change last argument to machine_mode.
22179         (xtensa_expand_scc): Add machine_mode argument.
22180         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
22181         (gen_conditional_move, xtensa_expand_conditional_branch,
22182         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
22183         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
22184         Adjust operand numbers.
22185         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
22186         Delete.
22187         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
22188         (cmpsi, cmpsf, b<code>, s<code>): Delete.
22189         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
22190
22191 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22192
22193         * optabs.c (prepare_cmp_insn): Temporarily disable test that
22194         causes spurious differences between trunk and cond-optab branch.
22195
22196 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
22197
22198         PR target/37137
22199         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
22200
22201 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
22202
22203         * tree.c (iterative_hash_pointer): Delete.
22204         (iterative_hash_expr): Short-circuit handling of NULL pointer.
22205         Hash UIDs and versions of SSA names.  Don't special-case built-in
22206         function declarations.
22207
22208 2009-05-11  Ian Lance Taylor  <iant@google.com>
22209
22210         PR bootstrap/40103
22211         * graphite.c: Force -Wc++-compat to only be a warning before
22212         #including "cloog/cloog.h".
22213
22214 2009-05-11  Martin Jambor  <mjambor@suse.cz>
22215
22216         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
22217
22218 2009-05-11  Jan Hubicka  <jh@suse.cz>
22219
22220         * tree-ssa-loop-ivcanon.c: Include target.h
22221         (struct loop_size): new structure.
22222         (constant_after_peeling): New predicate.
22223         (tree_estimate_loop_size): New function.
22224         (estimated_unrolled_size): Rewrite for new estimates.
22225         (try_unroll_loop_completely): Use new estimates.
22226         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
22227
22228 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22229
22230         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
22231         libcpp interface change.
22232         (spu_macro_to_expand): Likewise.
22233
22234 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
22235
22236         PR tree-optimization/40026
22237         * gimplify.c (gimplify_init_constructor): Change initial conditional
22238         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
22239         optimize_compound_literals_in_ctor.
22240
22241 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
22242
22243         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
22244         New devices.
22245         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
22246
22247 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
22248
22249         * tree-vect-data-refs.c (vect_analyze_group_access): Use
22250         HOST_WIDE_INT for gap.
22251
22252 2009-05-11  Ira Rosen  <irar@il.ibm.com>
22253
22254         PR tree-optimization/40074
22255         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
22256         account in group size and step comparison.
22257
22258 2009-05-11  Richard Guenther  <rguenther@suse.de>
22259
22260         * passes.c (init_optimization_passes): Strip now incorrect comment.
22261         (execute_function_todo): Do not set PROP_alias.
22262         * tree-pass.h (PROP_alias): Remove.
22263         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
22264         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
22265         * tree-nrv.c (pass_return_slot): Likewise.
22266         * tree-object-size.c (pass_object_sizes): Likewise.
22267         * tree-ssa-dom.c (pass_dominator): Likewise.
22268         (pass_phi_only_cprop): Likewise.
22269         * tree-ssa-dse.c (pass_dse): Likewise.
22270         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
22271         (pass_cselim): Likewise.
22272         * tree-ssa-pre.c (pass_pre): Likewise.
22273         (pass_fre): Likewise.
22274         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
22275         * tree-ssa-sink.c (pass_sink_code): Likewise.
22276         * tree-stdarg.c (pass_stdarg): Likewise.
22277         * tree-tailcall.c (pass_tail_calls): Likewise.
22278         * tree-vrp.c (pass_vrp): Likewise.
22279
22280 2009-05-10  Ian Lance Taylor  <iant@google.com>
22281
22282         * basic-block.h (enum profile_status): Break out of struct
22283         control_flow_graph.
22284         * cgraph.h (struct inline_summary): Break out of struct
22285         cgraph_local_info.
22286         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
22287         of struct cgraph_order_sort.
22288         * combine.c (enum undo_kind): New enum, broken out of struct undo.
22289         * cse.c (struct branch_path): Break out of struct
22290         cse_basic_block_data.
22291         * except.h (enum eh_region_type): Break out of struct eh_region.
22292         * gcc.c (enum add_del): Break out of struct modify_target.
22293         * genrecog.c (enum decision_type): Break out of struct decision_test.
22294         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
22295         ggc_pch_data.
22296         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
22297         * regmove.c (enum match_use): New enum, broken out of struct match.
22298         * sched-int.h (enum post_call_group): New enum, broken out of
22299         struct deps.
22300         (struct deps_reg): Break out of struct deps.
22301         * target.h (struct asm_int_op): Break out of struct gcc_target.
22302         * tree-eh.c (struct goto_queue_node): Break out of struct
22303         leh_tf_state.
22304         * tree-inline.h (enum copy_body_cge_which): Break out of
22305         copy_body_data.
22306         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
22307
22308         * c-decl.c (in_struct, struct_types): New static variables.
22309         (pushtag): Add loc parameter.  Change all callers.
22310         (lookup_tag): Add ploc parameter.  Change all callers.
22311         (check_compound_literal_type): New function.
22312         (parser_xref_tag): Add loc parameter.  Change all callers.  If
22313         -Wc++-compat, warn about struct/union/enum types defined within a
22314         struct or union.
22315         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
22316         and loc parameters.  Change all callers.  Change error calls to
22317         error_at, using loc.  For a redefinition, if the location of the
22318         original definition is known, report it.  Set in_struct and
22319         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
22320         (finish_struct): Add new parameters enclosing_in_struct and
22321         enclosing_struct_types.  Change all callers.  Set
22322         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
22323         in the struct.  If in a struct, add this struct to struct_types.
22324         (start_enum): Add loc parameter.  Change all callers.  Use
22325         error_at for errors, using loc.  For a redefinition, if the
22326         location of the original definition is known, report it.  If in a
22327         struct, add this enum type to struct_types.  If -Wc++-compat warn
22328         if in sizeof, typeof, or alignof.
22329         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
22330         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
22331         (c_parser_enum_specifier): Get enum location for start_enum.
22332         (c_parser_struct_or_union_specifier): Get struct location for
22333         start_struct.  Save in_struct and struct_types status between
22334         start_struct and finish_struct.
22335         (c_parser_cast_expression): Get location of cast.
22336         (c_parser_alignof_expression): Get location of type.
22337         (c_parser_postfix_expression): Likewise.
22338         (c_parser_postfix_expression_after_paren_type): Add type_loc
22339         parameter.  Change all callers.  Call check_compound_literal_type.
22340         Use type_loc for error about variable size type.
22341         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
22342         of an enum constant from an enum type defined in a struct or union.
22343         (c_cast_expr): Add loc parameter.  Change all callers.  If
22344         -Wc++-compat, warn about defining a type in a cast.
22345         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
22346         (start_enum, start_struct, finish_struct): Update declarations.
22347         (parser_xref_tag, c_cast_expr): Update declarations.
22348         (check_compound_literal_type): Declare.
22349
22350 2009-05-11  Ben Elliston  <bje@au.ibm.com>
22351
22352         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
22353         for recent libcpp interface change.
22354         (rs6000_macro_to_expand): Likewise.
22355
22356 2009-05-10  Michael Matz  <matz@suse.de>
22357
22358         PR target/40031
22359         * config/arm/arm.c (require_pic_register): Emit on entry edge,
22360         not at entry of function.
22361
22362 2009-05-10  Richard Guenther  <rguenther@suse.de>
22363
22364         PR tree-optimization/40081
22365         Revert
22366         * tree-sra.c (instantiate_element): Instantiate scalar replacements
22367         using the main variant of the element type.  Do not fiddle with
22368         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
22369
22370         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
22371         structs with volatile fields.
22372
22373 2009-05-10  Jan Hubicka  <jh@suse.cz>
22374
22375         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
22376         (estimate_move_cost): Assert that it does not get called for
22377         VOID_TYPE_P.
22378         (estimate_num_insns): Skip VOID types in argument handling.
22379         (optimize_inline_calls): Delete unreachable blocks and verify that
22380         callgraph is valid.
22381
22382 2009-05-10  Jan Hubicka  <jh@suse.cz>
22383
22384         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
22385         * cgraph.c (cgraph_mark_address_taken_node): New function.
22386         (dump_cgraph_node): Dump new flag.
22387         * cgraph.h (struct cgraph_node): Add address_taken.
22388         (cgraph_mark_address_taken_node): New function.
22389         * ipa.c (cgraph_postorder): Prioritize functions with address taken
22390         since new direct calls can be born.
22391
22392 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22393
22394         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
22395         tok->val.node.node.
22396
22397 2009-05-10  Jan Hubicka  <jh@suse.cz>
22398
22399         PR middle-end/40084
22400         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
22401         argument; rewrite.
22402         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
22403         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
22404         * tree-inline.c (copy_bb): Set frequency correctly.
22405         (fold_marked_statements): Update call to
22406         cgraph_update_edges_for_call_stmt.
22407
22408 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22409
22410         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
22411         identifiers in diagnostics.
22412         * config/arm/arm.c (arm_handle_fndecl_attribute,
22413         arm_handle_isr_attribute): Likewise.
22414         * config/avr/avr.c (avr_handle_progmem_attribute,
22415         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
22416         * config/bfin/bfin.c (handle_int_attribute,
22417         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
22418         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
22419         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
22420         Likewise.
22421         * config/darwin.c (darwin_handle_kext_attribute,
22422         darwin_handle_weak_import_attribute): Likewise.
22423         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
22424         h8300_handle_eightbit_data_attribute,
22425         h8300_handle_tiny_data_attribute): Likewise.
22426         * config/i386/i386.c (ix86_handle_cconv_attribute,
22427         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
22428         * config/i386/winnt.c (ix86_handle_shared_attribute,
22429         ix86_handle_selectany_attribute): Likewise.
22430         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
22431         * config/m32c/m32c.c (function_vector_handler): Likewise.
22432         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
22433         m68hc11_handle_fntype_attribute): Likewise.
22434         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
22435         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
22436         * config/mips/mips.c (mips_insert_attributes,
22437         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
22438         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
22439         rs6000_handle_struct_attribute): Likewise.
22440         * config/sh/sh.c (sh_insert_attributes,
22441         sh_handle_resbank_handler_attribute,
22442         sh_handle_interrupt_handler_attribute,
22443         sh2a_handle_function_vector_handler_attribute,
22444         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
22445         Likewise.
22446         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
22447         * config/spu/spu.c (spu_handle_fndecl_attribute,
22448         spu_handle_vector_attribute): Likewise.
22449         * config/stormy16/stormy16.c
22450         (xstormy16_handle_interrupt_attribute): Likewise.
22451         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
22452         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
22453
22454 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22455
22456         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
22457         (pp_translate_identifiers): New.
22458         (pp_identifier): Only conditionally translate identifier to locale
22459         character set.
22460         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
22461         (pp_base_tree_identifier): Only conditionally translate identifier
22462         to locale character set.
22463         * c-pretty-print.c (M_): Define.
22464         (pp_c_type_specifier, pp_c_primary_expression): Mark English
22465         fragments for conditional translation with M_.
22466         * tree-pretty-print.c (maybe_init_pretty_print): Disable
22467         identifier translation.
22468
22469 2009-05-10  Richard Guenther  <rguenther@suse.de>
22470
22471         PR tree-optimization/40081
22472         * tree-sra.c (instantiate_element): Instantiate scalar replacements
22473         using the main variant of the element type.  Do not fiddle with
22474         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
22475
22476 2009-05-09  Jan Hubicka  <jh@suse.cz>
22477
22478         PR middle-end/40080
22479         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
22480         indirect calls; verify cgraph afterwards.
22481
22482 2009-05-09  Jan Hubicka  <jh@suse.cz>
22483
22484         PR bootstrap/40082
22485         * ipa.c (update_inlined_to_pointer): New function.
22486         (cgraph_remove_unreachable_nodes): Use it.
22487
22488 2009-05-09  Jan Hubicka  <jh@suse.cz>
22489
22490         * tree-eh.c (struct leh_state): Remove prev_try.
22491         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
22492         not track prev_try.
22493         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
22494         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
22495         remove_eh_handler_and_replace, foreach_reachable_handler,
22496         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
22497         * except.h (struct eh_region): Remove eh_region_u_cleanup.
22498         (gen_eh_region_cleanup): Update prototype.
22499
22500 2009-05-09  Jan Hubicka  <jh@suse.cz>
22501
22502         PR middle-end/40043
22503         * except.c (copy_eh_region): Always set prev_try.
22504         (redirect_eh_edge_to_label): Find outer try.
22505         (foreach_reachable_handler): When looking for prev try
22506         handle case where previous try is not going to be taken.
22507
22508 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
22509
22510         PR tree-optimization/40049
22511         * tree-vect-stmts.c (vectorizable_operation): If the machine has
22512         only vector/vector shifts, convert the type of the constant to the
22513         appropriate type to avoid building incorrect trees, which
22514         eventually have problems with garbage collection.
22515
22516 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
22517
22518         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
22519         -1 for complex floating-point types if honoring signed zeros.
22520
22521 2009-05-08  Jan Hubicka  <jh@suse.cz>
22522
22523         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
22524         argument; handle correctly when profile is absent.
22525         (build_cgraph_edges): Update.
22526         (rebuild_cgraph_edges): Update.
22527         * cgraph.c: Do not include varray.h.
22528         (cgraph_set_call_stmt_including_clones): New function.
22529         (cgraph_create_edge_including_clones): Likewise
22530         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
22531         (cgraph_update_edges_for_call_stmt): Handle clones.
22532         (cgraph_remove_node): Handle clone tree.
22533         (cgraph_remove_node_and_inline_clones): New function.
22534         (dump_cgraph_node): Dump clone tree.
22535         (cgraph_clone_node): Handle clone tree.
22536         (clone_function_name): Bring here from tree-inline.c.
22537         (cgraph_create_virtual_clone): New function.
22538         * cgraph.h (ipa_replace_map): Move here from ipa.h.
22539         (cgraph_clone_info): New function.
22540         (strut cgraph_node): Add clone_info and new clone tree pointers.
22541         (cgraph_remove_node_and_inline_clones,
22542         cgraph_set_call_stmt_including_clones,
22543         cgraph_create_edge_including_clones,
22544         cgraph_create_virtual_clone): Declare.
22545         (cgraph_function_versioning): Use VEC argument.
22546         (compute_call_stmt_bb_frequency): Update prototype.
22547         (cgraph_materialize_all_clones): New function.
22548         * ipa-cp.c (ipcp_update_cloned_node): Remove.
22549         (ipcp_create_replace_map): Update to VECtors.
22550         (ipcp_update_callgraph): Use virtual clones.
22551         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
22552         (ipcp_update_profiling): Do not update local profiling.
22553         (ipcp_insert_stage): Use VECtors and virtual clones.
22554         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
22555         (clone_of_p): New function.
22556         (cgraph_preserve_function_body_p): Use clone tree.
22557         (cgraph_optimize): Materialize clones.
22558         (cgraph_function_versioning): Update for VECtors.
22559         (save_inline_function_body): Use clone tree.
22560         (cgraph_materialize_clone): New function.
22561         (cgraph_materialize_all_clones): Likewise.
22562         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
22563         * ipa.c: Include gimple.h.
22564         (cgraph_remove_unreachable_nodes): Use clone tree.
22565         * ipa-prop.c (ipa_note_param_call): Update call to
22566         compute_call_stmt_bb_frequencycall.
22567         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
22568         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
22569         (copy_bb): Handle updating of clone tree; add new edge when new call
22570         appears.
22571         (expand_call_inline): Be strict about every call having edge.
22572         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
22573         (delete_unreachable_blocks_update_callgraph): New function.
22574         (tree_function_versioning): Use VECtors; always remove unreachable
22575         blocks and fold conditionals.
22576         * tree-inline.h: Do not include varray.h.
22577         (tree_function_versioning): Remove.
22578         * Makefile.in (GTFILES): Remove tree-inline.c
22579         * passes.c (do_per_function): Do only functions having body.
22580         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
22581         tree.
22582
22583 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
22584             Andrew Morrow  <acm@google.com>
22585
22586         PR c/36892
22587         * c-common.c (c_common_attribute_table): Permit deprecated
22588         attribute to take an optional argument.
22589         (handle_deprecated_attribute): If the optional argument to
22590         __attribute__((deprecated)) is not a string ignore the attribute
22591         and emit a warning.
22592
22593         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
22594         * c-typeck.c (build_component_ref): Likewise.
22595         (build_external_ref): Likewise.
22596
22597         * toplev.c (warn_deprecated_use): Add an attribute argument.
22598         Emit the message associated with __attribute__((deprecated)).
22599
22600         * toplev.h (warn_deprecated_use): Updated.
22601
22602         * doc/extend.texi: Document new optional parameter to
22603         __attribute__((deprecated))
22604
22605 2009-05-08  Michael Eager <eager@eagercon.com>
22606
22607         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
22608         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
22609
22610 2009-05-08  Richard Guenther  <rguenther@suse.de>
22611
22612         PR tree-optimization/40062
22613         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
22614         Avoid exponential behavior.
22615
22616 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
22617
22618         PR rtl-optimization/33928
22619         PR 26854
22620         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
22621         process_uses, build_single_def_use_links): New.
22622         (update_df): Update use_def_ref.
22623         (forward_propagate_into): Use get_def_for_use instead of use-def
22624         chains.
22625         (fwprop_init): Call build_single_def_use_links and let it initialize
22626         dataflow.
22627         (fwprop_done): Free use_def_ref.
22628         (fwprop_addr): Eliminate duplicate call to df_set_flags.
22629         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
22630         df_rd_simulate_one_insn): New.
22631         (df_rd_bb_local_compute_process_def): Update head comment.
22632         (df_chain_create_bb): Use the new RD simulation functions.
22633         * df.h (df_rd_simulate_artificial_defs_at_top,
22634         df_rd_simulate_one_insn): New.
22635         * opts.c (decode_options): Enable fwprop at -O1.
22636         * doc/invoke.texi (-fforward-propagate): Document this.
22637
22638 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
22639
22640         PR c/24581
22641         * c-typeck.c (build_binary_op): Handle arithmetic between one real
22642         and one complex operand specially.
22643         * tree-complex.c (some_nonzerop): Do not identify a real value as
22644         zero if flag_signed_zeros.
22645
22646 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
22647
22648         PR rtl-optimization/33928
22649         * loop-invariant.c (record_use): Fix && vs. || mishap.
22650
22651 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
22652
22653         PR rtl-optimization/33928
22654         * loop-invariant.c (struct use): Add addr_use_p.
22655         (struct def): Add n_addr_uses.
22656         (struct invariant): Add cheap_address.
22657         (create_new_invariant): Set cheap_address.
22658         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
22659         (record_uses): Pass df_ref to record_use.
22660         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
22661         used only as such.
22662
22663 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
22664
22665         * config/sh/sh.c: Do not include c-pragma.h.
22666
22667 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22668
22669         * config/spu/spu.c: Remove include of c-common.h.
22670
22671 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
22672
22673         PR c/39037
22674         * c-common.h (mark_valid_location_for_stdc_pragma,
22675         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
22676         clear_float_const_decimal64, float_const_decimal64_p): New.
22677         * c.opt (Wunsuffixed-float-constants): New.
22678         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
22679         unsuffixed float constant, handle new warning.
22680         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
22681         * c-decl.c (c_scope): New flag float_const_decimal64.
22682         (set_float_const_decimal64, clear_float_const_decimal64,
22683         float_const_decimal64_p): New.
22684         (push_scope): Set new flag.
22685         * c-parser.c (c_parser_translation_unit): Mark when it's valid
22686         to use STDC pragmas.
22687         (c_parser_external_declaration): Ditto.
22688         (c_parser_compound_statement_nostart): Ditto.
22689         * c-pragma.c (valid_location_for_stdc_pragma,
22690         mark_valid_location_for_stdc_pragma,
22691         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
22692         handle_pragma_float_const_decimal64): New.
22693         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
22694         * cp/semantics.c (valid_location_for_stdc_pragma_p,
22695         set_float_const_decimal64, clear_float_const_decimal64,
22696         float_const_decimal64_p): New dummy functions.
22697         * doc/extend.texi (Decimal Float): Remove statement that the
22698         pragma, and suffix for double constants, are not supported.
22699         * doc/invoke.texi (Warning Options): List new option.
22700         (-Wunsuffixed-float-constants): New.
22701
22702 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
22703
22704         * config/i386/i386.c: Do not include c-common.h.
22705
22706 2009-05-07  Mark Heffernan  <meheff@google.com>
22707
22708         * doc/invoke.texi (Debugging Options): Document change of debugging
22709         dump location.
22710         * opts.c (decode_options): Make dump_base_name relative to
22711         aux_base_name directory.
22712
22713 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
22714
22715         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
22716         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
22717
22718 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
22719
22720         * Makefile.in (install-plugin): Simplify a bit.
22721
22722 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
22723
22724         * Makefile.in (OBJS-common): Add regcprop.o.
22725         (regcprop.o): New.
22726         * timevar.def (TV_CPROP_REGISTERS): New.
22727         * regrename.c (regrename_optimize): Return 0.
22728         (rest_of_handle_regrename): Delete.
22729         (pass_rename_registers): Point to regrename_optimize.
22730         (struct value_data_entry, struct value_data,
22731         kill_value_one_regno, kill_value_regno, kill_value,
22732         set_value_regno, init_value_data, kill_clobbered_value,
22733         kill_set_value, kill_autoinc_value, copy_value,
22734         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
22735         replace_oldest_value_reg, replace_oldest_value_addr,
22736         replace_oldest_value_mem, copyprop_hardreg_forward_1,
22737         debug_value_data, validate_value_data): Move...
22738         * regcprop.c: ... here.
22739         (rest_of_handle_cprop): Delete.
22740         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
22741
22742 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
22743
22744         PR middle-end/40057
22745         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
22746         GEN_INT for 1 << bitnum.
22747         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
22748         build_int_cst_type.
22749
22750 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
22751
22752         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
22753         Remove wrong description of "nand" operation.
22754
22755 2009-05-06  Richard Guenther  <rguenther@suse.de>
22756             Adam Nemet  <anemet@caviumnetworks.com>
22757
22758         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
22759         comment.  Add that if LHS is not a gimple register, then RHS1 has
22760         to be a single object (GIMPLE_SINGLE_RHS).
22761
22762 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
22763
22764         * expr.c (get_def_for_expr): Move it up in the file.
22765         (store_field): When expanding a bit-field store, look at the
22766         defining gimple stmt for the masking conversion.
22767
22768 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
22769
22770         PR middle-end/39986
22771         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
22772         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
22773         32-bit memcpy into long.
22774
22775 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
22776
22777         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
22778         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
22779         new_reg_loc_descr.
22780         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
22781         instead of appending DW_OP_deref*.
22782
22783 2009-05-06  Michael Matz  <matz@suse.de>
22784
22785         PR middle-end/40021
22786         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
22787         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
22788
22789 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
22790
22791         * Makefile.in (install-plugin): Fix srcdir handling.
22792
22793 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
22794
22795         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
22796         when processing for not_regs_needed bitmap.
22797         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
22798         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
22799         handling it for rhs.
22800
22801 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22802
22803         * config/i386/i386.md (unnamed inc/dec peephole): Use
22804         optimize_insn_for_size_p instead of optimize_size.
22805         * config/i386/predicates.md (incdec_operand): Likewise.
22806         (aligned_operand): Likewise.
22807         * config/i386/sse.md (divv8sf3): Likewise.
22808         (sqrtv8sf2): Likewise.
22809
22810 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22811
22812         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
22813
22814         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
22815
22816 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22817
22818         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
22819         ssemodesuffixf2c with avxmodesuffixf2c.
22820
22821 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
22822
22823         PR c/40032
22824         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
22825
22826 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
22827
22828         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
22829         (struct tree_base): Adjust spacing for 8 bit boundaries.
22830         (struct tree_decl_common): Add decl_by_reference_flag bit.
22831         (DECL_BY_REFERENCE): Adjust.
22832         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
22833         print DECL_BY_REFERENCE bit.
22834         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
22835         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
22836         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
22837         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
22838         unconditionally.
22839
22840         PR middle-end/39666
22841         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
22842         range of the type, but default label is missing, add it with one
22843         of the existing labels instead of adding a new label for it.
22844
22845 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
22846
22847         * dwarf.h: Remove.
22848
22849 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
22850
22851         * Makefile.in (enable_plugin, plugin_includedir): New.
22852         (install): Depend on install-plugin.
22853         (PLUGIN_HEADERS): New.
22854         (install-plugin): New.
22855         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
22856
22857 2009-05-05  Richard Guenther  <rguenther@suse.de>
22858
22859         PR tree-optimization/40022
22860         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
22861         the only vuse.
22862         (phivn_valid_p): Fix tuplification error, simplify.
22863         (phiprop_insert_phi): Add dumps.
22864         (propagate_with_phi): Simplify.
22865
22866 2009-05-05  Richard Guenther  <rguenther@suse.de>
22867
22868         PR middle-end/40023
22869         * builtins.c (gimplify_va_arg_expr): Properly build the address.
22870
22871 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
22872
22873         * tree.h (strip_float_extensions): Remove duplicate declaration.
22874         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
22875         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
22876         block_ultimate_origin): Rearrange the declarations line to match the
22877         comment that indicates the .c file which the functions are defined.
22878         (dwarf2out_*, set_decl_rtl): Add comment.
22879         (get_base_address): Adjust comment.
22880         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
22881         declarations line and add comment.
22882         (is_builtin_name): Add blank after function name, for clarity.
22883
22884 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22885
22886         * attribs.c (decl_attributes): Use %qE for identifiers in
22887         diagnostics.
22888         * cgraphunit.c (verify_cgraph_node): Translate function names to
22889         locale character set in diagnostics.
22890         * coverage.c (get_coverage_counts): Use %qE for identifiers in
22891         diagnostics.
22892         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
22893         Document that functions are named in UTF-8.
22894         * expr.c (expand_expr_real_1): Translate function names to locale
22895         character set in diagnostics.
22896         * gimplify.c (omp_notice_variable, omp_is_private,
22897         gimplify_scan_omp_clauses): Use %qE for identifiers in
22898         diagnostics.
22899         * langhooks.c (lhd_print_error_function): Translate function names
22900         to locale character set.
22901         * langhooks.h (decl_printable_name): Document that return value is
22902         in internal character set.
22903         * stmt.c: Include pretty-print.h
22904         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
22905         diagnostics.
22906         (resolve_operand_name_1): Translate named operand name to locale
22907         character set.
22908         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
22909         diagnostics.
22910         * toplev.c (announce_function): Translate function names to locale
22911         character set.
22912         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
22913         (default_tree_printer): Use pp_identifier or translate identifiers
22914         to locale character set.  Mark "<anonymous>" for translation.
22915         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
22916         for identifiers in diagnostics.
22917         * tree.c (handle_dll_attribute): Use %qE for identifiers in
22918         diagnostics.
22919         * varasm.c (output_constructor): Use %qE for identifiers in
22920         diagnostics.
22921
22922 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
22923
22924         * configure.ac: use ` ` instead of $()
22925         * configure: Regenerate.
22926
22927 2009-05-05  Ben Elliston  <bje@au.ibm.com>
22928
22929         * config/pa/linux-atomic.c: Eliminate conditional include of
22930         errno.h on non-LP64 systems to simplify build requirements.
22931
22932 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22933
22934         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
22935         diagnostics.
22936         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
22937         and pass value to identifier_to_locale.
22938         (warn_variable_length_array): Make name a tree.
22939         (grokdeclarator): Separate diagnostic texts for named and unnamed
22940         declarators.  Use %qE for named declarators.
22941         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
22942         diagnostics.
22943         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
22944         identifiers in diagnostics.
22945         * c-typeck.c (push_member_name, start_init): Pass identifiers to
22946         identifier_to_locale.  Mark "anonymous" strings for translation.
22947
22948 2009-05-04  Michael Eager <eager@eagercon.com>
22949
22950         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
22951         address for DImode/DFmode only if double-precision FP regs.
22952
22953 2009-05-04  Michael Eager <eager@eagercon.com>
22954
22955         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
22956         TARGET_SINGLE_FLOAT check.
22957
22958 2009-05-04  Michael Eager <eager@eagercon.com>
22959
22960         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
22961
22962 2009-05-04  Michael Eager <eager@eagercon.com>
22963
22964         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
22965         * config/rs6000/t-xilinx: New
22966
22967 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
22968
22969         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
22970         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
22971         * gcc/explow.c (memory_address): Use target hook.
22972         * gcc/targhooks.c (default_legitimize_address): New.
22973         * gcc/targhooks.h (default_legitimize_address): New.
22974         * gcc/target.h (legitimize_address): New.
22975         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
22976         (TARGET_INITIALIZER): Include it.
22977         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
22978
22979         * config/bfin/bfin-protos.h (legitimize_address): Remove.
22980         * config/bfin/bfin.c (legitimize_address): Remove.
22981         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
22982         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
22983         Remove.
22984         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
22985         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
22986
22987         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
22988         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
22989         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
22990         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
22991         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
22992         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
22993         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
22994         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
22995         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
22996         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
22997         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
22998         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
22999         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
23000         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
23001         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
23002         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
23003         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
23004         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
23005         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
23006         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
23007         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
23008         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
23009         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
23010
23011         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
23012         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
23013         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
23014         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
23015         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
23016         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
23017         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
23018         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
23019         (thumb_legitimize_address): Delete.
23020         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
23021         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
23022         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
23023         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
23024         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
23025         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
23026         Delete.
23027         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
23028         Delete.
23029
23030         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
23031         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
23032         * config/m32r/m32r.c (m32r_legitimize_address): New.
23033         * config/m68k/m68k.c (m68k_legitimize_address): New.
23034         * config/score/score.c (score_legitimize_address): Standardize.
23035         * config/score/score3.c (score3_legitimize_address): Standardize.
23036         * config/score/score3.h (score3_legitimize_address): Adjust.
23037         * config/score/score7.c (score7_legitimize_address): Standardize.
23038         * config/score/score7.h (score7_legitimize_address): Adjust.
23039         * config/sh/sh.c (sh_legitimize_address): New.
23040         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
23041
23042         * gcc/config/s390/s390.c (legitimize_address): Rename to...
23043         (s390_legitimize_address): ... this.
23044         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
23045         (sparc_legitimize_address): ... this.
23046         * gcc/config/i386/i386.c (legitimize_address): Rename to...
23047         (ix86_legitimize_address): ... this.
23048         * gcc/config/avr/avr.c (legitimize_address): Rename to...
23049         (avr_legitimize_address): ... this.
23050         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
23051         (mn10300_legitimize_address): ... this.
23052         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
23053         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
23054         (alpha_expand_mov): Adjust call.
23055
23056         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
23057         * config/spu/spu.c (spu_legitimize_address): Likewise.
23058         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
23059         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
23060
23061 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23062
23063         * intl.c (locale_encoding, locale_utf8): New.
23064         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
23065         * intl.h (locale_encoding, locale_utf8): Declare.
23066         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
23067         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
23068         New.
23069         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
23070         argument.
23071         (pp_tree_identifier): Define to call pp_base_tree_identifier.
23072         (pp_base_tree_identifier): Declare as function.
23073         (identifier_to_locale): Declare.
23074         * Makefile.in (pretty-print.o): Update dependencies.
23075         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
23076
23077 2009-05-04  Richard Guenther  <rguenther@suse.de>
23078
23079         PR middle-end/40015
23080         * builtins.c (fold_builtin_memory_op): Do not decay to element
23081         type if the size matches the whole array.
23082
23083 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
23084
23085         * expmed.c (synth_mult): When trying out a shift, pass the result
23086         of a signed shift.
23087
23088 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
23089
23090         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
23091         (shiftsub1_cost): New.
23092         (init_expmed): Compute shiftsub1_cost.
23093         (synth_mult): Optimize multiplications by constants of the form
23094         -(2^^m-1) for some constant positive integer m.
23095
23096 2009-05-03  Richard Guenther  <rguenther@suse.de>
23097
23098         PR c/39983
23099         * c-typeck.c (array_to_pointer_conversion): Do not built
23100         ADDR_EXPRs of arrays of pointer-to-element type.
23101         * c-gimplify.c (c_gimplify_expr): Revert change fixing
23102         up wrong ADDR_EXPRs after-the-fact.
23103         * c-common.c (strict_aliasing_warning): Strip pointer
23104         conversions for obtaining the original type.
23105         * builtins.c (fold_builtin_memset): Handle array types.
23106         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
23107         and array types
23108
23109 2009-05-03  Richard Guenther  <rguenther@suse.de>
23110
23111         PR middle-end/23329
23112         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
23113         Do not lose casts from array types with unknown extent to array
23114         types with known extent.
23115         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
23116         alias set compatibility.
23117
23118 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
23119
23120         * flags.h (extra_warnings): Delete.
23121         * toplev.c (process_options): Handle Wuninitialized here.
23122         * opts.c (extra_warnings): Delete.
23123         (set_Wextra): Delete.
23124         (common_handle_option): -Wextra can be handled automatically.
23125         * c-opts.c (c_common_handle_option): Delete obsolete code.
23126         (c_common_post_options): Simplify comment.
23127         * common.opt (W): Add Var.
23128         (Wextra): Add Var.
23129         (Wuninitialized): Initialize to -1.
23130
23131 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
23132             Richard Guenther  <rguenther@suse.de>
23133
23134         * expr.c (get_def_for_expr): New function.
23135         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
23136         SSA rather than trees.
23137         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
23138         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
23139
23140 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
23141
23142         * c-common.c (reswords): Add _Imaginary.
23143         * c-common.c (enum rid): Add RID_IMAGINARY.
23144
23145 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
23146
23147         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
23148         Patch by Richard Guenther.
23149
23150 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
23151
23152         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
23153         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
23154         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
23155         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
23156         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
23157         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
23158         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
23159         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
23160         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
23161         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
23162         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
23163         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
23164         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
23165         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
23166         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
23167         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
23168         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
23169         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
23170
23171 2009-05-02  Richard Guenther  <rguenther@suse.de>
23172
23173         PR tree-optimization/39940
23174         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
23175         doing so.
23176
23177 2009-05-02  Richard Guenther  <rguenther@suse.de>
23178
23179         PR middle-end/40001
23180         * tree-ssa.c (execute_update_addresses_taken): Properly check
23181         if we can mark a variable DECL_GIMPLE_REG_P.
23182         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
23183         back to the end of the function.
23184         (is_gimple_reg_type): Remove complex type special casing.
23185         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
23186         if not optimizing.
23187
23188 2009-05-02  Ben Elliston  <bje@au.ibm.com>
23189
23190         * doc/collect2.texi (Collect2): Document search path behaviour
23191         when configured with --with-ld.
23192
23193 2009-05-02  Jan Hubicka  <jh@suse.cz>
23194
23195         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
23196         parameter; update callers.
23197         (coalesce_cost_edge): EH edges are costier because they needs
23198         splitting even if not critical and even more costier when there are
23199         multiple EH predecestors.
23200
23201 2009-05-02  Jan Hubicka  <jh@suse.cz>
23202
23203         * except.c (remove_eh_handler_and_replace): Handle updating after
23204         removing TRY blocks.
23205
23206 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
23207
23208         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
23209
23210 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
23211
23212         * varasm.c: Do not include c-pragma.h.
23213         * attribs.c: Do not incude c-common.h.
23214
23215 2009-05-01  Michael Matz  <matz@suse.de>
23216
23217         * calls.c (initialize_argument_information): Handle SSA names like
23218         decls with a non MEM_P DECL_RTL.
23219
23220 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
23221
23222         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
23223         * ipa-utils.c: Likewise.
23224         * ipa-type-escape.c: Likewise.
23225         * cgraphunit.c Do not include c-common.h.
23226         * ipa-pure-const.c: Likewise.
23227         * tree-if-conv.c: Likewise.
23228         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
23229         * ipa-struct-reorg.c: Likewise.
23230         * tree-nomudflap.c: Likewise.
23231         * tree-ssa-structalias.c: Likewise.
23232
23233 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
23234
23235         * store-motion.c: Many cleanups to make this pass a first-class
23236         citizen instead of an appendix to gcse load motion.  Add TODO list
23237         to make this pass faster/cleaner/better.
23238
23239         (struct ls_expr): Post gcse.c-split cleanups.
23240         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
23241         "stores" field to "avail_stores".
23242         (pre_ldst_mems): Rename to store_motion_mems.
23243         (pre_ldst_table): Rename to store_motion_mems_table.
23244         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
23245         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
23246         (ldst_entry): Rename to st_expr_entry, update users.
23247         (free_ldst_entry): Rename to free_st_expr_entry, update users.
23248         (free_ldst_mems): Rename to free_store_motion_mems, update users.
23249         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
23250         update caller.
23251         (first_ls_expr): Rename to first_st_expr, update users.
23252         (next_ls_expr): Rename to next_st_expr, update users.
23253         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
23254         fields properly for store motion instead of names inherited from load
23255         motion in gcse.c.
23256         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
23257         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
23258         are done with it.
23259
23260         (ae_kill): Rename to st_kill, update users.
23261         (ae_gen): Rename to st_avloc, update users.
23262         (transp): Rename to st_transp, update users.
23263         (pre_insert_map): Rename to st_insert_map, update users.
23264         (pre_delete_map): Rename to st_delete_map, update users.
23265         (insert_store, build_store_vectors, free_store_memory,
23266         one_store_motion_pass): Update for abovementioned changes.
23267
23268         (gcse_subst_count, gcse_create_count): Remove.
23269         (one_store_motion_pass): New statistics counters "n_stores_deleted"
23270         and "n_stores_created", local variables.
23271
23272         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
23273         use for_each_rtx.
23274
23275         (regvec, compute_store_table_current_insn): Remove.
23276         (reg_set_info, reg_clear_last_set): Remove.
23277         (compute_store_table): Use DF caches instead of local dataflow
23278         solvers.
23279
23280 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
23281
23282         * c-objc-common.c (c_tree_printer): Print identifiers with
23283         pp_identifier, not pp_string.  Mark "({anonymous})" for
23284         translation.
23285         * c-pretty-print.c (pp_c_ws_string): New.
23286         (pp_c_cv_qualifier, pp_c_type_specifier,
23287         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
23288         pp_c_storage_class_specifier, pp_c_function_specifier,
23289         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
23290         pp_c_primary_expression, pp_c_postfix_expression,
23291         pp_c_unary_expression, pp_c_shift_expression,
23292         pp_c_relational_expression, pp_c_equality_expression,
23293         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
23294         use pp_string and pp_c_ws_string in place of pp_identifier and
23295         pp_c_identifier for non-identifiers.  Mark English strings for
23296         translation.
23297         * c-pretty-print.h (pp_c_ws_string): Declare.
23298
23299 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
23300             Roland McGrath <roland@redhat.com>
23301
23302         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
23303         (ENABLE_LD_BUILDID): New configuration option.
23304         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
23305         (LINK_BUILDID_SPEC): New macro.
23306         (init_spec): If defined, prepend it between LINK_EH_SPEC and
23307         link_spec.
23308         * doc/install.texi: Document --enable-linker-build-id option.
23309         * configure: Rebuild.
23310         * config.in: Rebuild.
23311
23312 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
23313
23314         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
23315         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
23316         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
23317         MIPS_GP_SAVE_AREA_SIZE.
23318         * config/mips/mips.c (struct mips_frame_info): Update comment
23319         before arg_pointer_offset and hard_frame_pointer_offset.
23320         (mips_compute_frame_info): Update diagram before function: to
23321         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
23322         indicate the position of frame_pointer_rtx with -fstack-protector and
23323         to show args_size.  Don't allocate cprestore area for leaf functions
23324         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
23325         cprestore_size.
23326         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
23327
23328 2009-04-30  Michael Matz  <matz@suse.de>
23329
23330         PR tree-optimization/39955
23331         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
23332
23333 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
23334
23335         * ira.c (setup_cover_and_important_classes):  Use safe macro
23336         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
23337         directly.
23338         * genpreds.c (write_tm_preds_h):  Output suitable definition of
23339         REG_CLASS_FOR_CONSTRAINT.
23340
23341 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
23342
23343         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
23344         instead of an int.
23345         * bitmap.c (bitmap_descriptor): Likewise.
23346         * ggc-common.c (loc_descriptor): Likewise.
23347         * varray.c (varray_descriptor): Likewise.
23348         * vec.c (vec_descriptor): Likewise.
23349
23350 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
23351
23352         * Makefile.in (dce.o): Add $(EXCEPT_H).
23353         * dce.c: Include except.h and delete redundant vector definitions.
23354         (deletable_insn_p): Return false for non-call insns that can throw
23355         if DF is running.
23356
23357 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
23358
23359         * gcse.c (ae_gen): Remove.
23360         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
23361         and make non-static function to make it available in store-motion.c.
23362         Update call sites with search-and-replace.
23363         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
23364         extract_mentioned_regs, extract_mentioned_regs_helper,
23365         find_moveable_store, compute_store_table, load_kills_store, find_loads,
23366         store_killed_in_insn, store_killed_after, store_killed_before,
23367         build_store_vectors, insert_insn_start_basic_block, insert-store,
23368         remove_reachable_equiv_notes, replace_store_insn, delete_store,
23369         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
23370         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
23371         * store-motion.c: ...new file.  Also copy data structures from gcse.c
23372         and clean up to remove parts not used by store motion.
23373         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
23374         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
23375
23376 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23377
23378         PR target/38571
23379         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
23380         when optimizing for size.
23381
23382 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
23383
23384         * gcse.c (gcse_constant_p): Fix typo in last change.
23385
23386 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
23387
23388         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
23389
23390 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
23391
23392         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
23393
23394 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
23395
23396         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
23397         CONST_HIGH_PART result.
23398
23399 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
23400
23401         * config/avr/avr.c (initial_elimination_offset): Rename to
23402         avr_initial_elimination_offset.
23403         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
23404         change return type to bool.
23405         (avr_can_eliminate): New function.
23406         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
23407         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
23408         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
23409         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
23410         avr_initial_elimination_offset.
23411         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
23412         (avr_initial_elimination_offset): Define.
23413
23414 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
23415             Steven Bosscher  <steven@gcc.gnu.org>
23416
23417         PR rtl-optimization/39938
23418         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
23419         * cfgrtl.c: Include insn-attr.h.
23420         (rest_of_pass_free_cfg): New function.
23421         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
23422         * resource.c (init_resource_info): Remove call to df_analyze.
23423
23424 2009-04-29  Richard Guenther  <rguenther@suse.de>
23425
23426         PR target/39943
23427         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
23428         allow conversion to signed integers.
23429
23430 2009-04-29  Richard Guenther  <rguenther@suse.de>
23431
23432         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
23433         shifts of floating point vectors if the shift amount is
23434         a constant multiple of the element size.
23435
23436 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
23437             Michael Matz  <matz@suse.de>
23438
23439         PR middle-end/39927
23440         PR bootstrap/39929
23441         * tree-outof-ssa.c (emit_partition_copy): New function.
23442         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
23443         insert_part_to_rtx_on_edge): Perform the partition base var
23444         copy using emit_partition_copy.
23445         (insert_value_copy_on_edge): Convert constants to the right mode.
23446         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
23447         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
23448
23449 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23450
23451         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
23452         scan backwards to try to find a constant to initialize it.
23453
23454         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
23455         insn before the loop_end instruction, don't look past labels.
23456
23457 2009-04-29  Richard Guenther  <rguenther@suse.de>
23458
23459         PR middle-end/39937
23460         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
23461         loose type conversions.
23462         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
23463         stmts only if there are no uses of its definition.
23464
23465 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23466
23467         * config/bfin/bfin.h (splitting_loops): Declare.
23468         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
23469         Reorder bit definitions to be ascending.
23470         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
23471         * config/bfin/bfin.c (splitting_loops): New variable.
23472         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
23473         (struct loop_info): Remove members INIT and LOOP_INIT.
23474         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
23475         the LSETUP sequence.  Allow LC to be loaded from any register, but
23476         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
23477         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
23478         set to 1.
23479         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
23480         of reload_completed.
23481
23482         From Jie Zhang:
23483         * config/bfin/bfin.md (movsi_insn): Refine constraints.
23484
23485 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
23486
23487         * Makefile.in (PLUGIN_VERSION_H): New.
23488         (OBJS-common): Remove plugin-version.o.
23489         (plugin.o): Depend on (PLUGIN_VERSION_H).
23490         (plugin-version.o): Remove.
23491         * configure: Regenerate
23492         * configure.ac: Create plugin-version.h.
23493         * gcc-plugin.h (plugin_gcc_version): Remove.
23494         (plugin_default_version_check): Change signature.
23495         * plugin-version.c: Remove.
23496         * plugin.c: Include plugin-version.h.
23497         (str_plugin_gcc_version_name): Remove.
23498         (try_init_one_plugin): Pass gcc version to plugin_init.
23499         (plugin_default_version_check): Both gcc and plugin versions are now
23500         arguments.
23501
23502 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23503
23504         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
23505         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
23506         Remove special case testing for last insn of inner loops. Don't fail
23507         if the loop ends with a jump, emit an extra nop instead.
23508
23509         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
23510         DREGS rather than comparing directly.  Remove code that tries to
23511         account for latencies.
23512
23513 2009-04-29  Richard Guenther  <rguenther@suse.de>
23514
23515         PR tree-optimization/39941
23516         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
23517         eliminating an indirect call.
23518
23519 2009-04-29  Richard Guenther  <rguenther@suse.de>
23520
23521         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
23522         parameter.  Allow invariants as base if !require_lvalue.
23523         (verify_gimple_assign_single): Adjust.
23524
23525 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23526
23527         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
23528         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
23529         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
23530         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
23531         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
23532         a VEC_SELECT.
23533         * config/bfin/bfin.c (bfin_expand_builtin,
23534         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
23535
23536 2009-04-28  Richard Guenther  <rguenther@suse.de>
23537
23538         * tree-vect-loop.c (get_initial_def_for_induction): Use
23539         correct types for pointer increment.
23540
23541 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23542
23543         * toplev.c (print_version): Update GMP version string calculation.
23544
23545 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
23546
23547         PR rtl-optimization/39938
23548         * resource.c (init_resource_info): Add call to df_analyze.
23549
23550 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
23551
23552         * config/alpha/alpha.md (usegp): Cast the result of
23553         alpha_find_lo_sum_using_gp to enum attr_usegp.
23554         * config/alpha/alpha.c (override_options): Remove end-of-structure
23555         marker element from cpu_table.  Use array size of cpu_table to handle
23556         -mcpu and -mtune options.
23557         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
23558
23559 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
23560
23561         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
23562         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
23563         tune_32 and tune_64.
23564         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
23565         support on PowerPC.
23566         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
23567         * config/rs6000/option-defaults.h: ... here.  New file.
23568         (OPT_64, OPT_32): Define.
23569         (MASK_64BIT): Define to 0 if not already defined.
23570         (OPT_ARCH64, OPT_ARCH32): Define.
23571         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
23572         and tune_64.
23573
23574 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23575
23576         * config/arm/arm.c (arm_override_options): Emit error on using
23577         fpa with AAPCS.
23578
23579 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
23580
23581         PR rtl-optimization/39914
23582         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
23583         registers for allocnos created from user-defined variables only
23584         when not optimizing.
23585
23586 2009-04-28  Richard Guenther  <rguenther@suse.de>
23587
23588         PR middle-end/39937
23589         * fold-const.c (fold_binary): Use distribute_real_division only
23590         on float types.
23591
23592 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
23593
23594         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
23595         add hpux-stdint.h to tm_file.
23596         (hppa[12]*-*-hpux11*): Ditto.
23597         (ia64*-*-hpux*): Ditto.
23598         * config/hpux-stdint.h: New.
23599         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
23600         __STDC_EXT__ for all compiles.
23601         * config/pa/pa-hpux.h: Ditto.
23602         * config/pa/pa-hpux10.h: Ditto.
23603         * config/pa/pa-hpux11.h: Ditto.
23604
23605 2009-04-28  Catherine Moore  <clm@codesourcery.com>
23606
23607         * debug.h (set_name): Add comment.
23608
23609 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
23610
23611         PR target/39929
23612         * config/darwin.c (machopic_gen_offset): Check
23613         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
23614         * config/arm/arm.c (require_pic_register): Likewise.
23615
23616 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
23617
23618         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
23619         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
23620         m32c_promote_prototypes): Delete.
23621
23622 2009-04-28  Michael Matz  <matz@suse.de>
23623
23624         PR middle-end/39922
23625         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
23626         constants.
23627
23628 2009-04-28  Richard Guenther  <rguenther@suse.de>
23629
23630         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
23631
23632 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23633
23634         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
23635         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
23636         * config/arm/arm-tune.md: Regenerate.
23637
23638 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
23639
23640         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
23641         block if there are complex incoming edges.
23642         (sel_merge_blocks): Remove useless assert.
23643         (sel_redirect_edge_and_branch): Check that edge was redirected.
23644         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
23645         (sel_find_rgns): Delete declaration.
23646         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
23647         the region when it is not a preheader.
23648
23649 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
23650
23651         PR c/39323
23652         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
23653
23654 2009-04-28  Richard Guenther  <rguenther@suse.de>
23655
23656         * tree.h (SSA_NAME_VALUE): Remove.
23657         (struct tree_ssa_name): Remove value_handle member.
23658         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
23659         array for jump threading.
23660         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
23661         SSA_NAME_VALUEs.
23662         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
23663         * tree-flow.h (threadedge_initialize_values): Declare.
23664         (threadedge_finalize_values): Likewise.
23665         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
23666         (SSA_NAME_VALUE): Define.
23667         (threadedge_initialize_values): New function.
23668         (threadedge_finalize_values): Likewise.
23669         * tree-ssa-dom.c (ssa_name_values): New global variable.
23670         (SSA_NAME_VALUE): Define.
23671         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
23672
23673 2009-04-28  Ira Rosen  <irar@il.ibm.com>
23674
23675         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
23676         Use REPORT_VECTORIZED_LOCATIONS instead
23677         REPORT_VECTORIZED_LOOPS.
23678         * tree-vectorizer.c (vect_verbosity_level): Make static.
23679         (vect_loop_location): Rename to vect_location.
23680         (vect_set_verbosity_level): Update comment.
23681         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
23682         and vect_location.
23683         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
23684         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
23685         instead REPORT_UNVECTORIZED_LOOPS.
23686         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
23687         and vect_loop_def to vect_external_def and vect_internal_def.
23688         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
23689         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
23690         REPORT_UNVECTORIZED_LOCATIONS.
23691         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
23692         and vect_used_in_loop and to vect_unused_in_scope and
23693         vect_used_in_scope.
23694         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
23695         (vect_verbosity_level): Remove declaration.
23696         (vect_analyze_operations): Likewise.
23697         (vect_analyze_stmt): Declare.
23698         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
23699         REPORT_UNVECTORIZED_LOCATIONS.
23700         (vect_get_loop_niters): Fix indentation.
23701         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
23702         (vect_analyze_loop_operations): New function.
23703         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
23704         vect_analyze_operations.
23705         (vect_is_simple_reduction): Use new names.
23706         (vectorizable_live_operation, vect_transform_loop): Likewise.
23707         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
23708         to specify whether the data references can be a part of interleaving
23709         chain.
23710         (vect_analyze_data_ref_dependence): Use new names.
23711         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
23712         (vect_create_addr_base_for_vector_ref): Remove redundant code.
23713         * tree-vect-patterns.c (widened_name_p): Use new names.
23714         (vect_recog_dot_prod_pattern): Likewise.
23715         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
23716         (process_use, vect_mark_stmts_to_be_vectorized,
23717         vect_model_simple_cost, vect_model_store_cost,
23718         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
23719         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
23720         vectorizable_operation, vectorizable_type_demotion,
23721         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
23722         vectorizable_condition): Likewise.
23723         (vect_analyze_operations): Split into vect_analyze_loop_operations
23724         and ...
23725         (vect_analyze_stmt): ... new function.
23726         (new_stmt_vec_info): Use new names.
23727         (vect_is_simple_use): Use new names and fix comment.
23728         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
23729         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
23730
23731 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
23732
23733         PR target/39911
23734         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
23735         and integer modes for x87 operands.  Do not ICE for unsupported size,
23736         generate error instead.  Generate error for unsupported operand types.
23737         ['z']: Do not handle HImode memory operands specially.  Warning
23738         for floating-point operands.  Fallthru to 'Z' for unsupported operand
23739         types.  Do not ICE for unsupported size, generate error instead.
23740         (output_387_binary_op): Use %Z to output operands.
23741         (output_fp_compare): Ditto.
23742         (output_387_reg_move): Ditto.
23743
23744 2009-04-28  Ben Elliston  <bje@au.ibm.com>
23745
23746         PR c++/35652
23747         Revert:
23748
23749         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23750
23751         * builtins.c (c_strlen): Do not warn here.
23752         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
23753         * c-common.c (pointer_int_sum): Take an explicit location.
23754         Warn about offsets out of bounds.
23755         * c-common.h (pointer_int_sum): Adjust declaration.
23756
23757 2009-04-27  Ian Lance Taylor  <iant@google.com>
23758
23759         * collect2.c (is_ctor_dtor): Change type of ret field in struct
23760         names to symkind.
23761         * dce.c (run_fast_df_dce): Change type of old_flags to int.
23762         * df-core.c (df_set_flags): Change return type to int.  Change
23763         type of old_flags to int.
23764         (df_clear_flags): Likewise.
23765         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
23766         (df_get_conditional_uses): Likewise.
23767         * df.h (df_set_flags, df_clear_flags): Update declarations.
23768         * dwarf2out.c (struct indirect_string_node): Change type of form
23769         field to enum dwarf_form.
23770         (AT_string_form): Change return type to enum dwarf_form.
23771         * fixed-value.c (fixed_compare): Add cast to enum type.
23772         * fwprop.c (update_df): Change 0 to VOIDmode.
23773         * gensupport.c: Change 0 to UNKNOWN.
23774         * gimple.h (gimple_cond_code): Add cast to enum type.
23775         * haifa-sched.c (reemit_notes): Add cast to enum type.
23776         * hooks.c (hook_int_void_no_regs): Remove function.
23777         * hooks.h (hook_int_void_no_regs): Remove declaration.
23778         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
23779         * predict.c (combine_predictions_for_insn): Add casts to enum type.
23780         * real.c (real_arithmetic): Add cast to enum type.
23781         (real_compare): Likewise.
23782         * target.h (struct gcc_target): Change return type of
23783         branch_target_register_class to enum reg_class.
23784         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
23785         default_branch_target_register_class.
23786         * targhooks.c (default_branch_target_register_class): New function.
23787         * targhooks.h (default_branch_target_register_class): Declare.
23788         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
23789         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
23790         cast to int.
23791         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
23792         ERROR_MARK.
23793         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
23794         vect_uninitialized_def.  Change 0 to ERROR_MARK.
23795         * tree-vect-stmts.c (supportable_widening_operation): Don't
23796         initialize icode1 and icode2.
23797         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
23798         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
23799         and to STD_C89.
23800         (cmn_err_flag_specs): Change 0 to STD_C89.
23801         (cmn_err_char_table): Likewise.
23802         * config/arm/arm.c (get_arm_condition_code): Change type of code
23803         to enum arm_cond_code.
23804         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
23805         (IWMMXT_BUILTIN2): Likewise.
23806         (neon_builtin_type_bits): Don't define typedef.
23807         (neon_builtin_datum): Change type of bits field to int.
23808         (arm_expand_neon_args): Add cast to enum type.
23809         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
23810         TLS_MODEL_NONE.
23811         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
23812         casts to enum type.
23813         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
23814         MIPS_FP_COND_f.
23815         * config/mips/mips.md (jal_macro): Return enum constant.
23816         (single_insn): Likewise.
23817         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
23818         CODE_FOR_nothing.
23819         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
23820         casts to enum type.
23821         * config/s390/s390.c (s390_tune_flags): Change type to int.
23822         (s390_arch_flags): Likewise.
23823         (s390_handle_arch_option): Change flags field of struct pta to int.
23824         * config/s390/s390.h (s390_tune_flags): Update declaration.
23825         (s390_arch_flags): Likewise.
23826         * config/sh/sh.c (prepare_move_operands): Compare
23827         tls_symbolic_operand result with enum constant.
23828         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
23829         (sh_expand_prologue): Add cast to enum type.
23830         (sh_expand_epilogue): Likewise.
23831         (tls_symbolic_operand): Change return type to enum tls_model.
23832         (fpscr_set_from_mem): Add cast to enum type.
23833         (legitimize_pic_address): Compare tls_symbolic_operand result with
23834         enum constant.
23835         (sh_target_reg_class): Change return type to enum reg_class.
23836         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
23837         PROCESSOR_xxx.
23838         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
23839         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
23840         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
23841         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
23842         (delayed_branch, tls_call_delay): Likewise.
23843         (eligible_for_sibcall_delay): Likewise.
23844         (eligible_for_return_delay): Likewise.
23845         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
23846         (spu_expand_builtin_1): Likewise.
23847
23848         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
23849         for all types of conversions.
23850         (output_init_element): Issue -Wc++-compat warning if needed when
23851         initializing a bitfield with enum type.
23852         * c-parser.c (c_parser_expression): Set original_type to
23853         original_type of right hand operand of comma operator.
23854
23855 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23856
23857         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
23858         grammar nits.
23859         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
23860         * doc/cpp.texi (Standard Predefined Macros)
23861         (Implementation-defined behavior): Likewise.
23862         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
23863         * doc/gimple.texi (GIMPLE Exception Handling)
23864         (@code{GIMPLE_ASSIGN}): Likewise.
23865         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
23866         * doc/invoke.texi (Warning Options, Optimize Options)
23867         (AVR Options, Darwin Options): Likewise.
23868         (Optimize Options): Reformulate -fwhole-program description.
23869         * doc/loop.texi (Lambda): Likewise.
23870         * doc/md.texi (Output Template, Define Constraints)
23871         (Standard Names, Insn Splitting): Likewise.
23872         * doc/options.texi (Option properties): Likewise.
23873         * doc/passes.texi (Tree-SSA passes): Likewise.
23874         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
23875         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
23876         (File Names and DBX): Likewise.
23877         * doc/trouble.texi (Incompatibilities): Likewise.
23878
23879 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
23880
23881         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
23882         instruction is correct.
23883
23884 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
23885
23886         Allow non-constant arguments to conversion intrinsics.
23887         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
23888         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
23889         * spu.c (print_operand): Handle 'v' and 'w'.
23890         (exp2_immediate_p, spu_gen_exp2): Define.
23891         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
23892         spu_convtf_1): Update parameter descriptions.
23893         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
23894         * constraints.md ('v', 'w'): New.
23895         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
23896         Remove.
23897         (i2f, I2F): New define_mode_attr.
23898         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
23899         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
23900         fixuns_truncv4sfv4si2):  Update to use mode attribute.
23901         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
23902         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
23903         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
23904         patterns for combine.
23905
23906 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
23907
23908         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
23909         (cprop, hoist, pre, store_motion): New debug counters.
23910         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
23911         is not an RTL pass anymore.
23912         (pass_profiling): Remove extern decl for pass removed in 2005.
23913         (pass_gcse, pass_jump_bypass): Remove.
23914         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
23915         to 0 for clean state.
23916         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
23917         * cse.c (gate_handle_cse_after_global_opts,
23918         rest_of_handle_cse_after_global_opts): New functions.
23919         (pass_cse_after_global_opts): New pass, does local CSE.
23920         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
23921         (TV_CPROP): New timevar.
23922         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
23923         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
23924         (gcse_main, recompute_all_luids): Remove.
23925         (compute_hash_table_work): Call max_reg_num instead of reading
23926         max_gcse_regno.
23927         (cprop_jump): Don't set run_jump_opt_after_gcse.
23928         (constprop_register): Always allow to alter jumps.
23929         (cprop_insn): Likewise.
23930         (do_local_cprop): Likewise.
23931         (local_cprop_pass): Likewise.  Return non-zero if something changed.
23932         (cprop): Remove function, fold interesting bits into one_cprop_pass.
23933         (find_implicit_sets): Add note about missed optimization opportunity.
23934         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
23935         pass_rtl_cprop execute function.
23936         Don't bother tracking the pass number, each pass gets its own dumpfile
23937         now anyway.
23938         Always allow to alter jumpsand bypass jumps.
23939         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
23940         will just find no suitable set.
23941         (pre_edge_insert): Fix dumping, this function is for PRE only.
23942         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
23943         pass_rtl_pre execute function.
23944         (hoist_code): Return non-zero if something changed.  Keep track of
23945         substitutions and insertions for statistics gathering similar to PRE.
23946         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
23947         called from the pass_rtl_hoist execute function.  Show pass statistics.
23948         (compute_store_table): Use max_reg_num directly instead of using the
23949         formerly global max_gcse_regno.
23950         (build_store_vectors): Likewise.
23951         (replace_store_insn): Fix dumping.
23952         (store_motion): Rename to ...
23953         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
23954         pass, called from the pass_rtl_store_motion execute function.  Keep
23955         track of substitutions and insertions for statistics gathering similar
23956         to PRE.
23957         (bypass_jumps): Remove, fold interesting bits into ...
23958         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
23959         from the pass_rtl_cprop execute function.
23960         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
23961         pass_jump_bypass): Remove.
23962         (gate_handle_gcse, rest_of_handle_gcse): Remove.
23963         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
23964         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
23965         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
23966         (gate_rtl_store_motion, execute_rtl_store_motion,
23967         pass_rtl_store_motion): New.
23968         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
23969         make it clear that -fcse-skip-blocks is a no-op for backward compat.
23970         * passes.c (init_optimization_passes): Remove pass_gcse and
23971         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
23972         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
23973         instead of pass_jump_bypass.
23974
23975 2009-04-27  Richard Guenther  <rguenther@suse.de>
23976
23977         PR middle-end/39928
23978         * gimplify.c (gimplify_expr): If we are required to create
23979         a temporary make sure it ends up as register.
23980
23981 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
23982
23983         PR target/39903
23984         * config/i386/i386.c (construct_container): Don't call
23985         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
23986         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
23987
23988 2009-04-27  Michael Matz  <matz@suse.de>
23989
23990         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
23991         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
23992         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
23993         (dump_replaceable_exprs): Take a bitmap.
23994         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
23995         array.
23996         (expand_gimple_basic_block): Likewise.
23997         * tree-ssa-ter.c (struct temp_expr_table_d): Make
23998         replaceable_expressions member a bitmap.
23999         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
24000         (mark_replaceable): Likewise.
24001         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
24002         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
24003
24004 2009-04-27  Richard Guenther  <rguenther@suse.de>
24005
24006         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
24007         (verify_stmts): Dispatch to gimple/type verification code.
24008         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
24009         issue with call argument types.
24010
24011 2009-04-27  Michael Matz  <matz@suse.de>
24012
24013         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
24014         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
24015         to above.
24016
24017 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
24018             Eric Botcazou  <ebotcazou@adacore.com>
24019
24020         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
24021         a label's basic block.
24022         (mark_target_live_regs): Tidy and rework obsolete comments.
24023         Change back DF problem to LIVE.  If a label starts a basic block,
24024         assume that all registers that used to be live then still are.
24025         (init_resource_info): If a label starts a basic block, set its
24026         BLOCK_FOR_INSN accordingly.
24027         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
24028
24029 2009-04-27  Richard Guenther  <rguenther@suse.de>
24030
24031         * tree-flow-inline.h (function_ann): Remove.
24032         (get_function_ann): Likewise.
24033         * tree-dfa.c (create_function_ann): Remove.
24034         * tree-flow.h (struct static_var_ann_d): Remove.
24035         (struct function_ann_d): Likewise.
24036         (union tree_ann_d): Remove fdecl member.
24037         (function_ann_t): Remove.
24038         (function_ann, get_function_ann, create_function_ann): Remove
24039         declarations.
24040
24041 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
24042
24043         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
24044
24045 2009-04-27  Jan Hubicka  <jh@suse.cz>
24046
24047         * ipa-pure-const.c (struct funct_state_d): New fields
24048         state_previously_known, looping_previously_known; remove
24049         state_set_in_source.
24050         (analyze_function): Use new fields.
24051         (propagate): Avoid assumption that state_set_in_source imply
24052         nonlooping.
24053
24054         * tree-ssa-loop-niter.c (finite_loop_p): New function.
24055         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
24056         * cfgloop.h (finite_loop_p): Declare.
24057
24058 2009-04-26  Michael Matz  <matz@suse.de>
24059
24060         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
24061
24062 2009-04-26  Michael Matz  <matz@suse.de>
24063
24064         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
24065         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
24066         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
24067         pass_mark_used_blocks): Remove.
24068         * tree-optimize.c (pass_free_datastructures,
24069         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
24070         * passes.c (init_optimization_passes): Don't call
24071         pass_mark_used_blocks, remove dead code.
24072
24073 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
24074
24075         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
24076         * tree-ssa-live.h (register_ssa_partition): Likewise.
24077
24078 2009-04-26  Michael Matz  <matz@suse.de>
24079
24080         Expand from SSA.
24081         * builtins.c (fold_builtin_next_arg): Handle SSA names.
24082         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
24083         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
24084         SSA names.
24085         (compare_pairs): Swap cost comparison.
24086         (coalesce_ssa_name): Don't use change_partition_var.
24087         * tree-nrv.c (struct nrv_data): Add modified member.
24088         (finalize_nrv_r): Set it.
24089         (tree_nrv): Use it to update statements.
24090         (pass_nrv): Require PROP_ssa.
24091         * tree-mudflap.c (mf_decl_cache_locals,
24092         mf_build_check_statement_for): Use make_rename_temp.
24093         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
24094         * alias.c (find_base_decl): Handle SSA names.
24095         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
24096         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
24097         * rtl.h (set_reg_attrs_for_parm): Declare.
24098         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
24099         to "optimized", remove unused locals at finish.
24100         (execute_free_datastructures): Make global, call
24101         delete_tree_cfg_annotations.
24102         (execute_free_cfg_annotations): Don't call
24103         delete_tree_cfg_annotations.
24104
24105         * ssaexpand.h: New file.
24106         * expr.c (toplevel): Include ssaexpand.h.
24107         (expand_assignment): Handle SSA names the same as register variables.
24108         (expand_expr_real_1): Expand SSA names.
24109         * cfgexpand.c (toplevel): Include ssaexpand.h.
24110         (SA): New global variable.
24111         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
24112         (SSAVAR): New macro.
24113         (set_rtl): New helper function.
24114         (add_stack_var): Deal with SSA names, use set_rtl.
24115         (expand_one_stack_var_at): Likewise.
24116         (expand_one_stack_var): Deal with SSA names.
24117         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
24118         before unique numbers.
24119         (expand_stack_vars): Use set_rtl.
24120         (expand_one_var): Accept SSA names, add asserts for them, feed them
24121         to above subroutines.
24122         (expand_used_vars): Expand all partitions (without default defs),
24123         then only the local decls (ignoring those expanded already).
24124         (expand_gimple_cond): Remove edges when jumpif() expands an
24125         unconditional jump.
24126         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
24127         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
24128         SSA name.
24129         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
24130         members of SA; deal with PARM_DECL partitions here; expand
24131         all PHI nodes, free tree datastructures and SA.  Commit instructions
24132         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
24133         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
24134         info and statements at start, collect garbage at finish.
24135         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
24136         (VAR_ANN_PARTITION) Remove.
24137         (change_partition_var): Don't declare.
24138         (partition_to_var): Always return SSA names.
24139         (var_to_partition): Only accept SSA names.
24140         (register_ssa_partition): Only check argument.
24141         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
24142         member.
24143         (delete_var_map): Don't free it.
24144         (var_union): Only accept SSA names, simplify.
24145         (partition_view_init): Mark only useful SSA names as used.
24146         (partition_view_fini): Only deal with SSA names.
24147         (change_partition_var): Remove.
24148         (dump_var_map): Use ssa_name instead of partition_to_var member.
24149         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
24150         basic blocks.
24151         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
24152         (struct _elim_graph): New member const_dests; nodes member vector of
24153         ints.
24154         (set_location_for_edge): New static helper.
24155         (create_temp): Remove.
24156         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
24157         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
24158         (new_elim_graph): Allocate const_dests member.
24159         (clean_elim_graph): Truncate const_dests member.
24160         (delete_elim_graph): Free const_dests member.
24161         (elim_graph_size): Adapt to new type of nodes member.
24162         (elim_graph_add_node): Likewise.
24163         (eliminate_name): Likewise.
24164         (eliminate_build): Don't take basic block argument, deal only with
24165         partition numbers, not variables.
24166         (get_temp_reg): New static helper.
24167         (elim_create): Use it, deal with RTL temporaries instead of trees.
24168         (eliminate_phi): Adjust all calls to new signature.
24169         (assign_vars, replace_use_variable, replace_def_variable): Remove.
24170         (rewrite_trees): Only do checking.
24171         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
24172         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
24173         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
24174         contains_tree_r, MAX_STMTS_IN_LATCH,
24175         process_single_block_loop_latch, analyze_edges_for_bb,
24176         perform_edge_inserts): Remove.
24177         (expand_phi_nodes): New global function.
24178         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
24179         functions, initialize new parameter, remember partitions having a
24180         default def.
24181         (finish_out_of_ssa): New global function.
24182         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
24183         don't reset in_ssa_p here, don't disable TER when mudflap.
24184         (pass_del_ssa): Remove.
24185         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
24186         partition members.
24187         (execute_free_datastructures): Declare.
24188         * Makefile.in (SSAEXPAND_H): New variable.
24189         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
24190         * basic-block.h (commit_one_edge_insertion): Declare.
24191         * passes.c (init_optimization_passes): Move pass_nrv and
24192         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
24193         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
24194         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
24195         (redirect_branch_edge): Deal with super block when expanding, split
24196         out jump patching itself into ...
24197         (patch_jump_insn): ... here, new static helper.
24198
24199 2009-04-26  Michael Matz  <matz@suse.de>
24200
24201         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
24202         beyond num_ssa_names.
24203         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
24204         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
24205
24206 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
24207
24208         PR inline-asm/39543
24209         * fwprop.c (forward_propagate_asm): New function.
24210         (forward_propagate_and_simplify): Propagate also into __asm, if it
24211         doesn't increase the number of referenced registers.
24212
24213         PR c/39889
24214         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
24215
24216 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
24217
24218         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
24219         note_nonlocal_vla_type for nonlocal VLAs.
24220         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
24221         contains_remapped_vars, remap_vla_decls): New functions.
24222         (convert_nonlocal_reference_stmt): If not optimizing, call
24223         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
24224         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
24225         if it wasn't found in var_map.
24226         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
24227         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
24228         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
24229         declare_vars.
24230         * gimplify.c (nonlocal_vlas): New variable.
24231         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
24232         referenced VLAs.
24233         (gimplify_body): Create and destroy nonlocal_vlas.
24234
24235         * dwarf2out.c (loc_descr_plus_const): New function.
24236         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
24237         mem_loc_descriptor, loc_descriptor_from_tree_1,
24238         descr_info_loc, gen_variable_die): Use it.
24239
24240         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
24241         !TREE_STATIC VAR_DECLs.
24242         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
24243         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
24244         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
24245         DECL_BY_REFERENCE is valid.
24246         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
24247         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
24248         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
24249         Copy DECL_BY_REFERENCE.
24250         (struct nesting_copy_body_data): New type.
24251         (nesting_copy_decl): New function.
24252         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
24253         if they have variable length.
24254
24255 2009-04-26  Michael Matz  <matz@suse.de>
24256
24257         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
24258         mark new temporaries for renaming.
24259
24260 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
24261
24262         PR c/39581
24263         * c-decl.c (global_bindings_p): Return negative value.
24264         (c_variable_size): New.  Based on variable_size from
24265         stor-layout.c.
24266         (grokdeclarator): Call c_variable_size not variable_size.
24267
24268 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
24269
24270         * config/i386/i386.c (print_operand) ['z']: Fix typo.
24271
24272 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
24273
24274         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
24275         Redefine it to just use mingw/include.
24276         (ASM_SPEC): Rules for -m32 and -m64.
24277         (LINK_SPEC): Use Likewise.
24278         (SPEC_32): New define.
24279         (SPEC_64): Likewise.
24280         (SUB_LINK_SPEC): Likewise.
24281         (MULTILIB_DEFAULTS): New define.
24282         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
24283         Add multilib options.
24284         (MULTILIB_DIRNAMES): Likewise.
24285         (MULTILIB_OSDIRNAMES): Likewise.
24286         (LIBGCC): Likewise.
24287         (INSTALL_LIBGCC): Likewise.
24288
24289 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
24290
24291         PR c/39556
24292         * c-tree.h (enum c_inline_static_type): New.
24293         (record_inline_static): Declare.
24294         * c-decl.c (struct c_inline_static, c_inline_statics,
24295         record_inline_static, check_inline_statics): New.
24296         (pop_file_scope): Call check_inline_statics.
24297         (start_decl): Call record_inline_static instead of pedwarning
24298         directly for static in inline function.
24299         * c-typeck.c (build_external_ref): Call record_inline_static
24300         instead of pedwarning directly for static referenced in inline
24301         function.
24302
24303 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
24304
24305         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
24306         not new but only being rescanned.
24307         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
24308         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
24309         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
24310         record_set_info, compute_set, grealloc): Remove.
24311         (recompute_all_luids): New function.
24312         (gcse_main): Don't compute sets, and don't do related memory
24313         allocations/free-ing.  If something changed before the end of the
24314         pass, update LUIDs using recompute_all_luids.
24315         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
24316         (free_gcse_mem): Don't free it either.
24317         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
24318         Use the df insn LUIDs.
24319         (load_killed_in_block): Likewise.
24320         (compute_hash_table_work): Don't compute reg_set_in_block.
24321         (compute_transp): Use DF_REG_DEF_CHAINs.
24322         (local_cprop_pass): Don't use compute_sets and related functions.
24323         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
24324         Use get_max_uid() instead of max_cuid.
24325         (insert_insn_end_basic_block, pre_insert_copy_insn,
24326         update_ld_motion_stores): Don't try to
24327         keep reg_set tables up to date.
24328         (pre_insert_copies): Use df insn LUIDs.
24329         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
24330         (reg_set_info): Don't use extra bitmap argument.
24331         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
24332         information to compute regs_set_in_block.
24333         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
24334         (bypass_jumps): Don't use compute_sets and friends.
24335
24336 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24337
24338         PR testsuite/39710
24339         * opts.c (undocumented_msg): Do not leave blank even with
24340         ENABLE_CHECKING.
24341
24342 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24343
24344         * c-decl.c (build_enumerator): Allow values folding to integer
24345         constants but not integer constant expressions with a pedwarn if
24346         pedantic.
24347
24348 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24349
24350         PR c/39582
24351         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
24352         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
24353         type is an integer constant.
24354
24355 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
24356
24357         PR target/39897
24358         * config/i386/i386.c (print_operand) ['z']: Revert handling of
24359         HImode operands.
24360
24361 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24362
24363         PR c/39564
24364         * c-decl.c (grokdeclarator): Diagnose declarations of functions
24365         with variably modified return type and no storage class
24366         specifiers, except for the case of nested functions.  Distinguish
24367         extern declarations of functions with variably modified return
24368         types from those of objects with variably modified types.
24369
24370 2009-04-25  Jan Hubicka  <jh@suse.cz>
24371
24372         * tree.c (list_equal_p): New function.
24373         * tree.h (list_equal_p): Declare.
24374         * coretypes.h (edge_def, edge, const_edge, basic_block_def
24375         basic_block_def, basic_block, const_basic_block): New.
24376         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
24377         (redirect_eh_edge): New function.
24378         (make_eh_edge_update_phi): EH edges are not abnormal.
24379         * except.c: Include tree-flow.h.
24380         (list_match): New function.
24381         (eh_region_replaceable_by_p): New function.
24382         (replace_region): New function.
24383         (hash_type_list): New function.
24384         (hash_eh_region): New function.
24385         (eh_regions_equal_p): New function.
24386         (merge_peers): New function.
24387         (remove_unreachable_regions): Verify EH tree when checking;
24388         merge peers.
24389         (copy_eh_region_1): New function.
24390         (copy_eh_region): New function.
24391         (push_reachable_handler): New function.
24392         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
24393         regions without label but with live RESX.
24394         * except.h (redirect_eh_edge_to_label): New.
24395         * tree-flow.h (redirect_eh_edge): New.
24396         * coretypes.h (edge_def, edge, const_edge, basic_block_def
24397         basic_block_def, basic_block, const_basic_block): Remove.
24398         * Makefile.in (except.o): Add dependency on tree-flow.h
24399         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
24400         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
24401         Remove.
24402
24403 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
24404
24405         PR bootstrap/39645
24406         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
24407         on the destination of memcpy.
24408
24409 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
24410
24411         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
24412         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
24413         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
24414
24415 2009-04-25  Jan Hubicka  <jh@suse.cz>
24416
24417         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
24418         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
24419         to be reached by different label than left.
24420         (update_eh_edges): Update comment; remove edge_to_remove if possible
24421         and return true if suceeded.
24422         (cleanup_empty_eh): Accept sharing map; handle shared regions.
24423         (cleanup_eh): Compute sharing map.
24424         * except.c (remove_eh_handler_and_replace): Add argument if we should
24425         update regions.
24426         (remove_unreachable_regions): Update for label sharing.
24427         (label_to_region_map): Likewise.
24428         (get_next_region_sharing_label): New function.
24429         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
24430         prev_try pointers.
24431         (remove_eh_handler): Update.
24432         (remove_eh_region_and_replace_by_outer_of): New function.
24433         * except.h (struct eh_region): Add next_region_sharing_label.
24434         (remove_eh_region_and_replace_by_outer_of,
24435         get_next_region_sharing_label): Declare.
24436         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
24437
24438 2009-04-25  Jan Hubicka  <jh@suse.cz>
24439
24440         * tree-cfg.c (split_critical_edges): Split also edges where we can't
24441         insert code even if they are not critical.
24442
24443 2009-04-25  Jan Hubicka  <jh@suse.cz>
24444
24445         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
24446         (gimple_can_remove_branch_p): EH edges won't remove branch by
24447         redirection.
24448         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
24449         updating of non-abnormal EH edges.
24450         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
24451         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
24452         (split_critical_edges): Split also edges where emitting code on them
24453         will lead to splitting later.
24454
24455 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
24456             H.J. Lu  <hongjiu.lu@intel.com>
24457
24458         PR target/39590
24459         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
24460         the configured assembler supports fildq and fistpq mnemonics.
24461         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
24462         * configure: Regenerated.
24463         * config.in: Ditto.
24464
24465         * config/i386/i386.c (print_operand): Handle 'Z'.
24466         ['z']: Remove handling of special fild/fist suffixes.
24467         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
24468         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
24469         suffix of fild insn.
24470         (*floatsi<mode>2_vector_mixed): Ditto.
24471         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
24472         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
24473         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
24474         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
24475         * config/i386/gas.h (GAS_MNEMONICS): Remove.
24476
24477 2009-04-25  Ben Elliston  <bje@au.ibm.com>
24478
24479         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
24480         the source of a set operation.
24481
24482 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
24483
24484         * target.h (struct gcc_target): Add case_values_threshold field.
24485         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
24486         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
24487         * targhooks.c (default_case_values_threshold): New function.
24488         * targhooks.h (default_case_values_threshold): Declare function.
24489         * stmt.c (expand_case): Use case_values_threshold target hook.
24490         * expr.h (case_values_threshold): Remove declartation.
24491         * expr.c (case_values_threshold): Remove function.
24492         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
24493
24494         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
24495         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
24496         (avr_case_values_threshold): Declare as static.
24497         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
24498
24499         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
24500         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
24501         (mn10300_case_values_threshold): New function.
24502
24503 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
24504
24505         * ira.c (setup_cover_and_important_classes): Add enum cast.
24506
24507 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
24508
24509         * genpreds.c (write_enum_constraint_num): Output definition of
24510         CONSTRAINT_NUM_DEFINED_P macro.
24511         * ira.c (setup_cover_and_important_classes): Use
24512         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
24513
24514 2009-04-24  DJ Delorie  <dj@redhat.com>
24515
24516         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
24517         __SH2A_SINGLE_ONLY__ also.
24518
24519 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
24520
24521         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
24522         (movdf_internal): Ditto.
24523         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
24524         SFmode and DFmode constants.
24525         (ia64_print_operand): Add 'G' format for printing
24526         floating point constants.
24527
24528 2009-04-24  Richard Guenther  <rguenther@suse.de>
24529
24530         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
24531         from unsigned additions.
24532
24533 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
24534
24535         * c-typeck.c (set_init_index): Allow array designators that are
24536         not integer constant expressions with a pedwarn if pedantic.
24537
24538 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
24539
24540         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
24541         zero if no overlap in nonzero bits between the operands.
24542
24543 2009-04-24  Ian Lance Taylor  <iant@google.com>
24544
24545         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
24546         (record_dead_and_set_regs): Likewise.
24547         * df.h (struct df_mw_hardreg): Change flags field to int.
24548         (struct df_base_ref): Likewise.
24549         (struct df): Change changeable_flags field to int.
24550         * df-scan.c (df_defs_record): Change clobber_flags to int.
24551         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
24552         constants rather than #define macros.
24553         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
24554         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
24555         (enum dwarf_calling_convention): Likewise.
24556         (enum dwarf_line_number_x_ops): Likewise.
24557         (enum dwarf_call_frame_info): Likewise.
24558         (enum dwarf_source_language): Likewise.
24559         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
24560         (add_calling_convention_attribute): Likewise.
24561         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
24562         (combine_comparisons): Change compcode to int.  Add cast to enum type.
24563         * genrecog.c (maybe_both_true_2): Change c to int.
24564         (write_switch): Likewise.  Add cast to enum type.
24565         * gimplify.c (gimplify_omp_for): Handle return values from
24566         gimplify_expr using MIN rather than bitwise or.
24567         (gimplify_expr): Add cast to enum type.
24568         * ipa-prop.c (update_jump_functions_after_inlining): Change
24569         IPA_BOTTOM to IPA_JF_UNKNOWN.
24570         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
24571         Add casts to enum type.
24572         (setup_cover_and_important_classes): Change cl to int.  Add casts
24573         to enum type.
24574         (setup_class_translate): Change cl and mode to int.
24575         (ira_init_once): Change mode to int.
24576         (free_register_move_costs): Likewise.
24577         (setup_prohibited_mode_move_regs): Add casts to enum type.
24578         * langhooks.c (add_builtin_function_common): Rework assertion that
24579         value fits bitfield.
24580         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
24581         * omega.c (omega_do_elimination): Avoid math on enum types.
24582         * optabs.c (expand_vec_shift_expr): Remove casts to int.
24583         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
24584         int local to handle integral_argment value.
24585         * regmove.c (try_auto_increment): Change PUT_MODE to
24586         PUT_REG_NOTE_KIND.
24587         * reload.c (push_secondary_reload): Add casts to enum type.
24588         (secondary_reload_class, find_valid_class): Likewise.
24589         * reload1.c (emit_input_reload_insns): Likewise.
24590         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
24591         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
24592         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
24593         constant.
24594         * tree.c (build_common_builtin_nodes): Add casts to enum type.
24595         * tree-complex.c (complex_lattice_t): Typedef to int rather than
24596         enum type.
24597         (expand_complex_libcall): Add casts to enum type.
24598         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
24599         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
24600         with ERROR_MARK, not NUM_TREE_CODES.
24601         (vect_create_epilog_for_reduction): Likewise.
24602         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
24603         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
24604         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
24605         enum machine_mode.
24606         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
24607         vect_unused_in_loop.  Change 0 to loop_vect.
24608         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
24609         * var-tracking.c (get_init_value): Change return type to enum
24610         var_init_status.
24611         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
24612         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
24613         arm_fp_model.
24614         (arm_override_options): Add casts to enum type.
24615         (arm_emit_tls_decoration): Likewise.
24616         * config/i386/i386.c (ix86_function_specific_restore): Add casts
24617         to enum type.
24618         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
24619         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
24620         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
24621         enum type.
24622         * config/s390/s390.c (code_for_builtin_64): Change to array of
24623         enum insn_code.
24624         (code_for_builtin_31): Likewise.
24625         (s390_expand_builtin): Change code_for_builtin to enum insn_code
24626         const *.
24627         * config/sparc/sparc.c (sparc_override_options): Change value
24628         field in struct code_model to enum cmodel.  In initializer change
24629         0 to NULL and add cast to enum type.
24630
24631         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
24632         Change all callers.  Issue a -Wc++-compat warning using
24633         lhs_origtype if necessary.
24634         (convert_for_assignment): Issue -Wc++-compat warnings about
24635         invalid conversions to enum type on assignment.
24636         * c-common.h (build_modify_expr): Update declaration.
24637
24638 2009-04-24  Nick Clifton  <nickc@redhat.com>
24639
24640         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
24641         (function_arg_advance): Likewise.
24642         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
24643         5th alternative.
24644
24645 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
24646
24647         * config/s390/constraints.md ('I', 'J'): Fix condition.
24648
24649 2009-04-24  Diego Novillo  <dnovillo@google.com>
24650
24651         * gengtype-parse.c (parse_error): Add newline after message.
24652
24653 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
24654
24655         * config/i386/sse.md (avxmodesuffixs): Removed.
24656         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
24657         (*avx_pinsr<ssevecsize>): This.
24658
24659 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
24660
24661         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
24662         follow chains of regs with a single definition, and allow expressions
24663         that are function_invariant_p.
24664         (simple_rhs_p): Allow expressions that are function_invariant_p.
24665
24666 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
24667
24668         PR middle-end/39867
24669         * fold-const.c (fold_cond_expr_with_comparison): When folding
24670         > and >= to MAX, make sure the MAX uses the same type as the
24671         comparison's operands.
24672
24673 2009-04-24  Nick Clifton  <nickc@redhat.com>
24674
24675         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
24676         addressing for DImode accesses.
24677         (frv_print_operand_address): Handle PLUS case.
24678         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
24679
24680 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
24681
24682         PR rtl-optimization/39794
24683         * alias.c (canon_true_dependence): Add x_addr argument.
24684         * rtl.h (canon_true_dependence): Adjust prototype.
24685         * cse.c (check_dependence): Adjust canon_true_dependence callers.
24686         * cselib.c (cselib_invalidate_mem): Likewise.
24687         * gcse.c (compute_transp): Likewise.
24688         * dse.c (scan_reads_nospill): Likewise.
24689         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
24690         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
24691         canon_base_addr of the group, plus optional offset.
24692         (struct group_info): Rename canon_base_mem to
24693         canon_base_addr.
24694         (get_group_info): Set canon_base_addr to canon_rtx of base, not
24695         canon_rtx of base_mem.
24696
24697 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
24698
24699         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
24700         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
24701
24702 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24703
24704         * config/spu/spu-builtins.h: Delete file.
24705
24706         * config/spu/spu.h (enum spu_builtin_type): Move here from
24707         spu-builtins.h.
24708         (struct spu_builtin_description): Likewise.  Add GTY marker.
24709         Do not use enum spu_function_code or enum insn_code.
24710         (spu_builtins): Add extern declaration.
24711
24712         * config/spu/spu.c: Do not include "spu-builtins.h".
24713         (enum spu_function_code, enum spu_builtin_type_index,
24714         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
24715         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
24716         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
24717         unsigned_V2DI_type_node): Move here from spu-builtins.h.
24718         (spu_builtin_types): Make static.  Add GTY marker.
24719         (spu_builtins): Add extern declaration with GTY marker.
24720         Include "gt-spu.h".
24721
24722         * config/spu/spu-c.c: Do not include "spu-builtins.h".
24723         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
24724         Check programmatically whether all parameters are scalar.
24725
24726         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
24727
24728 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
24729
24730         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
24731         assignment from the constructor either if the target is volatile.
24732
24733 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
24734
24735         * config/arm/arm.md (insv): Do not share operands[0].
24736
24737 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
24738
24739         * config/vxlib-tls.c (active_tls_threads): Delete.
24740         (delete_hook_installed): New.
24741         (tls_delete_hook): Don't delete the delete hook.
24742         (tls_destructor): Delete it here.
24743         (__gthread_set_specific): Adjust installing the delete hook.
24744         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
24745         __gthread_leave_tsd_dtor_context.
24746
24747 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
24748
24749         * c-format.c (gcc_tdiag_char_table): Add support for %E.
24750
24751 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
24752
24753         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
24754         enum type.
24755         (alpha_rtx_costs): Ditto.
24756         (emit_unlikely_jump): Use add_reg_note.
24757         (emit_frame_store_1): Ditto.
24758         (alpha_expand_prologue): Ditto.
24759         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24760         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
24761
24762 2009-04-23  Nick Clifton  <nickc@redhat.com>
24763
24764         * config/v850/v850.md (epilogue): Remove suppressed code.
24765         (return): Rename to return_simple and remove test of frame size.
24766         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
24767         to gen_return_simple.
24768
24769 2009-04-22  Jing Yu  <jingyu@google.com>
24770
24771         PR testsuite/39781
24772         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
24773
24774 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24775
24776         PR C/31499
24777         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
24778         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
24779         value is a VECTOR_CST, the element type is the element type of the
24780         vector.
24781
24782 2009-04-22  DJ Delorie  <dj@redhat.com>
24783
24784         * config/m32c/m32c.h: Update GTY annotations to new syntax.
24785
24786 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
24787
24788         * alias.c (find_base_term): Move around LO_SUM case, so that
24789         CONST falls through into PLUS/MINUS handling.
24790
24791         PR c/39855
24792         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
24793         into 0, use omit_one_operand.
24794
24795 2009-04-23  Ben Elliston  <bje@au.ibm.com>
24796
24797         * config/rs6000/linux-unwind.h (get_regs): Remove type
24798         puns. Change the type of `pc' to an array of unsigned ints and
24799         update all users.  Constify frame24.
24800
24801 2009-04-22  DJ Delorie  <dj@redhat.com>
24802
24803         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
24804         declarations before code.
24805         (current_function_special_page_vector): Likewise.
24806         (m32c_expand_insv): Silence a warning.
24807
24808 2009-04-21  Taras Glek  <tglek@mozilla.com>
24809
24810         * alias.c: Update GTY annotations to new syntax.
24811         * basic-block.h: Likewise.
24812         * bitmap.h: Likewise.
24813         * c-common.h: Likewise.
24814         * c-decl.c: Likewise.
24815         * c-parser.c: Likewise.
24816         * c-pragma.c: Likewise.
24817         * c-tree.h: Likewise.
24818         * cfgloop.h: Likewise.
24819         * cgraph.h: Likewise.
24820         * config/alpha/alpha.c: Likewise.
24821         * config/arm/arm.h: Likewise.
24822         * config/avr/avr.h: Likewise.
24823         * config/bfin/bfin.c: Likewise.
24824         * config/cris/cris.c: Likewise.
24825         * config/darwin.c: Likewise.
24826         * config/frv/frv.c: Likewise.
24827         * config/i386/i386.c: Likewise.
24828         * config/i386/i386.h: Likewise.
24829         * config/i386/winnt.c: Likewise.
24830         * config/ia64/ia64.h: Likewise.
24831         * config/iq2000/iq2000.c: Likewise.
24832         * config/mips/mips.c: Likewise.
24833         * config/mmix/mmix.h: Likewise.
24834         * config/pa/pa.c: Likewise.
24835         * config/pa/pa.h: Likewise.
24836         * config/rs6000/rs6000.c: Likewise.
24837         * config/s390/s390.c: Likewise.
24838         * config/sparc/sparc.c: Likewise.
24839         * config/xtensa/xtensa.c: Likewise.
24840         * cselib.h: Likewise.
24841         * dbxout.c: Likewise.
24842         * dwarf2out.c: Likewise.
24843         * except.c: Likewise.
24844         * except.h: Likewise.
24845         * fixed-value.h: Likewise.
24846         * function.c: Likewise.
24847         * function.h: Likewise.
24848         * gimple.h: Likewise.
24849         * integrate.c: Likewise.
24850         * optabs.c: Likewise.
24851         * output.h: Likewise.
24852         * real.h: Likewise.
24853         * rtl.h: Likewise.
24854         * stringpool.c: Likewise.
24855         * tree-data-ref.c: Likewise.
24856         * tree-flow.h: Likewise.
24857         * tree-scalar-evolution.c: Likewise.
24858         * tree-ssa-address.c: Likewise.
24859         * tree-ssa-alias.h: Likewise.
24860         * tree-ssa-operands.h: Likewise.
24861         * tree.c: Likewise.
24862         * tree.h: Likewise.
24863         * varasm.c: Likewise.
24864         * varray.h: Likewise.
24865         * vec.h: Likewise.
24866         * coretypes.h: Do not define GTY macro if it is already defined.
24867         * doc/gty.texi: Update GTY documentation to new syntax.
24868         * gengtype-lex.l: Enforce attribute-like syntax for GTY
24869         annotations on structs.
24870         * gengtype-parse.c: Likewise.
24871
24872 2009-04-22  Mark Heffernan  <meheff@google.com>
24873
24874         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
24875
24876 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
24877
24878         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
24879         where appropriate.
24880
24881 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
24882
24883         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
24884         the same as a PLUS without a shift.  Increase the cost of a
24885         CONST_INT in MULT.
24886
24887 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24888
24889         * Makefile.in: Update dependencies.
24890         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
24891         * errors.h: Remove bogus comment about compatibility.
24892         (warning): Update declaration.
24893         * genautomata.c: Update all calls to warning.
24894         * gimple.c: Do not include errors.h. Include toplev.h.
24895         * tree-ssa-structalias.c: Do not include errors.h.
24896         * omega.c: Likewise.
24897         * tree-ssa-reassoc.c: Likewise.
24898         * config/spu/spu-c.c: Likewise.
24899         * config/spu/t-spu-elf: Update dependencies.
24900
24901 2009-04-22  Richard Guenther  <rguenther@suse.de>
24902
24903         PR tree-optimization/39824
24904         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
24905         make sure the types are compatible.
24906
24907 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24908
24909         PR c++/14875
24910         * c-common.c (c_parse_error): Take a token_flags parameter.
24911         Use token_type for the token type instead.
24912         Pass token_flags to cpp_type2name.
24913         * c-common.h (c_parse_error): Update declaration.
24914         * c-parser.c (c_parser_error): Pass 0 as token flags.
24915
24916 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
24917
24918         PR rtl-optimization/39580
24919         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
24920
24921 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24922
24923         * function.c (expand_function_end): Do not emit a jump to the "naked"
24924         return label for fall-through returns.
24925         * except.c (sjlj_emit_function_exit): Always place the call to the
24926         unregister function at the location installed by expand_function_end.
24927
24928 2009-04-22  Richard Guenther  <rguenther@suse.de>
24929
24930         PR tree-optimization/39845
24931         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
24932         (gen_inbound_check): Likewise.
24933
24934 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
24935
24936         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
24937         padding for PPC.
24938         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
24939         * config/vxlib.c (__gthread_once): Add race guard for PPC.
24940
24941 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24942
24943         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
24944         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
24945         shift counts to avoid out-of-bounds array accesses.
24946
24947 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24948
24949         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
24950         (Pmode): Move above.
24951
24952 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
24953
24954         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
24955         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
24956         GET_CODE macro.  Use IN_RANGE macro where appropriate.
24957         * config/alpha/alpha.h: Ditto.
24958         * config/alpha/alpha.md: Ditto.
24959         * config/alpha/constraints.md: Ditto.
24960         * config/alpha/predicates.md: Ditto.
24961
24962 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24963
24964         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
24965         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24966         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24967         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24968         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24969         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24970         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24971         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24972         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24973         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24974         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24975         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24976         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24977         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24978         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24979         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24980         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24981         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24982         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24983         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24984         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24985         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24986         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24987         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24988         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24989         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24990         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24991
24992 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
24993
24994         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
24995         references from comments.
24996         * cfgbuild.c (count_basic_blocks): Delete.
24997         (find_basic_blocks_1): Delete.
24998         (find_basic_blocks): Delete.
24999         * except.c (finish_eh_generation): Make static.  Move comment from
25000         except.h here.  Remove find_basic_blocks references from comments.
25001         * except.h (finish_eh_generation): Delete.
25002         * basic-block.h (find_basic_blocks): Delete.
25003         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
25004
25005 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
25006
25007         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
25008         (sdbout_parms):  Likewise.
25009
25010 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
25011
25012         * config/sh/sh.c (prepare_cbranch_operands): Use
25013         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
25014         (expand_cbranchdi4): Likewise.
25015         (from_compare): Add cast to enum type.
25016         (expand_cbranchsi4): Use add_reg_note.
25017         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
25018         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
25019         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
25020         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25021         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
25022         instead of CODE_FOR_nothing.
25023         (cbranchdi4): Likewise.  Fix the order of arguments for
25024         gen_rtx_fmt_ee.
25025         (push_fpscr): Use add_reg_note.
25026         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
25027         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
25028
25029 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
25030
25031         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
25032         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
25033         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
25034         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
25035         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
25036         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
25037         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
25038         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
25039         config/alpha/x-vms, config/arc/t-arc,
25040         config/arm/README-interworking, config/arm/arm-c.c,
25041         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
25042         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
25043         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
25044         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
25045         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
25046         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
25047         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
25048         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
25049         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
25050         config/cris/t-elfmulti, config/crx/t-crx,
25051         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
25052         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
25053         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
25054         config/h8300/t-h8300, config/i386/athlon.md,
25055         config/i386/darwin-libgcc.10.4.ver,
25056         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
25057         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
25058         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
25059         config/i386/t-linux64, config/i386/t-nwld,
25060         config/i386/t-rtems-i386, config/i386/t-sol2-10,
25061         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
25062         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
25063         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
25064         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
25065         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
25066         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
25067         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
25068         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
25069         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
25070         config/m68k/t-uclinux, config/mcore/t-mcore,
25071         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
25072         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
25073         config/mips/crtn.asm, config/mips/irix-crti.asm,
25074         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
25075         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
25076         config/mips/mips-fixed.md, config/mips/sb1.md,
25077         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
25078         config/mips/t-iris6, config/mips/t-isa3264,
25079         config/mips/t-libgcc-mips16, config/mips/t-linux64,
25080         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
25081         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
25082         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
25083         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
25084         config/mn10300/t-linux, config/mn10300/t-mn10300,
25085         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
25086         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
25087         config/picochip/libgccExtras/clzsi2.asm,
25088         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
25089         config/rs6000/darwin-libgcc.10.4.ver,
25090         config/rs6000/darwin-libgcc.10.5.ver,
25091         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
25092         config/rs6000/t-aix43, config/rs6000/t-aix52,
25093         config/rs6000/t-darwin, config/rs6000/t-fprules,
25094         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
25095         config/rs6000/t-lynx, config/rs6000/t-netbsd,
25096         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
25097         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
25098         config/rs6000/t-rtems, config/rs6000/t-spe,
25099         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
25100         config/score/t-score-elf, config/sh/divcost-analysis,
25101         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
25102         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
25103         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
25104         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
25105         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
25106         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
25107         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
25108         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
25109         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
25110         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
25111         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
25112         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
25113         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
25114         limitx.h, version.c, xcoff.h: Add copyright and license notices.
25115         * config/h8300/genmova.sh: Include copyright and license notices
25116         in generated output.
25117         * config/h8300/mova.md: Regenerate.
25118         * doc/install.texi2html: Include word "Copyright" in copyright
25119         notice and use name "Free Software Foundation, Inc.".
25120         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
25121         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
25122         ChangeLog-2007, ChangeLog-2008: Correct dates.
25123
25124 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
25125
25126         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
25127         NE_EXPR operations as well.
25128         * c-parser.c (c_parser_condition): Do not set location information on
25129         the condition.
25130         (c_parser_conditional_expression): Likewise.
25131         (c_parser_binary_expression): Set location information on operators.
25132         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
25133         TRUTH_NOT_EXPR has been folded.
25134         * fold-const.c (fold_truth_not_expr): Copy location information from
25135         the incoming expression to the outgoing one.
25136         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
25137         recursive calls on the LHS of the operator but pass that of the
25138         operator to recursive calls on the RHS of the operator.  Set it
25139         on the COND_EXPR.
25140         (shortcut_cond_expr): Set the locus of the operator on the second
25141         COND_EXPR and that of the expression on the first in degenerate cases.
25142         Pass the locus of the expression to calls to shortcut_cond_r.
25143         Set the locus of the 'then' block on the associated jump, if any.
25144         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
25145         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
25146         expression to call to gimplify_boolean_expr.
25147
25148 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
25149
25150         * config.gcc: Add additional configuration for
25151         i686-w64-mingw* and x86_64-w64-mingw* triplet.
25152         * config/i386/mingw-w64.h: New mingw-w64 specific header.
25153         (CPP_SPEC): Redefine for allowing -municode option.
25154         (STARTFILE_SPEC): Likewise.
25155         * config/i386/t-mingw-w64: New.
25156         * config/i386/mingw-w64.opt: New.
25157         (municode): Add new target option.
25158         * doc/invoke.texi (municode): Add documentation for new option.
25159
25160 2009-04-21  Ian Lance Taylor  <iant@google.com>
25161
25162         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
25163         Correct test for number of arguments.
25164         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
25165
25166 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
25167
25168         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
25169         argument of emit_library_call.
25170
25171 2009-04-21  Richard Guenther  <rguenther@suse.de>
25172
25173         PR middle-end/39829
25174         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
25175         inside VIEW_CONVERT_EXPRs.
25176
25177 2009-04-21  Martin Jambor  <mjambor@suse.cz>
25178
25179         * tree-switch-conversion.c (build_constructors): Split a long line.
25180         (constructor_contains_same_values_p): New function.
25181         (build_one_array): Create assigns of constants if possible, do not
25182         call mark_sym_for_renaming, call update_stmt.
25183         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
25184         make_rename_temp.  Do not call mark_symbols_for_renaming, call
25185         update_stmt.
25186         (gen_def_assigns): Do not call mark_symbols_for_renaming or
25187         find_new_referenced_vars, call update_stmt.
25188         (gen_inbound_check): Use create_tmp_var and create ssa names manually
25189         instead of calling make_rename_temp.  Do not call
25190         find_new_referenced_vars or mark_symbols_for_renaming, call
25191         update_stmt.
25192
25193 2009-04-21  Richard Guenther  <rguenther@suse.de>
25194
25195         PR tree-optimization/39827
25196         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
25197         (tree_ssa_phiprop): Pass the correct array size.
25198
25199 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
25200
25201         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
25202
25203 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
25204
25205         PR 16202
25206         * c-typeck.c (lvalue_p): Move declaration ...
25207         * c-common.h (lvalue_p): ... to here.
25208         * c-common.c (candidate_equal_p): New.
25209         (add_tlist): Use it.
25210         (merge_tlist): Use it.
25211         (warn_for_collisions_1): Likewise.
25212         (warning_candidate_p): Accept more candidates.
25213         (verify_tree): A warning candidate can be an expression. Use
25214         candidate_equal_p.
25215
25216 2009-04-21  Ben Elliston  <bje@au.ibm.com>
25217
25218         PR target/5267
25219         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
25220         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
25221         options.  Remove -mcall-solaris documentation.
25222
25223 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25224
25225         PR c++/13358
25226         * doc/invoke.texi (-Wlong-long): Update description.
25227         * c-lex (interpret_integer): Only warn if there was no previous
25228         overflow and -Wlong-long is enabled.
25229         * c-decl.c (declspecs_add_type): Drop redundant flags.
25230         * c.opt (Wlong-long): Init to -1.
25231         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
25232         and front-end warn_long_long. Wlong-long only depends on other
25233         flags if it is uninitialized.
25234         * c-parser.c (disable_extension_diagnostics): warn_long_long is
25235         the same for CPP and FE.
25236         (restore_extension_diagnostics): Likewise.
25237
25238 2009-04-20  Ian Lance Taylor  <iant@google.com>
25239
25240         Fix enum conversions which are invalid in C++:
25241         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
25242         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
25243         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
25244         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
25245         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
25246         (dbxout_parms): Likewise.
25247         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
25248         (df_clear_flags): Likewise.
25249         * df-problems.c (df_rd_bb_local_compute_process_def): Change
25250         top_flag parameter to int.
25251         (df_chain_create_bb_process_use): Likewise.
25252         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
25253         Remove cast.
25254         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
25255         (df_ref_create_structure, df_def_record_1): Likewise.
25256         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
25257         (df_notes_rescan): Change 0 to VOIDmode in function call.
25258         (df_get_call_refs, df_insn_refs_collect): Likewise.
25259         (df_bb_regs_collect): Likewise.
25260         (df_entry_block_defs_collect): Likewise.
25261         (df_exit_block_uses_collect): Likewise.
25262         * df.h: Update declarations.
25263         * double-int.c (double_int_divmod): Add cast to enum type.
25264         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
25265         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
25266         (based_loc_descr): Likewise.
25267         (loc_descriptor_from_tree_1): Change first_op and second_op to
25268         enum dwarf_location_atom.  Add cast to enum type.
25269         * expmed.c (init_expmed): Change 0 to SET in function call.
25270         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
25271         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
25272         (do_store_flag): Likewise.
25273         * fixed-value.h (struct fixed_value): Change mode to enum
25274         machine_mode.
25275         * function.c (assign_parms): Change 0 to VOIDmode in function call.
25276         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
25277         function call.
25278         (insert_insn_decl, insert_decl, insert_state): Likewise.
25279         (automata_list_finish): Likewise.
25280         * genrecog.c (process_define_predicate): Add cast to enum type.
25281         * gensupport.c (init_predicate_table): Add cast to enum type.
25282         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
25283         function call.
25284         (gimple_build_call_1, gimple_build_label): Likewise.
25285         (gimple_build_goto, gimple_build_asm_1): Likewise.
25286         (gimple_build_switch_1, gimple_build_cdt): Likewise.
25287         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
25288         (enum fallback): Rename from enum fallback_t.
25289         (fallback_t): Typedef as int.
25290         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
25291         GSI_SAME_STMT in function call.
25292         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
25293         enum type.
25294         (setup_reg_class_relations): Likewise.
25295         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
25296         (setup_prohibited_class_mode_regs): Add cast to enum type.
25297         (setup_prohibited_mode_move_regs): Likewise.
25298         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
25299         (record_address_regs): Change i to enum reg_class.
25300         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
25301         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
25302         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
25303         (GET_MODE_2XWIDER_MODE): Likewise.
25304         (GET_CLASS_NARROWEST_MODE): Likewise.
25305         * omp-low.c (expand_omp_for): Add cast to enum type.
25306         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
25307         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
25308         * postreload.c (reload_cse_simplify_operands): Change rclass local
25309         to enum reg_class.
25310         * predict.c (combine_predictions_for_insn): Change best_predictor
25311         and predictor to enum br_predictor.
25312         (combine_predictions_for_bb): Likewise.
25313         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
25314         use SET_PREDICT_EXPR_OUTCOME.
25315         * real.c (real_arithmetic): Change icode to code in function call.
25316         * reginfo.c (init_move_cost): Add casts to enum type.
25317         (init_reg_sets_1, init_fake_stack_mems): Likewise.
25318         * regmove.c (regclass_compatible_p): Change class0 and class1 to
25319         enum reg_class.
25320         * reload.c (find_valid_class): Add casts to enum type.
25321         (push_reload): Change 0 to NO_REGS in function call.
25322         (find_reloads): Change this_alternative to array of enum
25323         reg_class.  Remove some now-unnecessary casts.
25324         (make_memloc): Change 0 to VOIDmode in function call.
25325         * reload1.c (reload): Change 0 to VOIDmode in function call.
25326         (eliminate_regs_1, elimination_effects): Likewise.
25327         (eliminate_regs_in_insn): Likewise.
25328         (emit_input_reload_insns): Add cast to enum type.
25329         (delete_output_reload): Change 0 to VOIDmode in function call.
25330         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
25331         to enum type in function call.
25332         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
25333         (SET_PREDICT_EXPR_OUTCOME): Define.
25334         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
25335         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
25336         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
25337         (dump_function): Likewise.
25338         * tree-dump.h: Update declarations.
25339         * tree-pass.h: Update declarations.
25340         * varasm.c (assemble_integer): Change mclass to enum mode_class.
25341         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
25342         enum type.
25343         (arm_rtx_costs_1): Correct parenthesization.
25344         (arm_rtx_costs): Add casts to enum type.
25345         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
25346         (vfp_emit_fstmd): Use add_rg_note.
25347         (emit_multi_reg_push, emit_sfm): Likewise.
25348         (thumb_set_frame_pointer): Likewise.
25349         (arm_expand_prologue): Likewise.
25350         (arm_regno_class): Change return type to enum reg_class.
25351         (thumb1_expand_prologue): Use add_reg_note.
25352         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
25353         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
25354         in function call.
25355         * config/arm/gentune.sh: Add cast to enum type.
25356         * config/arm/arm-tune.md: Rebuild.
25357         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
25358         (ix86_split_fp_branch, predict_jump): Likewise.
25359         (ix86_expand_multi_arg_builtin): Change sub_code from enum
25360         insn_code to enum rtx_code.
25361         (ix86_builtin_vectorized_function): Add cast to enum type.
25362         * config/i386/i386.md (truncdfsf2): Change slot to enum
25363         ix86_stack_slot.
25364         (truncxf<mode>2, isinf<mode>2): Likewise.
25365         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
25366         enum type.
25367         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
25368         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
25369         (insert_bundle_state): Change 1 to INSERT in function call.
25370         (ia64_add_bundle_selector_before): Likewise.
25371         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
25372         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
25373         (restore_stack_nonlocal): Likewise.
25374         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
25375         function call.
25376         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
25377         function call.
25378         (mips_rtx_costs): Likewise.
25379         (mips_override_options): Add casts to enum type.
25380         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
25381         in function call.
25382         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
25383         (store_reg, set_reg_plus_d): Likewise.
25384         (hppa_expand_prologue, hppa_profile_hook): Likewise.
25385         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
25386         cast to enum type.
25387         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
25388         function call.
25389         (emit_unlikely_jump): Use add_reg_note.
25390         (rs6000_emit_allocate_stack): Likewise.
25391         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
25392         (output_toc): Change 1 to INSERT in function call.
25393         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
25394         (rs6000_initialize_trampoline): Likewise.
25395         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
25396         function call.
25397         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
25398         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
25399         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
25400         (save_gprs): Use add_reg_note.
25401         (s390_emit_prologue): Likewise.
25402         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25403         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
25404         (sparc_fold_builtin): Add cast to enum type.
25405         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
25406         enum insn_code.
25407         (spu_expand_prologue): Use add_reg_note.
25408         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
25409
25410 2009-04-20  Ian Lance Taylor  <iant@google.com>
25411
25412         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
25413         (c_parser_postfix_expression_after_primary): Get VEC for list of
25414         arguments.  Get original types of arguments.  Call
25415         build_function_call_vec.
25416         (cached_expr_list_1, cached_expr_list_2): New static variables.
25417         (c_parser_expr_list): Change return type to VEC *.  Add
25418         p_orig_types parameter.  Change all callers.
25419         (c_parser_release_expr): New static function.
25420         (c_parser_vec_to_tree_list): New static function.
25421         * c-typeck.c (build_function_call): Rewrite to build a VEC and
25422         call build_function_call_vec.
25423         (build_function_call_vec): New function, based on old
25424         build_function_call.
25425         (convert_arguments): Remove nargs and argarray parameters.  Change
25426         values to a VEC.  Add origtypes parameter.
25427         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
25428         (convert_for_assignment): Add origtype parameter.  Change all
25429         callers.  If warn_cxx_compat, check for conversion to an enum
25430         type when calling a function.
25431         (store_init_value): Add origtype parameter.  Change all callers.
25432         (digest_init): Likewise.
25433         (struct init_node): Add origtype field.
25434         (add_pending_init): Add origtype parameter.  Change all callers.
25435         (output_init_element): Likewise.
25436         (output_pending_init_elements): Pass origtype from init_node to
25437         output_init_element.
25438         (process_init_element): Pass origtype from c_expr to
25439         output_init_element.
25440         (c_finish_return): Add origtype parameter.  Change all callers.
25441         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
25442         caller.
25443         (sync_resolve_params): Likewise.
25444         (sync_resolve_return): Change params to first_param.  Change caller.
25445         (resolve_overloaded_builtins): Change params to VEC *.  Change
25446         callers.  Save first parameter around call to build_function_call_vec.
25447         * c-decl.c (finish_decl): Add origtype parameter.  Change all
25448         callers.  Call build_function_call_vec rather than
25449         build_function_call for cleanup.
25450         * c-tree.h: Update declarations.
25451         * c-common.h: Update declarations.
25452         * stub-objc.c (objc_rewrite_function_call): Change parameter from
25453         params to first_param.
25454         * target.h (struct gcc_target): Change resolve_overloaded_builtin
25455         params parameter from tree to void *.
25456         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
25457         Change arglist parameter to have type void *, and to be a pointer
25458         to a VEC.
25459         * config/rs6000/rs6000-protos.h
25460         (altivec_resolve_overloaded_builtin): Update declaration.
25461         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
25462         fnargs parameter to have type void *, and to be a pointer to a
25463         VEC.  Call build_function_call_vec instead of
25464         build_function_call.
25465         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
25466
25467 2009-04-20  Joey Ye  <joey.ye@intel.com>
25468             Xuepeng Guo  <xuepeng.guo@intel.com>
25469             H.J. Lu  <hongjiu.lu@intel.com>
25470
25471         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
25472
25473         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
25474         (IX86_LEA_PRIORITY): Likewise.
25475         (distance_non_agu_define): New function.
25476         (distance_agu_use): Likewise.
25477         (ix86_lea_for_add_ok): Likewise.
25478         (ix86_dep_by_shift_count): Likewise.
25479
25480         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
25481         should split for LEA.
25482
25483         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
25484         function.
25485         (ix86_dep_by_shift_count): Likewise.
25486
25487 2009-04-20  Richard Guenther  <rguenther@suse.de>
25488
25489         * expr.c (handled_component_p): Move ...
25490         * tree.h (handled_component_p): ... here.
25491         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
25492         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
25493         and REALPART_EXPR to be in one group.
25494
25495 2009-04-20  Richard Guenther  <rguenther@suse.de>
25496
25497         * basic-block.h (get_all_dominated_blocks): Declare.
25498         * dominance.c (get_all_dominated_blocks): New function.
25499         * tree-cfg.c (get_all_dominated_blocks): Remove.
25500         (remove_edge_and_dominated_blocks): Adjust.
25501         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
25502         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
25503         instead of recursing.
25504
25505 2009-04-20  Doug Kwan  <dougkwan@google.com>
25506
25507         * cgraph.h (cgraph_node_ptr): New type for vector functions.
25508         (struct cgraph_node_set_def): New type.
25509         (cgraph_node_set) New type. Also declare vector functions.
25510         (struct cgraph_node_set_element_def): New type.
25511         (cgraph_node_set_element): Ditto.
25512         (cgraph_node_set_iterator): New iterator type.
25513         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
25514         cgraph_node_set_remove, dump_cgraph_node_set,
25515         debug_cgraph_node_set): New prototypes.
25516         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
25517         cgraph_node_set_size): New inlines.
25518         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
25519         including cgraph.h.
25520         (struct ipa_opt_pass): Add struct cgraph_node_set_def
25521         argument to function 'write_summary'.
25522         * ipa.c: Include ggc.h.
25523         (hash_cgraph_node_set_element,
25524         eq_cgraph_node_set_element, cgraph_node_set_new,
25525         cgraph_node_set_add, cgraph_node_set_remove,
25526         cgraph_node_set_find, dump_cgraph_node_set,
25527         debug_cgraph_node_set): New functions.
25528         * Makefile.in (ipa.o): Add dependency on GGC_H.
25529
25530 2009-04-20  Ira Rosen  <irar@il.ibm.com>
25531
25532         PR tree-optimization/39675
25533         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
25534         check of the return code of vect_schedule_slp. Check that
25535         stmt_vec_info still exists for the statement, before checking its
25536         vectorization type.
25537
25538 2009-04-20  Michael Matz  <matz@suse.de>
25539
25540         * Makefile.in (generated_files): Take out $(simple_generated_c).
25541
25542 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
25543
25544         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
25545         (UINTPTR_TYPE):  Likewise.
25546
25547 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
25548
25549         PR c/37481
25550         * c-typeck.c (digest_init): Check for initializing an array with a
25551         string literal.
25552
25553 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
25554
25555         PR c/19771
25556         * c-semantics.c (pop_stmt_list): Propagate
25557         STATEMENT_LIST_HAS_LABEL to parent statement list.
25558
25559 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
25560
25561         * config/mips/mips.h (mips_tune_attr): New macro.
25562         * config/mips/mips.md (cpu): Use it.
25563
25564 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
25565
25566         PR c/38243
25567         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
25568         declaring a tag.
25569
25570 2009-04-19  Diego Novillo  <dnovillo@google.com>
25571
25572         * toplev.c (compile_file): Move call to coverage_finish ...
25573         * cgraphunit.c (ipa_passes): ... here.
25574         Call cgraph_process_new_functions.
25575         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
25576         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
25577
25578 2009-04-19  Jan Hubicka  <jh@suse.cz>
25579
25580         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
25581         cfun.
25582         (dump_cgraph_node): Dump can throw external flag.
25583         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
25584
25585 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
25586
25587         PR c/32061
25588         PR c++/36954
25589         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
25590         * common.opt (Wlogical-op): Move from here...
25591         * c.opt (Wlogical-op): ... to here.
25592         * c-typeck.c (parser_build_binary_op): Update call to
25593         warn_logical_operator.
25594         * c-opts.c (c_common_post_options): Enable warn_logical_op with
25595         extra_warnings.
25596         * c-common.c (warn_logical_op): Update.
25597         * c-common.h (warn_logical_op): Update declaration.
25598
25599 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
25600
25601         * tree.c (protected_set_expr_location): Fix formatting.
25602
25603 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
25604
25605         PR c/27676
25606         * c-typeck.c (readonly_warning): new.
25607         (build_unary_op, build_modify_expr): Use readonly_warning for
25608         storing into something readonly but not const-qualified.
25609
25610 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
25611
25612         PR c/22367
25613         * c-typeck.c (build_unary_op): Check for taking address of
25614         expression of type void.
25615
25616 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
25617
25618         PR c/35210
25619         * c-typeck.c (build_function_call): Check for calling a function
25620         with qualified void return types.  Call require_complete_type when
25621         generating a trap.
25622
25623 2009-04-18  Jan Hubicka  <jh@suse.cz>
25624
25625         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
25626         Set nothrow flag.
25627         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
25628         can_throw_external flag.
25629         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
25630         * ipa-pure-const.c (ignore_edge): New function.
25631         (propagate): Compute order for NOTHROW computation; set NOTHROWs
25632         only over can_throw_external edges.
25633         (local_pure_const): Add nothrow flag.
25634         * ipa-utils.c (searchc): Add ignore_edge callback.
25635         (ipa_utils_reduced_inorder): Add ignore_edge callback.
25636         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
25637         (set_nothrow_function_flags): Update cgraph.
25638         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
25639
25640 2009-04-18  Richard Guenther  <rguenther@suse.de>
25641
25642         PR middle-end/39804
25643         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
25644         (fold_stmt): ... this and ...
25645         (fold_stmt_inplace): ... this.
25646         (fold_stmt_1): Fold references in calls and asms.
25647         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
25648
25649 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25650
25651         * tree-vrp.c (ssa_name_nonzero_p): Remove.
25652         * tree.h: Remove the prototype for ssa_name_nonzero_p.
25653
25654 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25655
25656         * tree.c (function_args_count): Remove.
25657         * tree.h: Remove the prototype for function_args_count.
25658
25659 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25660
25661         * tree-iterator.c (expr_only): Remove.
25662         * tree.h: Remove the prototype for expr_only.
25663
25664 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25665
25666         * reginfo.c (cannot_change_mode_set_regs): Remove.
25667         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
25668
25669 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
25670
25671         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
25672         whether operands 0 and 1 overlaps.
25673
25674 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
25675
25676         PR middle-end/36902
25677         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
25678         pointer. Use warning_at instead of warning.
25679         (search_for_addr_array): Likewise.
25680         (check_array_bounds): Likewise.
25681         (check_all_array_refs): Check that the incoming edge is not in the
25682         list of edges to be removed.
25683         (check_all_array_refs): Avoid the temporal pointer.
25684         (vrp_visit_cond_stmt): Fix typo.
25685         (simplify_switch_using_ranges): Handle the case where the switch
25686         index is an integer constant.
25687
25688 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
25689
25690         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
25691
25692 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25693
25694         * doc/extend.texi, doc/invoke.texi: Fix typos.
25695
25696 2009-04-17  Cary Coutant  <ccoutant@google.com>
25697
25698         * tree-flow-inline.h (get_lineno): Fix inverted test.
25699
25700 2009-04-17  Diego Novillo  <dnovillo@google.com>
25701
25702         * tree-ssa-pre.c (create_expression_by_pieces): Remove
25703         assertion for AVAIL_OUT.
25704
25705 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
25706
25707         PR target/38627
25708         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
25709         * config/sh/linux-atomic.asm: Likewise.
25710
25711 2009-04-17  Diego Novillo  <dnovillo@google.com>
25712
25713         * except.c (debug_eh_tree): New.
25714         (struct eh_region, struct eh_status): Move ...
25715         * except.h: ... here.
25716         (add_type_for_runtime): Declare extern.
25717         (lookup_type_for_runtime): Likewise.
25718         (debug_eh_tree): Declare.
25719         * Makefile.in (GTFILES): List except.h before except.c
25720
25721 2009-04-17  Diego Novillo  <dnovillo@google.com>
25722
25723         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
25724         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
25725         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
25726         (find_vars_r): ... here.
25727         * tree-flow.h (find_referenced_vars_in): Declare.
25728         * tree-ssa-pre.c (create_expression_by_pieces): Assert
25729         that AVAIL_OUT exists for BLOCK.
25730         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
25731         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
25732         (tree-parloops.o): Likewise.
25733
25734 2009-04-17  Simon Baldwin  <simonb@google.com>
25735
25736         * toplev.c (default_tree_printer): Add handling for %E format.
25737
25738 2009-04-17  Diego Novillo  <dnovillo@google.com>
25739
25740         * tree-pretty-print.c (dump_generic_node): Add break after
25741         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
25742         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
25743         FUNCTION_TYPE together.  Call print_struct_decl when printing
25744         structures and TDF_SLIM is not given.
25745         (print_struct_decl): Fix logic for detecting recursion.
25746
25747 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
25748
25749         PR 31567
25750         * gcc.c (create_at_file): New.
25751         (compile_input_file_p): New.
25752         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
25753         * main.c (main): Update call to toplev_main.
25754         * toplev.c (toplev_main): Change signature. Call expandargv.
25755         * toplev.h (toplev_main): Change signature.
25756
25757 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
25758
25759         * dwarf2out.c (field_byte_offset): Use the type size as the field size
25760         if the latter is not constant.
25761
25762 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
25763
25764         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
25765
25766 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
25767
25768         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
25769         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
25770
25771 2009-04-17  Richard Guenther  <rguenther@suse.de>
25772
25773         * tree-ssa-structalias.c (get_constraint_for_component_ref):
25774         Handle component references view-converting an invariant address.
25775
25776 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
25777
25778         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
25779         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
25780         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
25781         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
25782         Use @deftypevr rather than @deftypevar.
25783
25784 2009-04-17  Richard Guenther  <rguenther@suse.de>
25785
25786         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
25787         (get_prop_source_stmt): Likewise.
25788         (can_propagate_from): Likewise.
25789
25790 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
25791
25792         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
25793         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
25794         (--with-multilib-list): Add default value.
25795         * configure: Regenerate.
25796         * Makefile.in (TM_ENDIAN_CONFIG): Define.
25797         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
25798         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
25799         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
25800         Don't add default cpu to multilib list unnecessarily, but do enable
25801         the relevant compiler option..
25802         Add support for --with-multilib-list=<blank> and
25803         --with-multilib-list=!<somelib> to supress unwanted multilibs.
25804         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
25805         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
25806         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
25807         TM_MULTILIB_CONFIG.
25808         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
25809         (MULTILIB_OSDIRNAMES): New variable.
25810         * config/sh/t-1e: Delete file.
25811         * config/sh/t-mlib-sh1: Delete file.
25812         * config/sh/t-mlib-sh2: Delete file.
25813         * config/sh/t-mlib-sh2a: Delete file.
25814         * config/sh/t-mlib-sh2a-nofpu: Delete file.
25815         * config/sh/t-mlib-sh2a-single: Delete file.
25816         * config/sh/t-mlib-sh2a-single-only: Delete file.
25817         * config/sh/t-mlib-sh2e: Delete file.
25818         * config/sh/t-mlib-sh3e: Delete file.
25819         * config/sh/t-mlib-sh4: Delete file.
25820         * config/sh/t-mlib-sh4-nofpu: Delete file.
25821         * config/sh/t-mlib-sh4-single: Delete file.
25822         * config/sh/t-mlib-sh4-single-only: Delete file.
25823         * config/sh/t-mlib-sh4a: Delete file.
25824         * config/sh/t-mlib-sh4a-nofpu: Delete file.
25825         * config/sh/t-mlib-sh4a-single: Delete file.
25826         * config/sh/t-mlib-sh4a-single-only: Delete file.
25827         * config/sh/t-mlib-sh4al: Delete file.
25828         * config/sh/t-mlib-sh5-32media: Delete file.
25829         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
25830         * config/sh/t-mlib-sh5-64media: Delete file.
25831         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
25832         * config/sh/t-mlib-sh5-compact: Delete file.
25833         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
25834         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
25835         * doc/install.texi (Options specification): Add
25836         --with-multilib-list and --with-endian.
25837
25838 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
25839
25840         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
25841         REVISION_c.
25842         (OBJS-common): Add plugin-version.o.
25843         (plugin-version.o): New.
25844         * gcc-plugin.h (plugin_gcc_version): New.
25845         (plugin_default_version_check): New.
25846         (plugin_init_func, plugin_init): Add version argument.
25847         * plugin-version.c: New.
25848         * plugin.c (str_plugin_gcc_version_name): New.
25849         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
25850         pass it to the init function.
25851         (plugin_default_version_check): New.
25852
25853 2009-04-17  Richard Guenther  <rguenther@suse.de>
25854
25855         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
25856         for decl-vs-decl disambiguation.
25857
25858 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
25859
25860         * config/s390/s390.h (s390_tune_attr): New macro definition.
25861         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
25862
25863 2009-04-17  Richard Guenther  <rguenther@suse.de>
25864
25865         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
25866         (fold_stmt_r): Likewise.
25867         (maybe_fold_reference): New function.
25868         (fold_gimple_assign): Handle cases fold_stmt_r did.
25869         (fold_stmt): Do not use fold_stmt_r.
25870         (fold_stmt_inplace): Likewise.
25871
25872 2009-04-17  Richard Guenther  <rguenther@suse.de>
25873
25874         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
25875         (record_equivalences_from_stmt): Remove useless checks and
25876         simplifications.
25877         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
25878         the type is already suitable.
25879
25880 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
25881
25882         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
25883
25884 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
25885
25886         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
25887         (CMPtype): Define as __gcc_CMPtype.
25888
25889 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
25890
25891         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
25892         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
25893
25894 2009-04-17  Richard Guenther  <rguenther@suse.de>
25895
25896         PR tree-optimization/39746
25897         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
25898         special-casing for builtins and static variable use/def.
25899         (call_may_clobber_ref_p_1): Likewise.
25900
25901 2009-04-16  Ian Lance Taylor  <iant@google.com>
25902
25903         * df.h: Include "timevar.h".
25904         (struct df_problem): Change tv_id field to timevar_id_t.
25905         * tree-pass.h: Include "timevar.h".
25906         (struct opt_pass): Change tv_id field to timevar_id_t.
25907         * timevar.h (timevar_id_t): Define TV_NONE.
25908         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
25909         TV_NONE rather than tv_id != 0.
25910         (execute_one_pass): Likewise.
25911         * Makefile.in (DF_H): Add $(TIMEVAR_H).
25912         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
25913         dependencies to $(TREE_PASS_H).
25914         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
25915         to TV_NONE.
25916         (pass_branch_target_load_optimize2): Likewise.
25917         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
25918         (pass_outof_cfg_layout_mode): Likewise.
25919         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
25920         (pass_rebuild_cgraph_edges): Likewise.
25921         (pass_remove_cgraph_callee_edges): Likewise.
25922         * df-core.c (pass_df_initialize_opt): Likewise.
25923         (pass_df_initialize_no_opt): Likewise.
25924         (pass_df_finish): Likewise.
25925         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
25926         * except.c (pass_set_nothrow_function_flags): Likewise.
25927         (pass_convert_to_eh_region_ranges): Likewise.
25928         * final.c (pass_compute_alignments): Likewise.
25929         * function.c (pass_instantiate_virtual_regs): Likewise.
25930         (pass_init_function): Likewise.
25931         (pass_leaf_regs): Likewise.
25932         (pass_match_asm_constraints): Likewise.
25933         * gimple-low.c (pass_lower_cf): Likewise.
25934         (pass_mark_used_blocks): Likewise.
25935         * init-regs.c (pass_initialize_regs): Likewise.
25936         * integrate.c (pass_initial_value_sets): Likewise.
25937         * ira.c (pass_ira): Likewise.
25938         * jump.c (pass_cleanup_barriers): Likewise.
25939         * omp-low.c (pass_expand_omp): Likewise.
25940         (pass_lower_omp): Likewise.
25941         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
25942         * recog.c (pass_split_all_insns): Likewise.
25943         (pass_split_after_reload): Likewise.
25944         (pass_split_before_regstack): Likewise.
25945         (pass_split_before_sched2): Likewise.
25946         (pass_split_for_shorten_branches): Likewise.
25947         * reginfo.c (pass_reginfo_init): Likewise.
25948         (pass_subregs_of_mode_init): Likewise.
25949         (pass_subregs_of_mode_finish): Likewise.
25950         * passes.c (pass_postreload): Likewise.
25951         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
25952         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
25953         (pass_warn_function_return): Likewise.
25954         (pass_warn_function_noreturn): Likewise.
25955         * tree-complex.c (pass_lower_complex): Likewise.
25956         (pass_lower_complex_O0): Likewise.
25957         * tree-if-conv.c (pass_if_conversion): Likewise.
25958         * tree-into-ssa.c (pass_build_ssa): Likewise.
25959         * tree-mudflap.c (pass_mudflap_1): Likewise.
25960         (pass_mudflap_2): Likewise.
25961         * tree-nomudflap.c (pass_mudflap_1): Likewise.
25962         (pass_mudflap_2): Likewise.
25963         * tree-nrv.c (pass_return_slot): Likewise.
25964         * tree-object-size.c (pass_object_sizes): Likewise.
25965         * tree-optimize.c (pass_all_optimizations): Likewise.
25966         (pass_early_local_passes): Likewise.
25967         (pass_all_early_optimizations): Likewise.
25968         (pass_cleanup_cfg): Likewise.
25969         (pass_cleanup_cfg_post_optimizing): Likewise.
25970         (pass_free_datastructures): Likewise.
25971         (pass_free_cfg_annotations): Likewise.
25972         (pass_fixup_cfg): Likewise.
25973         (pass_init_datastructures): Likewise.
25974         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
25975         (pass_late_warn_uninitialized): Likewise.
25976         (pass_update_address_taken): Likewise.
25977         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
25978         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
25979         (pass_cse_sincos): Likewise.
25980         (pass_convert_to_rsqrt): Likewise.
25981         * tree-ssa-structalias.c (pass_build_alias): Likewise.
25982         * tree-stdarg.c (pass_stdarg): Likewise.
25983         * tree-tailcall.c (pass_tail_recursion): Likewise.
25984         (pass_tail_calls): Likewise.
25985         * tree-vect-generic.c (pass_lower_vector): Likewise.
25986         (pass_lower_vector_ssa): Likewise.
25987         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
25988
25989 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
25990
25991         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
25992         XLR entry.
25993         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
25994         Handle -march=xlr.
25995         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
25996         logical and signext.
25997
25998 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
25999
26000         PR target/39767
26001         * config/sh/predicates.md (arith_operand): Check if the operand
26002         of TRUNCATE is a REG.
26003
26004 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26005
26006         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
26007         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
26008
26009 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26010
26011         * tree-iterator.c (tsi_split_statement_list_after,
26012         tsi_split_statement_list_before): Remove.
26013         * tree-iterator.h: Remove the prototypes for
26014         tsi_split_statement_list_after and tsi_split_statement_list_before.
26015
26016 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26017
26018         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
26019         * tree-ssa-propagate.h: Remove the prototype for
26020         stmt_makes_single_load.
26021
26022 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26023
26024         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
26025         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
26026
26027 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26028
26029         * tree-iterator.c (EXPR_LAST_BODY): Remove.
26030
26031 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26032
26033         * except.c (eh_region_outer_p): Remove.
26034         * except.h: Remove the prototype for eh_region_outer_p.
26035
26036 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26037
26038         * function.c (current_function_assembler_name): Remove.
26039         * function.h: Remove the prototype for
26040         current_function_assembler_name.
26041
26042 2009-04-16  Ian Lance Taylor  <iant@google.com>
26043
26044         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
26045         (add_reg_note): Call alloc_reg_note.
26046         * rtl.h (alloc_reg_note): Declare.
26047         * combine.c (try_combine): Use alloc_reg_note.
26048         (recog_for_combine, move_deaths): Likewise.
26049         (distribute_notes): Use alloc_reg_note and add_reg_note.
26050         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
26051         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
26052         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
26053
26054 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
26055
26056         PR rtl-optimization/39762
26057         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
26058         ira_may_move_out_cost): Add comments about way of their usage.
26059         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
26060
26061         * ira-conflicts.c (process_regs_for_copy): Use function
26062         ira_get_register_move_cost instead of global
26063         ira_register_move_cost.
26064
26065         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
26066         color_pass, move_spill_restore, update_curr_costs): Ditto.
26067
26068         * ira-lives.c (process_single_reg_class_operands): Ditto.
26069
26070         * ira-emit.c (emit_move_list): Ditto.
26071
26072         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
26073         (record_reg_classes): Ditto.  Use functions
26074         ira_get_register_move_cost and ira_get_may_move_cost instead of
26075         global vars ira_register_move_cost, ira_may_move_out_cost and
26076         ira_may_move_in_cost.
26077         (record_address_regs): Don't call ira_init_register_move_cost.
26078         Use function ira_get_may_move_cost instead of global
26079         ira_may_move_in_cost.
26080         (process_bb_node_for_hard_reg_moves): Use function
26081         ira_get_register_move_cost instead of global ira_register_move_cost.
26082         (ira_costs): Don't call ira_init_register_move_cost.
26083
26084 2009-04-16  Richard Guenther  <rguenther@suse.de>
26085
26086         * tree-cfg.c (verify_gimple_assign_binary):
26087         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
26088         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
26089         (create_general_new_stmt): Note that this function is broken.
26090
26091 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26092
26093         * common.opt (fhelp): Add Var(help_flag).
26094         * gcc-plugin.h (plugin_info): Add help.
26095         * plugin.c (plugin_name_args): Add help.
26096         (register_plugin_info): Set plugin->help.
26097         (print_help_one_plugin): New.
26098         (print_plugins_help): New.
26099         * plugin.h (print_plugins_help): New.
26100         * toplev.c (toplev_main): Call print_plugins_help if needed.
26101
26102 2009-04-16  Richard Guenther  <rguenther@suse.de>
26103
26104         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
26105         (gimple_ior_addresses_taken_1): New function.
26106         (gimple_ior_addresses_taken): Likewise.
26107         * gimple.h (struct gimple_statement_with_ops_base): Remove
26108         addresses_taken member.
26109         (gimple_ior_addresses_taken): Declare.
26110         (gimple_addresses_taken, gimple_addresses_taken_ptr,
26111         gimple_set_addresses_taken): Remove.
26112         * ipa-reference.c (mark_address): New function.
26113         (scan_stmt_for_static_refs): Use it for marking addresses taken.
26114         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
26115         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
26116         (gimple_add_to_addresses_taken): Remove.
26117         (get_tmr_operands): Call mark_address_taken.
26118         (get_asm_expr_operands): Likewise.
26119         (get_expr_operands): Likewise.
26120         (build_ssa_operands): Do not clear the addresses_taken bitmap.
26121         (free_stmt_operands): Do not free it.
26122         * tree-ssa.c (delete_tree_ssa): Likewise.
26123         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
26124
26125 2009-04-16  Richard Guenther  <rguenther@suse.de>
26126
26127         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
26128         (walk_stmt_load_store_ops): Likewise.
26129         * gimple.c (get_base_loadstore): New function.
26130         (walk_stmt_load_store_addr_ops): Likewise.
26131         (walk_stmt_load_store_ops): Likewise.
26132         * ipa-pure-const.c (check_op): Simplify.
26133         (check_load, check_store): New functions.
26134         (check_stmt): Use walk_stmt_load_store_ops.
26135         * ipa-reference.c (mark_load): Adjust signature.
26136         (mark_store): Likewise.
26137         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
26138
26139 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26140
26141         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
26142         (plugin_info): New.
26143         * opts.c (common_handle_option): Don't call print_version.
26144         * plugin.c (plugin_name_args): Add version.
26145         (register_plugin_info): New.
26146         (register_callback): Handle PLUGIN_INFO.
26147         (try_init_one_plugin): New.
26148         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
26149         if failed to init.
26150         (finalize_one_plugin): New.
26151         (finalize_plugins): New.
26152         (print_one_plugin): New.
26153         (print_plugins_versions): New.
26154         * plugin.h (print_plugins_versions): New.
26155         (finalize_plugins): New.
26156         * toplev.c (compile_file): Don't call initialize_plugins.
26157         (print_version): Call print_plugins_versions.
26158         (toplev_main): Call initialize_plugins. Print version if needed.
26159         Call finalize_plugins.
26160
26161 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26162
26163         * common.opt (fversion): New.
26164         * gcc.c (print_version): New.
26165         (process_command): Don't print the version. Just set print_version.
26166         (main): Print version. Call subprocesses if print_version and
26167         verbose_flag are set.
26168         * opts.c (common_handle_option): Handle OPT_fversion.
26169
26170 2009-04-16  Richard Guenther  <rguenther@suse.de>
26171             Ira Rosen  <irar@il.ibm.com>
26172
26173         PR tree-optimization/39698
26174         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
26175         type of the reduction variable.  Only generate the def if
26176         it is needed.
26177
26178         * omp-low.c (expand_omp_for_generic): When converting to a pointer
26179         make sure to first convert to an integer of the same precision.
26180         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
26181         the type of the evolution correctly in computing the new
26182         induction variable base.
26183
26184 2009-04-16  Richard Guenther  <rguenther@suse.de>
26185
26186         PR middle-end/39625
26187         * tree-cfg.c (make_blocks): Split statements with to-be
26188         abnormal SSA names on the lhs.
26189
26190 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
26191
26192         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
26193         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
26194         * c-typeck.c (really_start_incremental_init): Likewise.
26195         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
26196         (TARGET_INITIALIZER): Remove it.
26197         * target.h (struct target): Remove vector_opaque_p.
26198         * tree.c (build_opaque_vector_type): New.
26199         * tree.h (TYPE_VECTOR_OPAQUE): New.
26200         (build_opaque_vector_type): Declare.
26201         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
26202         * config/rs6000/rs6000.c (build_opaque_vector_type,
26203         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
26204         (rs6000_init_builtins): Use build_opaque_vector_type for
26205         opaque_V4SI_type_node.
26206
26207 2009-04-15  Catherine Moore  <clm@codesourcery.com>
26208
26209         * debug.h (set_name):  Declare.
26210         * dwarf2out.c (dwarf2out_set_name): Declare.
26211         (dwarf2_debug_hooks): Add set_name.
26212         (find_AT_string): New.
26213         (add_AT_string): Call find_AT_string.
26214         (dwarf2out_set_name): New.
26215         * cp/decl.c (grokdeclarator): Call set_name.
26216         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
26217         * debug.c (do_nothing_debug_hooks):  Likewise.
26218         * dbxout.c (dbx_debug_hooks): Likewise.
26219         * sdbout.c (sdb_debug_hooks): Likewise.
26220
26221 2009-04-15  Michael Eager  <eager@eagercon.com>
26222
26223         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
26224         reg for single-precision FPU.
26225         * config/rs6000/rs6000.md (movsi_internal1): Only for
26226         !TARGET_SINGLE_FPU.
26227         (movsi_internal1_single): New. Add pattern to move SI values to/from
26228         single-precision FP regs.
26229
26230 2009-04-15  Richard Guenther  <rguenther@suse.de>
26231
26232         * omp-low.c (lower_rec_input_clauses): Build correct address
26233         expressions.
26234         (expand_omp_for_generic): Fix multiplication type.
26235         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
26236         (generate_memset_zero): Fix types.
26237         * tree-profile.c (prepare_instrumented_value): Correctly
26238         widen a pointer.
26239
26240 2009-04-15  Ian Lance Taylor  <iant@google.com>
26241
26242         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
26243         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
26244         for -Wall and for -Wc++-compat.
26245         (c_common_post_options): For C++, set warn_enum_compare if not
26246         already set.
26247         * c-tree.h (struct c_expr): Add field original_type.
26248         (build_external_ref): Update declaration.
26249         * c-parser.c (c_parser_braced_init): Set original_type.
26250         (c_parser_initelt): Likewise.
26251         (c_parser_expr_no_commas): Likewise.
26252         (c_parser_conditional_expression): Likewise.
26253         (c_parser_cast_expression): Likewise.
26254         (c_parser_unary_expression): Likewise.  Pull setting of
26255         original_code to top of function.
26256         (c_parser_sizeof_expression): Set original_type.
26257         (c_parser_alignof_expression): Likewise.
26258         (c_parser_postfix_expression): Likewise.  Pull setting of
26259         original_code to top of function.
26260         (c_parser_postfix_expression_after_paren_type): Set original_type.
26261         (c_parser_postfix_expression_after_primary): Likewise.
26262         (c_parser_expression): Likewise.
26263         * c-typeck.c (build_external_ref): Add type parameter.  Change all
26264         callers.
26265         (c_expr_sizeof_expr): Set original_type field.
26266         (parser_build_unary_op): Likewise.
26267         (parser_build_binary_op): Likewise.  Optionally warn about
26268         comparisons of enums of different types.
26269         (digest_init): Set original_type field.
26270         (really_start_incremental_init): Likewise.
26271         (push_init_level, pop_init_level): Likewise.
26272         * doc/invoke.texi (Warning Options): -Wenum-compare now
26273         supported in C.
26274
26275 2009-04-15  Richard Guenther  <rguenther@suse.de>
26276
26277         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
26278         out a necessary conversion.
26279         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
26280         names we didn't value number.
26281         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
26282
26283 2009-04-15  Richard Guenther  <rguenther@suse.de>
26284
26285         PR tree-optimization/39764
26286         * tree-ssa-ccp.c (get_value): Canonicalize value with
26287         canonicalize_float_value.
26288
26289 2009-04-15  Jan Hubicka  <jh@suse.cz>
26290
26291         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
26292         Wrong version of patch.
26293
26294 2009-04-15  Jan Hubicka  <jh@suse.cz>
26295
26296         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
26297
26298 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
26299
26300         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
26301         our distinct integral and vector types.
26302
26303 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
26304
26305         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
26306         * init.c (build_vtbl_address): Remove call to assemble_external.
26307
26308 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
26309
26310         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
26311         output for other floating point modes.
26312
26313 2009-04-14  Diego Novillo  <dnovillo@google.com>
26314
26315         * diagnostic.c (diagnostic_report_diagnostic): Do not
26316         warn about loaded plugins for DK_ERROR and DK_WARNING.
26317         * c-decl.c (declspecs_add_type): Move call to
26318         invoke_plugin_callbacks ...
26319         * c-parser.c (c_parser_declspecs): ... here.
26320         * plugin.c (dump_active_plugins): Tidy output.
26321
26322 2009-04-14  Diego Novillo  <dnovillo@google.com>
26323             Le-Chun Wu  <lcwu@google.com>
26324
26325         * configure.ac: Add --enable-plugin support.
26326         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
26327         * Makefile.in (PLUGIN_H): Define.
26328         Export ENABLE_PLUGIN and GMPINC to site.exp.
26329         Add PLUGINLIBS to link command.
26330         Add/modify dependencies for plugin.o and files including plugin.h.
26331         (plugin.o): New.
26332         * config.in: Regenerate.
26333
26334         * opts.c (common_handle_option): Handle OPT_fplugin_ and
26335         OPT_fplugin_arg_.
26336
26337 2009-04-14  Le-Chun Wu  <lcwu@google.com>
26338
26339         * tree-pass.h (register_one_dump_file): Add a prototype for
26340         register_one_dump_file.
26341         * toplev.c (compile_file): Call initialize_plugins.
26342         (do_compile): Call invoke_plugin_callbacks.
26343         (toplev_main): Call invoke_plugin_callbacks.
26344         * common.opt: Add -fplugin= and -fplugin-arg-.
26345         * gcc-plugin.h: New public header file for plugins to include.
26346         * plugin.c: New source file.
26347         * plugin.h: New internal header file.
26348         * passes.c (register_one_dump_file): Make it external.
26349
26350         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
26351
26352 2009-04-14  Diego Novillo  <dnovillo@google.com>
26353
26354         * doc/plugins.texi: New.
26355         * doc/gccint.texi: Add reference to Plugins chapter.
26356         * doc/invoke.texi: Document -fplugin and -fplugin-arg
26357         * diagnostic.c (diagnostic_report_diagnostic): Warn about
26358         loaded plugins, if any.
26359         * timevar.def (TV_PLUGIN_INIT): Define.
26360         (TV_PLUGIN_RUN): Define.
26361         * plugin.c: Include timevar.h
26362         (plugins_active_p): New.
26363         (dump_active_plugins): New.
26364         (debug_active_plugins): New.
26365
26366 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
26367
26368         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
26369         library paths.
26370         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
26371
26372 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
26373
26374         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
26375         the same as a minus without a shift.
26376
26377 2009-04-14  Nick Clifton  <nickc@redhat.com>
26378
26379         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
26380         comparisons with small integers will always produce a short
26381         branch.
26382
26383 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
26384
26385         Merge:
26386         2008-12-19  Diego Novillo  <dnovillo@google.com>
26387
26388         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
26389
26390 2009-04-14  Richard Guenther  <rguenther@suse.de>
26391
26392         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
26393         verification.
26394         (verify_gimple_assign_binary): Likewise.  Handle shifts and
26395         rotates correctly.
26396         (verify_gimple_phi): Print the mismatched argument position.
26397         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
26398         Fix types.
26399         (vect_update_init_of_dr): Likewise.
26400         * matrix-reorg.c (transform_access_sites): Do what the
26401         comment suggests.
26402         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
26403
26404 2009-04-13  Michael Eager  <eager@eagercon.com>
26405
26406         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
26407         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
26408         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
26409         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
26410         remove duplicate config
26411
26412 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
26413
26414         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
26415         file_name:line_number type locator of the call site.
26416
26417 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
26418
26419         * genautomata.c: Put blank after comma.
26420         (automaton_decls): New.
26421         (struct unit_usage): Add comments to member next.
26422         (store_alt_unit_usage): Keep the list ordered.
26423         (unit_present_on_list_p, equal_alternatives_p): New.
26424         (check_regexp_units_distribution): Check units distribution
26425         correctness correctly.
26426         (main): Don't write automata if error is found.  Return correct
26427         exit code.
26428
26429         * config/m68k/cf.md (cfv4_ds): Remove.
26430         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
26431         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
26432
26433         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
26434         power4-load-ext, power4-store, power4-store-update,
26435         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
26436         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
26437         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
26438         power4-sqrt, power4-isync): Modify reservation to make correct
26439         unit distribution to automata.
26440
26441         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
26442         power5-store-update, power5-two, power5-three, power5-lmul,
26443         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
26444
26445 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
26446
26447         * except.c (pass_set_nothrow_function_flags): Set name and add
26448         TODO_dump_func.
26449         (set_nothrow_function_flags): Mention in the dump file when
26450         changing a function to nothrow.
26451
26452 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
26453
26454         PR/39066
26455         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
26456         instead of unsigned long.
26457
26458 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
26459
26460         * config/arm/arm.c (return_used_this_function): Remove.
26461         (arm_output_function_prologue): Remove use of
26462         return_used_this_function.
26463         (output_return_instruction): Replace use of
26464         return_used_this_function
26465         by cfun->machine->return_used_this_function.
26466         (arm_output_epilogue): Likewise.
26467         (arm_output_function_epilogue): Likewise.
26468         (thumb_unexpanded_epilogue): Likewise.
26469         * config/arm/arm.h (struct machine_function):
26470         New member return_used_this_function.
26471
26472 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
26473
26474         * doc/install.texi: Correct description of default directory for
26475         --with-gxx-include-dir.
26476
26477 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
26478
26479         * fold-const.c (build_range_check): Properly deal with enumeral and
26480         boolean base types.
26481
26482 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
26483
26484         * doc/invoke.texi (max_gcse_passes): Remove documentation.
26485         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
26486         * params.h (MAX_GCSE_PASSES): Remove.
26487         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
26488         in sequence.  Remove ability to run multiple passes.
26489         (bypass_jumps): Report run as third CPROP pass.
26490
26491 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
26492
26493         PR middle-end/39651
26494         * except.c (can_throw_external): Look at each insn in a SEQUENCE
26495         when deciding whether the whole SEQUENCE can throw.
26496
26497 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
26498
26499         PR target/39740
26500         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
26501         offseted label references.
26502
26503 2009-04-11  Jan Hubicka  <jh@suse.cz>
26504
26505         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
26506
26507 2009-04-11  Richard Guenther  <rguenther@suse.de>
26508
26509         PR middle-end/39732
26510         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
26511         return variables as TREE_ADDRESSABLE.
26512
26513 2009-04-11  Richard Guenther  <rguenther@suse.de>
26514
26515         PR tree-optimization/39713
26516         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
26517         reference trees have SSA_NAME operands.
26518
26519 2009-04-11  Richard Guenther  <rguenther@suse.de>
26520
26521         PR c/39712
26522         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
26523         address expressions.
26524
26525 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
26526
26527         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
26528         match changes in Cygwin 1.7
26529         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
26530         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
26531
26532 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
26533
26534         PR tree-optimization/39701
26535         * doc/invoke.texi (Optimization Options): Document change in
26536         meaning and initialization of -fdelete-null-pointer-checks.
26537
26538 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
26539
26540         PR middle-end/39701
26541         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
26542
26543         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
26544         here.
26545
26546         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
26547
26548 2009-04-10  Chao-ying Fu  <fu@mips.com>
26549
26550         * doc/tm.texi (Instruction Output): Document
26551         TARGET_ASM_FINAL_POSTSCAN_INSN.
26552         * target.h (final_postscan_insn): New field in asm_out.
26553         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
26554         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
26555         * final.c (final_scan_insn): Call
26556         targetm.asm_out.final_postscan_insn after outputting
26557         an asm macro and a normal instruction.
26558
26559         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
26560         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
26561         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
26562         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
26563         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
26564
26565 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
26566
26567         PR middle-end/39701
26568         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
26569         variables as non-NULL even with -fdelete-null-pointer-checks.
26570
26571 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
26572
26573         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
26574
26575 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
26576
26577         PR target/39678
26578         * config/i386/i386.c (classify_argument): Handle SCmode with
26579         (bit_offset % 64) != 0.
26580
26581 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
26582
26583         * doc/invoke.texi (Optimize Options): Add cross-reference to
26584         -Q --help=optimizers examples.
26585
26586 2009-04-10  Ben Elliston  <bje@au.ibm.com>
26587
26588         PR target/36800
26589         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
26590         regalign for the reg == fpr and TDmode case.
26591
26592 2009-04-09  David Ayers  <ayers@fsfe.org>
26593
26594         PR objc/29200
26595         * objc/objc-act.c (warn_with_method): Remove helper function.
26596         (check_duplicates): Call warning and inform directly.
26597         (really_start_method): Likewise.
26598
26599 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
26600
26601         * expmed.c (expand_divmod): Always use a comparison for a division
26602         by a large unsigned integer.
26603
26604         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
26605         for things others than variables or functions as nonzero.
26606
26607 2009-04-09  Nick Clifton  <nickc@redhat.com>
26608
26609         * unwind-compat.c: Change copyright header to refer to version
26610         3 of the GNU General Public License with version 3.1 of the
26611         GCC Runtime Library Exception and to point readers at the
26612         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
26613         * config/alpha/crtfastmath.c: Likewise.
26614         * config/alpha/linux-unwind.h: Likewise.
26615         * config/alpha/qrnnd.asm: Likewise.
26616         * config/alpha/vms-crt0-64.c: Likewise.
26617         * config/alpha/vms-crt0.c: Likewise.
26618         * config/alpha/vms-dwarf2.asm: Likewise.
26619         * config/alpha/vms-dwarf2eh.asm: Likewise.
26620         * config/alpha/vms-psxcrt0-64.c: Likewise.
26621         * config/alpha/vms-psxcrt0.c: Likewise.
26622         * config/alpha/vms_tramp.asm: Likewise.
26623         * config/arc/initfini.c: Likewise.
26624         * config/arc/lib1funcs.asm: Likewise.
26625         * config/arm/bpabi-v6m.S: Likewise.
26626         * config/arm/bpabi.S: Likewise.
26627         * config/arm/bpabi.c: Likewise.
26628         * config/arm/crti.asm: Likewise.
26629         * config/arm/crtn.asm: Likewise.
26630         * config/arm/ieee754-df.S: Likewise.
26631         * config/arm/ieee754-sf.S: Likewise.
26632         * config/arm/lib1funcs.asm: Likewise.
26633         * config/arm/libunwind.S: Likewise.
26634         * config/arm/linux-atomic.c: Likewise.
26635         * config/arm/mmintrin.h: Likewise.
26636         * config/arm/pr-support.c: Likewise.
26637         * config/arm/unaligned-funcs.c: Likewise.
26638         * config/arm/unwind-arm.c: Likewise.
26639         * config/arm/unwind-arm.h: Likewise.
26640         * config/avr/libgcc.S: Likewise.
26641         * config/bfin/crti.s: Likewise.
26642         * config/bfin/crtlibid.s: Likewise.
26643         * config/bfin/crtn.s: Likewise.
26644         * config/bfin/lib1funcs.asm: Likewise.
26645         * config/bfin/linux-unwind.h: Likewise.
26646         * config/cris/arit.c: Likewise.
26647         * config/cris/cris_abi_symbol.c: Likewise.
26648         * config/darwin-64.c: Likewise.
26649         * config/darwin-crt2.c: Likewise.
26650         * config/darwin-crt3.c: Likewise.
26651         * config/darwin.h: Likewise.
26652         * config/dbxelf.h: Likewise.
26653         * config/dfp-bit.c: Likewise.
26654         * config/dfp-bit.h: Likewise.
26655         * config/elfos.h: Likewise.
26656         * config/fixed-bit.c: Likewise.
26657         * config/fixed-bit.h: Likewise.
26658         * config/fp-bit.c: Likewise.
26659         * config/fp-bit.h: Likewise.
26660         * config/fr30/crti.asm: Likewise.
26661         * config/fr30/crtn.asm: Likewise.
26662         * config/fr30/lib1funcs.asm: Likewise.
26663         * config/freebsd-spec.h: Likewise.
26664         * config/frv/cmovd.c: Likewise.
26665         * config/frv/cmovh.c: Likewise.
26666         * config/frv/cmovw.c: Likewise.
26667         * config/frv/frvbegin.c: Likewise.
26668         * config/frv/frvend.c: Likewise.
26669         * config/frv/lib1funcs.asm: Likewise.
26670         * config/glibc-stdint.h: Likewise.
26671         * config/h8300/clzhi2.c: Likewise.
26672         * config/h8300/crti.asm: Likewise.
26673         * config/h8300/crtn.asm: Likewise.
26674         * config/h8300/ctzhi2.c: Likewise.
26675         * config/h8300/fixunssfsi.c: Likewise.
26676         * config/h8300/lib1funcs.asm: Likewise.
26677         * config/h8300/parityhi2.c: Likewise.
26678         * config/h8300/popcounthi2.c: Likewise.
26679         * config/i386/ammintrin.h: Likewise.
26680         * config/i386/att.h: Likewise.
26681         * config/i386/avxintrin.h: Likewise.
26682         * config/i386/biarch64.h: Likewise.
26683         * config/i386/bmmintrin.h: Likewise.
26684         * config/i386/cpuid.h: Likewise.
26685         * config/i386/cross-stdarg.h: Likewise.
26686         * config/i386/crtfastmath.c: Likewise.
26687         * config/i386/crtprec.c: Likewise.
26688         * config/i386/cygming-crtbegin.c: Likewise.
26689         * config/i386/cygming-crtend.c: Likewise.
26690         * config/i386/cygwin.asm: Likewise.
26691         * config/i386/emmintrin.h: Likewise.
26692         * config/i386/gmm_malloc.h: Likewise.
26693         * config/i386/gthr-win32.c: Likewise.
26694         * config/i386/i386.h: Likewise.
26695         * config/i386/immintrin.h: Likewise.
26696         * config/i386/linux-unwind.h: Likewise.
26697         * config/i386/linux64.h: Likewise.
26698         * config/i386/mm3dnow.h: Likewise.
26699         * config/i386/mmintrin-common.h: Likewise.
26700         * config/i386/mmintrin.h: Likewise.
26701         * config/i386/nmmintrin.h: Likewise.
26702         * config/i386/pmm_malloc.h: Likewise.
26703         * config/i386/pmmintrin.h: Likewise.
26704         * config/i386/smmintrin.h: Likewise.
26705         * config/i386/sol2-c1.asm: Likewise.
26706         * config/i386/sol2-ci.asm: Likewise.
26707         * config/i386/sol2-cn.asm: Likewise.
26708         * config/i386/sol2-gc1.asm: Likewise.
26709         * config/i386/tmmintrin.h: Likewise.
26710         * config/i386/unix.h: Likewise.
26711         * config/i386/w32-unwind.h: Likewise.
26712         * config/i386/wmmintrin.h: Likewise.
26713         * config/i386/x86-64.h: Likewise.
26714         * config/i386/x86intrin.h: Likewise.
26715         * config/i386/xmmintrin.h: Likewise.
26716         * config/ia64/crtbegin.asm: Likewise.
26717         * config/ia64/crtend.asm: Likewise.
26718         * config/ia64/crtfastmath.c: Likewise.
26719         * config/ia64/crti.asm: Likewise.
26720         * config/ia64/crtn.asm: Likewise.
26721         * config/ia64/fde-glibc.c: Likewise.
26722         * config/ia64/lib1funcs.asm: Likewise.
26723         * config/ia64/linux-unwind.h: Likewise.
26724         * config/ia64/quadlib.c: Likewise.
26725         * config/ia64/unwind-ia64.c: Likewise.
26726         * config/linux.h: Likewise.
26727         * config/m32c/m32c-lib1.S: Likewise.
26728         * config/m32c/m32c-lib2-trapv.c: Likewise.
26729         * config/m32c/m32c-lib2.c: Likewise.
26730         * config/m32r/initfini.c: Likewise.
26731         * config/m68hc11/larith.asm: Likewise.
26732         * config/m68hc11/m68hc11-crt0.S: Likewise.
26733         * config/m68k/cf.md: Likewise.
26734         * config/m68k/crti.s: Likewise.
26735         * config/m68k/crtn.s: Likewise.
26736         * config/m68k/lb1sf68.asm: Likewise.
26737         * config/m68k/linux-unwind.h: Likewise.
26738         * config/mcore/crti.asm: Likewise.
26739         * config/mcore/crtn.asm: Likewise.
26740         * config/mcore/lib1.asm: Likewise.
26741         * config/mips/linux-unwind.h: Likewise.
26742         * config/mips/loongson.h: Likewise.
26743         * config/mips/mips16.S: Likewise.
26744         * config/mmix/crti.asm: Likewise.
26745         * config/mmix/crtn.asm: Likewise.
26746         * config/pa/fptr.c: Likewise.
26747         * config/pa/hpux-unwind.h: Likewise.
26748         * config/pa/lib2funcs.asm: Likewise.
26749         * config/pa/linux-atomic.c: Likewise.
26750         * config/pa/linux-unwind.h: Likewise.
26751         * config/pa/milli64.S: Likewise.
26752         * config/pa/quadlib.c: Likewise.
26753         * config/pa/stublib.c: Likewise.
26754         * config/picochip/libgccExtras/adddi3.asm: Likewise.
26755         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
26756         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
26757         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
26758         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
26759         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
26760         * config/picochip/libgccExtras/divmod15.asm: Likewise.
26761         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
26762         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
26763         * config/picochip/libgccExtras/longjmp.asm: Likewise.
26764         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
26765         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
26766         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
26767         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
26768         * config/picochip/libgccExtras/setjmp.asm: Likewise.
26769         * config/picochip/libgccExtras/subdi3.asm: Likewise.
26770         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
26771         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
26772         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
26773         * config/rs6000/750cl.h: Likewise.
26774         * config/rs6000/altivec.h: Likewise.
26775         * config/rs6000/biarch64.h: Likewise.
26776         * config/rs6000/crtresfpr.asm: Likewise.
26777         * config/rs6000/crtresgpr.asm: Likewise.
26778         * config/rs6000/crtresxfpr.asm: Likewise.
26779         * config/rs6000/crtresxgpr.asm: Likewise.
26780         * config/rs6000/crtsavfpr.asm: Likewise.
26781         * config/rs6000/crtsavgpr.asm: Likewise.
26782         * config/rs6000/darwin-asm.h: Likewise.
26783         * config/rs6000/darwin-fallback.c: Likewise.
26784         * config/rs6000/darwin-fpsave.asm: Likewise.
26785         * config/rs6000/darwin-ldouble.c: Likewise.
26786         * config/rs6000/darwin-tramp.asm: Likewise.
26787         * config/rs6000/darwin-unwind.h: Likewise.
26788         * config/rs6000/darwin-vecsave.asm: Likewise.
26789         * config/rs6000/darwin-world.asm: Likewise.
26790         * config/rs6000/e500crtres32gpr.asm: Likewise.
26791         * config/rs6000/e500crtres64gpr.asm: Likewise.
26792         * config/rs6000/e500crtres64gprctr.asm: Likewise.
26793         * config/rs6000/e500crtrest32gpr.asm: Likewise.
26794         * config/rs6000/e500crtrest64gpr.asm: Likewise.
26795         * config/rs6000/e500crtresx32gpr.asm: Likewise.
26796         * config/rs6000/e500crtresx64gpr.asm: Likewise.
26797         * config/rs6000/e500crtsav32gpr.asm: Likewise.
26798         * config/rs6000/e500crtsav64gpr.asm: Likewise.
26799         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
26800         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
26801         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
26802         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
26803         * config/rs6000/eabi-ci.asm: Likewise.
26804         * config/rs6000/eabi-cn.asm: Likewise.
26805         * config/rs6000/eabi.asm: Likewise.
26806         * config/rs6000/linux-unwind.h: Likewise.
26807         * config/rs6000/linux64.h: Likewise.
26808         * config/rs6000/paired.h: Likewise.
26809         * config/rs6000/paired.md: Likewise.
26810         * config/rs6000/ppc64-fp.c: Likewise.
26811         * config/rs6000/ppu_intrinsics.h: Likewise.
26812         * config/rs6000/rs6000.h: Likewise.
26813         * config/rs6000/si2vmx.h: Likewise.
26814         * config/rs6000/sol-ci.asm: Likewise.
26815         * config/rs6000/sol-cn.asm: Likewise.
26816         * config/rs6000/spe.h: Likewise.
26817         * config/rs6000/spu2vmx.h: Likewise.
26818         * config/rs6000/sysv4.h: Likewise.
26819         * config/rs6000/tramp.asm: Likewise.
26820         * config/rs6000/vec_types.h: Likewise.
26821         * config/s390/linux-unwind.h: Likewise.
26822         * config/s390/tpf-unwind.h: Likewise.
26823         * config/score/crti.asm: Likewise.
26824         * config/score/crtn.asm: Likewise.
26825         * config/sh/crt1.asm: Likewise.
26826         * config/sh/crti.asm: Likewise.
26827         * config/sh/crtn.asm: Likewise.
26828         * config/sh/divtab-sh4-300.c: Likewise.
26829         * config/sh/divtab-sh4.c: Likewise.
26830         * config/sh/divtab.c: Likewise.
26831         * config/sh/lib1funcs-4-300.asm: Likewise.
26832         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
26833         * config/sh/lib1funcs.asm: Likewise.
26834         * config/sh/lib1funcs.h: Likewise.
26835         * config/sh/linux-atomic.asm: Likewise.
26836         * config/sh/linux-unwind.h: Likewise.
26837         * config/sh/shmedia.h: Likewise.
26838         * config/sh/sshmedia.h: Likewise.
26839         * config/sh/ushmedia.h: Likewise.
26840         * config/sparc/crtfastmath.c: Likewise.
26841         * config/sparc/linux-unwind.h: Likewise.
26842         * config/sparc/sol2-c1.asm: Likewise.
26843         * config/sparc/sol2-ci.asm: Likewise.
26844         * config/sparc/sol2-cn.asm: Likewise.
26845         * config/spu/divmodti4.c: Likewise.
26846         * config/spu/divv2df3.c: Likewise.
26847         * config/spu/float_disf.c: Likewise.
26848         * config/spu/float_unsdidf.c: Likewise.
26849         * config/spu/float_unsdisf.c: Likewise.
26850         * config/spu/float_unssidf.c: Likewise.
26851         * config/spu/mfc_multi_tag_release.c: Likewise.
26852         * config/spu/mfc_multi_tag_reserve.c: Likewise.
26853         * config/spu/mfc_tag_release.c: Likewise.
26854         * config/spu/mfc_tag_reserve.c: Likewise.
26855         * config/spu/mfc_tag_table.c: Likewise.
26856         * config/spu/multi3.c: Likewise.
26857         * config/spu/spu_internals.h: Likewise.
26858         * config/spu/spu_intrinsics.h: Likewise.
26859         * config/spu/spu_mfcio.h: Likewise.
26860         * config/spu/vec_types.h: Likewise.
26861         * config/spu/vmx2spu.h: Likewise.
26862         * config/stormy16/stormy16-lib2.c: Likewise.
26863         * config/svr4.h: Likewise.
26864         * config/sync.c: Likewise.
26865         * config/v850/lib1funcs.asm: Likewise.
26866         * config/vxlib-tls.c: Likewise.
26867         * config/vxlib.c: Likewise.
26868         * config/vxworks-dummy.h: Likewise.
26869         * config/xtensa/crti.asm: Likewise.
26870         * config/xtensa/crtn.asm: Likewise.
26871         * config/xtensa/ieee754-df.S: Likewise.
26872         * config/xtensa/ieee754-sf.S: Likewise.
26873         * config/xtensa/lib1funcs.asm: Likewise.
26874         * config/xtensa/lib2funcs.S: Likewise.
26875         * config/xtensa/linux-unwind.h: Likewise.
26876         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
26877         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
26878         * coretypes.h: Likewise.
26879         * crtstuff.c: Likewise.
26880         * defaults.h: Likewise.
26881         * dwarf2.h: Likewise.
26882         * emutls.c: Likewise.
26883         * gbl-ctors.h: Likewise.
26884         * gcov-io.h: Likewise.
26885         * ginclude/float.h: Likewise.
26886         * ginclude/iso646.h: Likewise.
26887         * ginclude/stdarg.h: Likewise.
26888         * ginclude/stdbool.h: Likewise.
26889         * ginclude/stddef.h: Likewise.
26890         * ginclude/stdfix.h: Likewise.
26891         * ginclude/stdint-gcc.h: Likewise.
26892         * ginclude/tgmath.h: Likewise.
26893         * gthr-aix.h: Likewise.
26894         * gthr-dce.h: Likewise.
26895         * gthr-gnat.c: Likewise.
26896         * gthr-gnat.h: Likewise.
26897         * gthr-lynx.h: Likewise.
26898         * gthr-mipssde.h: Likewise.
26899         * gthr-nks.h: Likewise.
26900         * gthr-posix.c: Likewise.
26901         * gthr-posix.h: Likewise.
26902         * gthr-posix95.h: Likewise.
26903         * gthr-rtems.h: Likewise.
26904         * gthr-single.h: Likewise.
26905         * gthr-solaris.h: Likewise.
26906         * gthr-tpf.h: Likewise.
26907         * gthr-vxworks.h: Likewise.
26908         * gthr-win32.h: Likewise.
26909         * gthr.h: Likewise.
26910         * libgcc2.c: Likewise.
26911         * libgcc2.h: Likewise.
26912         * libgcov.c: Likewise.
26913         * tsystem.h: Likewise.
26914         * typeclass.h: Likewise.
26915         * unwind-c.c: Likewise.
26916         * unwind-compat.h: Likewise.
26917         * unwind-dw2-fde-compat.c: Likewise.
26918         * unwind-dw2-fde-darwin.c: Likewise.
26919         * unwind-dw2-fde-glibc.c: Likewise.
26920         * unwind-dw2-fde.c: Likewise.
26921         * unwind-dw2-fde.h: Likewise.
26922         * unwind-dw2.c: Likewise.
26923         * unwind-dw2.h: Likewise.
26924         * unwind-generic.h: Likewise.
26925         * unwind-pe.h: Likewise.
26926         * unwind-sjlj.c: Likewise.
26927         * unwind.inc: Likewise.
26928         * config/arm/neon-gen.ml: Change generated copyright header to
26929         refer to version 3 of the GNU General Public License with
26930         version 3.1 of the GCC Runtime Library Exception and to point
26931         readers at the COPYING3 and COPYING3.RUNTIME files and the
26932         FSF's license web page.
26933         * config/arm/arm_neon.h: Regenerate.
26934
26935 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
26936
26937         * config/cris/cris.md: Change copyright header to refer to version
26938         3 of the GNU General Public License.
26939         * doc/install.texi2html: Change copyright header to refer to version
26940         3 of the GNU General Public License and to point readers at the
26941         COPYING3 file and the FSF's license web page.
26942         * config/vax/linux.h: Likewise.
26943
26944 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
26945
26946         * config/i386/i386.md (cmpcc): New.
26947         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
26948         (sync_compare_and_swap_cc*): Delete.
26949
26950         * config/s390/s390.c (s390_compare_emitted): Remove.
26951         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
26952         s390_compare_emitted used to be handled.  Assert that modes match.
26953         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
26954         refer to sync_compare_and_swap_ccsi.
26955         * config/s390/s390.h (s390_compare_emitted): Remove.
26956         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
26957         instead of s390_compare_emitted.
26958         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
26959         instead of s390_compare_emitted.
26960         * config/s390/s390.md (cmpcc): New.
26961         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
26962         CC_REGNUM, do not pretend it's set.
26963         (sync_compare_and_swap_cc*): Delete.
26964         * config/s390/predicates.md (cc_reg_operand): New.
26965
26966         * expr.c (sync_compare_and_swap_cc): Delete.
26967         * optabs.h (sync_compare_and_swap_cc): Delete.
26968         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
26969         is being used with can_compare_p.
26970         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
26971         (find_cc_set): New.
26972         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
26973         look for a MODE_CC set instead.  Use emit_store_flag.
26974         (expand_compare_and_swap_loop): Likewise, with some additional
26975         complication to avoid a force_reg when useless.  Use
26976         emit_cmp_and_jump_insns.
26977         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
26978         * doc/md.texi (sync_compare_and_swap_cc): Merge with
26979         sync_compare_and_swap documentation.
26980
26981 2009-04-09  Jan Hubicka  <jh@suse.cz>
26982
26983         * except.c (find_prev_try): Break out from ....
26984         (duplicate_eh_regions): ... here; properly update prev_try pointers
26985         when duplication part of tree.
26986         (dump_eh_tree): Improve dumping.
26987         (verify_eh_region): New.
26988         (verify_eh_tree): Use it.
26989
26990 2009-04-06  Richard Guenther  <rguenther@suse.de>
26991
26992         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
26993         &ARRAY addresses by adjusting their types and prepending
26994         a conversion.
26995         * tree-cfg.c (verify_gimple_assign_single): Verify that
26996         addresses are correct.
26997
26998 2009-04-09  Richard Guenther  <rguenther@suse.de>
26999
27000         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
27001         indices into an array reference if possible.
27002         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
27003         Fold POINTER_PLUS_EXPR statements with invariant address.
27004
27005 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
27006
27007         PR target/39634
27008         * config.gcc (powerpc64-*-linux*): Always build biarch.
27009
27010 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
27011
27012         PR c/39613
27013         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
27014         it and pedwarn if this results in an INTEGER_CST.
27015
27016 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27017
27018         * doc/install.texi: Update minimum GMP version.  Remove obsolete
27019         text in MPFR section.
27020
27021 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
27022
27023         * dwarf2out.c (class_scope_p): New static inline.
27024         (class_or_namespace_scope_p): Use it.
27025         (gen_variable_die): Use DW_TAG_member tag for static data member
27026         declarations instead of DW_TAG_variable.
27027
27028         PR middle-end/39573
27029         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
27030         variables.
27031
27032 2009-04-08  Richard Guenther  <rguenther@suse.de>
27033
27034         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
27035         valueize random data.
27036
27037 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
27038
27039         * config.gcc (aix tm_file):  Add aix-stdint.h.
27040         (aix tm clause use_gcc_stdint):  Set to wrap.
27041         * config/rs6000/aix-stdint.h:  New file.
27042
27043 2009-04-08  Richard Guenther  <rguenther@suse.de>
27044
27045         PR middle-end/36291
27046         * tree-dfa.c (add_referenced_var): Do not recurse into
27047         global initializers.
27048         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
27049         exposed variables.
27050         (fold_const_aggregate_ref): Likewise.
27051
27052 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
27053
27054         * recog.c (ordered_comparison_operator): New.
27055         * gensupport.c (std_preds): Add it.
27056         * doc/md.texi (Machine-Independent Predicates): Document it.
27057
27058 2009-04-08  Jan Hubicka  <jh@suse.cz>
27059
27060         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
27061         * function.h (rtl_eh): Remove exception_handler_label_map.
27062         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
27063         remove_exception_handler_label, for_each_eh_label_1): Remove.
27064         (rtl_remove_unreachable_regions): Remove.
27065         (convert_from_eh_region_ranges): Do not remove unreachable regions.
27066         (find_exception_handler_labels): Don't build the hashtable.
27067         (maybe_remove_eh_handler): Remove.
27068         (for_each_eh_label): Rewrite to walk the tree.
27069         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
27070         * except.h (maybe_remove_eh_handler): Remove.
27071         * passes.c (init_optimization_passes): Schedule second EH cleanup
27072         before out-of-ssa.
27073         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
27074         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
27075
27076 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
27077
27078         * genoutput.c (validate_optab_operands): New.
27079         (gen_insn, gen_expand): Call it.
27080
27081         * genflags.c (gen_insn): Detect misused iterators.
27082         (main): Pass line_no to gen_insn, exit with status 1 on error.
27083
27084         * genextract.c (line_no): Make global.
27085         (VEC_safe_set_locstr): Change assertion to error message.
27086         (main): Exit with status 1 on error.
27087
27088 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
27089
27090         PR c/39614
27091         PR c/39673
27092         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
27093         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
27094         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
27095         * c-convert.c (convert): Do not call fold on results of conversion
27096         functions when the result is a C_MAYBE_CONST_EXPR.
27097         * c-parser.c (c_parser_postfix_expression): Do not fold condition
27098         of __builtin_choose_expr.
27099         * c-typeck.c (remove_c_maybe_const_expr): New.
27100         (build_unary_op, build_conditional_expr, build_compound_expr,
27101         build_binary_op, c_objc_common_truthvalue_conversion): Call
27102         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
27103         integer operands.
27104
27105 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
27106
27107         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
27108         CODE to produce a new one. Add a prototype to use fold_convert_const
27109
27110 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
27111
27112         PR bootstrap/39660
27113         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
27114         mix declarations and code.
27115
27116 2009-04-08  Ben Elliston  <bje@au.ibm.com>
27117
27118         * gcc.c: Replace `CC' with `GCC' throughout.
27119
27120 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
27121
27122         * doc/invoke.texi: Document Atom support.
27123
27124 2009-04-07  Jason Merrill  <jason@redhat.com>
27125
27126         PR c++/25185
27127         * c-common.h, c-common.c: Add flag_pretty_templates.
27128         * c-opts.c (c_common_handle_option): Set it.
27129         * c.opt: Add -fno-pretty-templates.
27130         * doc/invoke.texi (C++ Dialect Options): Likewise.
27131
27132 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
27133
27134         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
27135         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
27136         (ia64_expand_builtin): Likewise.
27137
27138 2009-04-07  Martin Jambor  <mjambor@suse.cz>
27139
27140         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
27141         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
27142         ADDR_EXPRS are include too.
27143
27144 2009-04-07  Richard Guenther  <rguenther@suse.de>
27145
27146         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
27147         decls are only used if passes as parameters or if they are
27148         local statics and the call is not to a builtin.
27149         (call_may_clobber_ref_p_1): Likewise.
27150
27151 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27152
27153         * expr.c (do_store_flag): Remove last argument.  Simplify code
27154         to avoid duplication of tests already done by can_compare_p.
27155         (expand_expr_real_1): Adjust caller.
27156
27157 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27158
27159         * optabs.c (can_compare_p): Test the predicate of a
27160         cbranch and cstore pattern.
27161
27162 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27163
27164         * expr.c (convert_move): Use emit_store_flag instead of
27165         "emulating" it.
27166
27167 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27168
27169         * config/i386/i386.c (ix86_compare_emitted): Remove.
27170         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
27171         ix86_compare_op0 like ix86_compare_emitted used to be handled.
27172         * config/i386/i386.h (ix86_compare_emitted): Remove.
27173         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
27174         instead of ix86_compare_emitted.
27175         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
27176
27177 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
27178
27179         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
27180         Add t-sysroot-suffix to tmake_file.
27181         * config/print-sysroot-suffix.sh: New file.
27182         * config/t-sysroot-suffix: New file.
27183
27184 2009-04-07  Ben Elliston  <bje@au.ibm.com>
27185
27186         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
27187         as the latter produces a warning when the target does not support
27188         infinity.
27189
27190 2009-04-07  Ben Elliston  <bje@au.ibm.com>
27191
27192         * dfp.c: Replace type punning assignments with memcpy throughout.
27193         * Makefile.in (dfp.o-warn): Remove.
27194
27195 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
27196
27197         PR target/39634
27198         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
27199         Include soft-fp/t-softfp after rs6000/t-linux64.
27200
27201 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
27202
27203         * stor-layout.c (set_sizetype): Use the full precision of their
27204         machine mode for bitsize types.
27205
27206 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
27207
27208         * config/i386/i386.md: Revert 2 accidental checkins.
27209
27210 2009-04-06  Joey Ye  <joey.ye@intel.com>
27211             Xuepeng Guo  <xuepeng.guo@intel.com>
27212             H.J. Lu  <hongjiu.lu@intel.com>
27213
27214         Atom pipeline model, tuning and insn selection.
27215         * config.gcc (atom): Add atom config options and target.
27216
27217         * config/i386/atom.md: New.
27218
27219         * config/i386/i386.c (atom_cost): New cost.
27220         (m_ATOM): New macro flag.
27221         (initial_ix86_tune_features): Set m_ATOM.
27222         (x86_accumulate_outgoing_args): Likewise.
27223         (x86_arch_always_fancy_math_387): Likewise.
27224         (processor_target): Add Atom cost.
27225         (cpu_names): Add Atom cpu name.
27226         (override_options): Set Atom ISA.
27227         (ix86_issue_rate): New case PROCESSOR_ATOM.
27228         (ix86_adjust_cost): Likewise.
27229
27230         * config/i386/i386.h (TARGET_ATOM): New target macro.
27231         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
27232         (TARGET_OPT_AGU): New target option.
27233         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
27234         (processor_type): Add PROCESSOR_ATOM.
27235
27236         * config/i386/i386.md (cpu): Add new value "atom".
27237         (use_carry, movu): New attr.
27238         (atom.md): Include atom.md.
27239         (adddi3_carry_rex64): Set attr "use_carry".
27240         (addqi3_carry): Likewise.
27241         (addhi3_carry): Likewise.
27242         (addsi3_carry): Likewise.
27243         (*addsi3_carry_zext): Likewise.
27244         (subdi3_carry_rex64): Likewise.
27245         (subqi3_carry): Likewise.
27246         (subhi3_carry): Likewise.
27247         (subsi3_carry): Likewise.
27248         (x86_movdicc_0_m1_rex64): Likewise.
27249         (*x86_movdicc_0_m1_se): Likewise.
27250         (x86_movsicc_0_m1): Likewise.
27251         (*x86_movsicc_0_m1_se): Likewise.
27252         (*adddi_1_rex64): Emit add insn as much as possible.
27253         (*addsi_1): Likewise.
27254         (return_internal): Set atom_unit.
27255         (return_internal_long): Likewise.
27256         (return_pop_internal): Likewise.
27257         (*rcpsf2_sse): Set atom_sse_attr attr.
27258         (*qrt<mode>2_sse): Likewise.
27259         (*prefetch_sse): Likewise.
27260
27261         * config/i386/i386-c.c (ix86_target_macros_internal): New case
27262         PROCESSOR_ATOM.
27263         (ix86_target_macros_internal): Likewise.
27264
27265         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
27266         (*prefetch_sse_rex): Likewise.
27267         (sse_rcpv4sf2): Likewise.
27268         (sse_vmrcpv4sf2): Likewise.
27269         (sse_sqrtv4sf2): Likewise.
27270         (<sse>_vmsqrt<mode>2): Likewise.
27271         (sse_ldmxcsr): Likewise.
27272         (sse_stmxcsr): Likewise.
27273         (*sse_sfence): Likewise.
27274         (sse2_clflush): Likewise.
27275         (*sse2_mfence): Likewise.
27276         (*sse2_lfence): Likewise.
27277         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
27278         (<sse>_movup<ssemodesuffixf2c>): Likewise.
27279         (avx_movdqu<avxmodesuffix>): Likewise.
27280         (avx_lddqu<avxmodesuffix>): Likewise.
27281         (sse2_movntv2di): Change attr "type" to "ssemov".
27282         (sse2_movntsi): Likewise.
27283         (rsqrtv8sf2): Change attr "type" to "sseadd".
27284         (sse3_addsubv2df3): Set attr "atom_unit".
27285         (sse3_h<plusminus_insn>v4sf3): Likewise.
27286         (*sse2_pmaddwd): Likewise.
27287         (*vec_extractv2di_1_rex64): Likewise.
27288         (*vec_extractv2di_1_avx): Likewise.
27289         (sse2_psadbw): Likewise.
27290         (ssse3_phaddwv8hi3): Likewise.
27291         (ssse3_phaddwv4hi3): Likewise.
27292         (ssse3_phadddv4si3): Likewise.
27293         (ssse3_phadddv2si3): Likewise.
27294         (ssse3_phaddswv8hi3): Likewise.
27295         (ssse3_phaddswv4hi3): Likewise.
27296         (ssse3_phsubwv8hi3): Likewise.
27297         (ssse3_phsubwv4hi3): Likewise.
27298         (ssse3_phsubdv4si3): Likewise.
27299         (ssse3_phsubdv2si3): Likewise.
27300         (ssse3_phsubswv8hi3): Likewise.
27301         (ssse3_phsubswv4hi3): Likewise.
27302         (ssse3_pmaddubsw128): Likewise.
27303         (sse3_pmaddubsw: Likewise.
27304         (ssse3_palignrti): Likewise.
27305         (ssse3_palignrdi): Likewise.
27306
27307 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
27308
27309         * doc/install.texi (Specific): Fix two cross-references to MinGW.
27310
27311 2009-04-06  Richard Guenther  <rguenther@suse.de>
27312
27313         PR tree-optimization/28868
27314         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
27315         of which PHI results we inserted.
27316         (insert_into_preds_of_block): Record inserted PHIs.
27317         (eliminate): Eliminate redundant PHI nodes.
27318         (init_pre): Init inserted_phi_names.
27319
27320 2009-04-06  Richard Guenther  <rguenther@suse.de>
27321
27322         PR tree-optimization/39643
27323         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
27324         IMAGPART_EXPRs of complex constants.
27325         (execute_fold_all_builtins): If we folded a call queue
27326         TODO_update_address_taken.
27327
27328 2009-04-06  Jan Hubicka  <jh@suse.cz>
27329
27330         PR middle-end/39659
27331         * except.c (remove_unreachable_regions): Propagate may_contain_throw
27332         flag.
27333
27334 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
27335
27336         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
27337         delay slot.
27338         (ic_invalidate_array): Likewise.
27339
27340 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
27341
27342         * calls.c (emit_library_call_value_1): Fix a problem with parameter
27343         alignment for library calls.
27344
27345 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
27346
27347         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
27348         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
27349         * config/i386/mingw-stdint.h:  New file.
27350
27351 2009-04-05  Richard Guenther  <rguenther@suse.de>
27352
27353         PR tree-optimization/39648
27354         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
27355         our &A vs. &A[0] IL deficiencies.
27356
27357 2009-04-04  Jan Hubicka  <jh@suse.cz>
27358
27359         * except.c (sjlj_find_directly_reachable_regions): Be ready for
27360         removed toplevel regions.
27361         (sjlj_mark_call_sites): Likewise.
27362
27363 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
27364
27365         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
27366         (cygwin tm clause use_gcc_stdint):  Set to wrap.
27367         * config/i386/cygwin-stdint.h:  New file.
27368
27369 2009-04-04  Richard Guenther  <rguenther@suse.de>
27370
27371         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
27372         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
27373         single-argument PHIs if we are in loop-closed SSA form.
27374         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
27375         for the pre-condition.
27376         (slpeel_tree_peel_loop_to_edge): Likewise.
27377         (vect_build_loop_niters): Take an optional sequence to append stmts.
27378         (vect_generate_tmps_on_preheader): Likewise.
27379         (vect_do_peeling_for_loop_bound): Take extra guards for the
27380         pre-condition.
27381         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
27382         the cost model check.
27383         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
27384         guards if we are going to peel.  Do not apply versioning in that case.
27385         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
27386         (vect_do_peeling_for_loop_bound): Likewise.
27387         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
27388         loop bound only record extra pre-conditions, do not apply loop
27389         versioning.
27390
27391 2009-04-04  Richard Guenther  <rguenther@suse.de>
27392
27393         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
27394         renaming code.
27395
27396 2009-04-04  Jan Hubicka  <jh@suse.cz>
27397
27398         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
27399         last_basic_block for size of bb->index indexed array.
27400         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
27401         compute_out, link_btr_uses, build_btr_def_use_webs,
27402         build_btr_def_use_webs, migrate_btr_defs): Likewise.
27403
27404 2009-04-04  Jan Hubicka  <jh@suse.cz>
27405
27406         * except.c (remove_eh_handler_and_replace): Break out from ...
27407         (remove_eh_handler): ... here.
27408         (bring_to_root): New function.
27409         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
27410         handled ones, bring others to root of tree.
27411
27412 2009-04-04  Jan Hubicka  <jh@suse.cz>
27413
27414         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
27415         (all_phis_safe_to_merge): New function.
27416         (update_info): New structure.
27417         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
27418         (cleanup_empty_eh): Update SSA if possible.
27419
27420 2009-04-04  Richard Guenther  <rguenther@suse.de>
27421
27422         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
27423         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
27424         (append_vuse): Likewise.
27425
27426 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
27427
27428         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
27429         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
27430         instead of REG_UNSAVED for DW_CFA_undefined.
27431         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
27432         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
27433         outermost frame.
27434
27435 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
27436
27437         PR target/39501
27438         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
27439
27440 2009-04-04  Richard Guenther  <rguenther@suse.de>
27441
27442         PR tree-optimization/8781
27443         PR tree-optimization/37892
27444         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
27445         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
27446         (valueize_refs): Call it for *& valueizations.
27447         (shared_reference_ops_from_ref): Rename to ...
27448         (valueize_shared_reference_ops_from_ref): ... this and valueize.
27449         (shared_reference_ops_from_call): Rename to ...
27450         (valueize_shared_reference_ops_from_call): ... this and valueize.
27451         (vn_reference_lookup): Update.
27452         (visit_reference_op_call): Likewise.
27453         * tree-ssa-pre.c (phi_translate_1): Fold *&.
27454         (eliminate): Value-replace the call address in call statements.
27455
27456 2009-04-04  Richard Guenther  <rguenther@suse.de>
27457
27458         PR tree-optimization/39636
27459         * tree-ssa-forwprop.c
27460         (forward_propagate_addr_into_variable_array_index): Check for
27461         GIMPLE_ASSIGN before accessing the rhs code.
27462
27463 2009-04-03  Jason Merrill  <jason@redhat.com>
27464
27465         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
27466
27467 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
27468
27469         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
27470         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
27471         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
27472         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
27473         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
27474         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
27475         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
27476         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
27477         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
27478         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
27479         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
27480         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
27481         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
27482         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
27483         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
27484         Use fr_reg_or_fp01_operand instead of fr_register_operand
27485
27486         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
27487         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
27488         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
27489
27490 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
27491
27492         PR rtl-optimization/39607
27493         PR rtl-optimization/39631
27494
27495         Revert:
27496
27497         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
27498         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
27499         instead of DF_LR_OUT.
27500         * ira-lives.c (process_bb_node_lives): Ditto.
27501         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
27502         instead of DF_LR_{OUT,IN}.
27503         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
27504         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
27505
27506 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
27507
27508         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
27509         (execute_lower_omp): Always run but take the short way out if -fopenmp
27510         is not given.
27511         (gate_lower_omp): Remove, forcing the pass manager to always run the
27512         pass and always set PROP_gimple_lomp.
27513         (pass_lower_omp): Remove gate function.
27514         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
27515         PROP_trees.  Instead, require it.
27516         * ipa-cp.c (pass_ipa_cp): Likewise.
27517         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
27518         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
27519         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
27520         and PROP_gimple_leh.
27521
27522 2009-04-03  Richard Guenther  <rguenther@suse.de>
27523
27524         PR middle-end/13146
27525         PR tree-optimization/23940
27526         PR tree-optimization/33237
27527         PR middle-end/33974
27528         PR middle-end/34093
27529         PR tree-optimization/36201
27530         PR tree-optimization/36230
27531         PR tree-optimization/38049
27532         PR tree-optimization/38207
27533         PR tree-optimization/38230
27534         PR tree-optimization/38301
27535         PR tree-optimization/38585
27536         PR middle-end/38895
27537         PR tree-optimization/38985
27538         PR tree-optimization/39299
27539         * tree-ssa-structalias.h: Remove.
27540         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
27541         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
27542         (struct vuse_element_d): Remove.
27543         (struct vuse_vec_d): Likewise.
27544         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
27545         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
27546         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
27547         VUSE_ELEMENT_VAR): Likewise.
27548         (struct voptype_d): Likewise.
27549         (NUM_VOP_FREE_BUCKETS): Likewise.
27550         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
27551         (struct stmt_operands_d): Remove.
27552         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
27553         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
27554         VDEF_NUM, VDEF_VECT): Likewise.
27555         (copy_virtual_operands): Remove.
27556         (operand_build_cmp): Likewise.
27557         (create_ssa_artificial_load_stmt): Likewise.
27558         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
27559         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
27560         vuse_index and mayuse_index members.  Pack and move done and iter_type
27561         members to the front.
27562         (SSA_OP_VMAYUSE): Remove.
27563         (SSA_OP_VIRTUAL_USES): Adjust.
27564         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
27565         (unlink_stmt_vdef): Declare.
27566         (add_to_addressable_set): Remove.
27567         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
27568         (vrp_visit_stmt): Likewise.
27569         * doc/tree-ssa.texi (Alias analysis): Update.
27570         * doc/invoke.texi (max-aliased-vops): Remove docs.
27571         (avg-aliased-vops): Likewise.
27572         * tree-into-ssa.c (syms_to_rename): Remove.
27573         (need_to_update_vops_p): Likewise.
27574         (need_to_initialize_update_ssa_p): Rename to ...
27575         (update_ssa_initialized_fn): ... this.  Track function we are
27576         initialized for.
27577         (symbol_marked_for_renaming): Simplify.
27578         (add_new_name_mapping): Do not set need_to_update_vops_p.
27579         (dump_currdefs): Use SYMS_TO_RENAME.
27580         (rewrite_update_stmt): Always walk all uses/defs.
27581         (dump_update_ssa): Adjust.
27582         (init_update_ssa): Take function argument.  Track what we are
27583         initialized for.
27584         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
27585         (create_new_def_for): Initialize for cfun, assert we are initialized
27586         for cfun.
27587         (mark_sym_for_renaming): Simplify.
27588         (mark_set_for_renaming): Do not initialize update-ssa.
27589         (need_ssa_update_p): Simplify.  Take function argument.
27590         (name_mappings_registered_p): Assert we ask for the correct function.
27591         (name_registered_for_update_p): Likewise.
27592         (ssa_names_to_replace): Likewise.
27593         (release_ssa_name_after_update_ssa): Likewise.
27594         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
27595         (dump_decl_set): Do not print a newline.
27596         (debug_decl_set): Do it here.
27597         (dump_update_ssa): And here.
27598         * tree-ssa-loop-im.c (move_computations): Adjust.
27599         (movement_possibility): Likewise.
27600         (determine_max_movement): Likewise.
27601         (gather_mem_refs_stmt): Likewise.
27602         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
27603         or NAME_MEMORY_TAG.
27604         * tree-complex.c (update_all_vops): Remove.
27605         (expand_complex_move): Adjust.
27606         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
27607         Simplify test for memory referencing statement.  Exclude
27608         non-invariant ADDR_EXPRs.
27609         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
27610         * tree-loop-distribution.c (generate_memset_zero): Adjust.
27611         (rdg_flag_uses): Likewise.
27612         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
27613         related code.
27614         (tree_optimize_tail_calls_1): Also split the
27615         edge from the entry block if we have degenerate PHI nodes in
27616         the first basic block.
27617         * tree.c (init_ttree): Remove memory-tag related code.
27618         (tree_code_size): Likewise.
27619         (tree_node_structure): Likewise.
27620         (build7_stat): Re-write to be build6_stat.
27621         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
27622         (SSA_VAR_P): Adjust.
27623         (struct tree_memory_tag): Remove.
27624         (struct tree_memory_partition_tag): Likewise.
27625         (union tree_node): Adjust.
27626         (build7): Re-write to be build6.
27627         * tree-pass.h (pass_reset_cc_flags): Remove.
27628         (TODO_update_address_taken): New flag.
27629         (pass_simple_dse): Remove.
27630         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
27631         * params.h (MAX_ALIASED_VOPS): Remove.
27632         (AVG_ALIASED_VOPS): Likewise.
27633         * omp-low.c (expand_omp_taskreg): Update SSA form.
27634         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
27635         aliases the lhs in a copy stmt.
27636         * tree-ssa-dse.c (struct address_walk_data): Remove.
27637         (memory_ssa_name_same): Likewise.
27638         (memory_address_same): Likewise.
27639         (get_kill_of_stmt_lhs): Likewise.
27640         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
27641         unused stores.  Look through PHI nodes into post-dominated regions.
27642         (dse_optimize_stmt): Simplify.  Properly remove stores.
27643         (tree_ssa_dse): Compute dominators.
27644         (execute_simple_dse): Remove.
27645         (pass_simple_dse): Likewise.
27646         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
27647         gimple_loaded_syms and gimple_stored_syms computation.
27648         * toplev.c (dump_memory_report): Dump alias and pta stats.
27649         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
27650         (vn_reference_eq): Likewise.
27651         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
27652         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
27653         valueize_vuses): Remove.
27654         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
27655         (get_def_ref_stmt_vuse): ... this.
27656         (vn_reference_lookup_2): New function.
27657         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
27658         walking equivalent vuses.  Simplify.
27659         (vn_reference_lookup): Likewise.
27660         (vn_reference_insert): Likewise.
27661         (vn_reference_insert_pieces): Likewise.
27662         (visit_reference_op_call): Simplify.
27663         (visit_reference_op_load): Likewise.
27664         (visit_reference_op_store): Likewise.
27665         (init_scc_vn): Remove shared_lookup_vuses initialization.
27666         (free_scc_vn): Remove shared_lookup_vuses freeing.
27667         (sort_vuses, sort_vuses_heap): Remove.
27668         (get_ref_from_reference_ops): Export.
27669         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
27670         vector with single vuse pointer.
27671         (vn_reference_lookup_pieces, vn_reference_lookup,
27672         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
27673         (shared_vuses_from_stmt): Remove.
27674         (get_ref_from_reference_ops): Declare.
27675         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
27676         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
27677         memory-tag related code.
27678         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
27679         (likely_value): Add comment, skip static-chain of call statements.
27680         (surely_varying_stmt_p): Adjust.
27681         (gimplify_and_update_call_from_tree): Likewise.
27682         (execute_fold_all_builtins): Do not rebuild alias info.
27683         (gimplify_and_update_call_from_tree): Properly update VOPs.
27684         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
27685         (copy_ref_info): Remove memory-tag related code.
27686         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
27687         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
27688         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
27689         computation.
27690         * tree-ssa-dom.c (gimple_p): Remove typedef.
27691         (eliminate_redundant_computations): Adjust.
27692         (record_equivalences_from_stmt): Likewise.
27693         (avail_expr_hash): Likewise.
27694         (avail_expr_eq): Likewise.
27695         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
27696         (stmt_makes_single_load): Likewise.
27697         (stmt_makes_single_store): Likewise.
27698         * tree-ssa-alias.c: Rewrite completely.
27699         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
27700         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
27701         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
27702         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
27703         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
27704         Remove public functions.
27705         (pass_reset_cc_flags): Remove.
27706         (pass_build_alias): Move ...
27707         * tree-ssa-structalias.c (pass_build_alias): ... here.
27708         * tree-ssa-alias.c (may_be_aliased): Move ...
27709         * tree-flow-inline.h (may_be_aliased): ... here.
27710         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
27711         count_uses_and_derefs): Move ...
27712         * gimple.c: ... here.
27713         * gimple.h (count_uses_and_derefs): Declare.
27714         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
27715         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
27716         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
27717         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
27718         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
27719         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
27720         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
27721         New functions.
27722         * tree-dfa.c (refs_may_alias_p): Move ...
27723         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
27724         * tree-ssa-alias.h: New file.
27725         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
27726         (statement_sink_location): Likewise.
27727         * opts.c (decode_options): Do not adjust max-aliased-vops or
27728         avg-aliased-vops values.
27729         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
27730         (TV_CALL_CLOBBER): Likewise.
27731         (TV_FLOW_SENSITIVE): Likewise.
27732         (TV_FLOW_INSENSITIVE): Likewise.
27733         (TV_MEMORY_PARTITIONING): Likewise.
27734         (TV_ALIAS_STMT_WALK): New timevar.
27735         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
27736         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
27737         (get_address_description): Remove memory-tag related code.
27738         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
27739         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
27740         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
27741         and immediate uses in statements.  Document.
27742         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
27743         (dump_symbols): Remove.
27744         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
27745         * alias.c (get_deref_alias_set): New function split out from ...
27746         (get_alias_set): ... here.
27747         * alias.h (get_deref_alias_set): Declare.
27748         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
27749         type parameter.  Remove restrict pointer handling.  Create a
27750         ref-all pointer in case type-based alias sets do not conflict.
27751         (vect_analyze_data_refs): Remove SMT related code.
27752         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
27753         (vectorizable_load): Likewise.
27754         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
27755         (DR_SYMBOL_TAG, DR_VOPS): Remove.
27756         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
27757         Ignore vops and SMTs.
27758         (dr_analyze_alias): Likewise..
27759         (free_data_ref): Likewise.
27760         (create_data_ref): Likewise.
27761         (analyze_all_data_dependences): Likewise.
27762         (get_references_in_stmt): Adjust.
27763         * tree-flow-inline.h (gimple_aliases_computed_p,
27764         gimple_addressable_vars, gimple_call_clobbered_vars,
27765         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
27766         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
27767         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
27768         gimple_mem_ref_stats): Remove.
27769         (gimple_vop): New function.
27770         (op_iter_next_use): Remove vuses and mayuses cases.
27771         (op_iter_next_def): Remove vdefs case.
27772         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
27773         (clear_and_done_ssa_iter): Do not set removed fields.
27774         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
27775         Assert we are not iterating over vuses or vdefs if not also
27776         iterating over uses or defs.
27777         (op_iter_init_use): Likewise.
27778         (op_iter_init_def): Likewise.
27779         (op_iter_next_vdef): Remove.
27780         (op_iter_next_mustdef): Likewise.
27781         (op_iter_init_vdef): Likewise.
27782         (compare_ssa_operands_equal): Likewise.
27783         (link_use_stmts_after): Handle vuse operand.
27784         (is_call_used): Use is_call_clobbered.
27785         (is_call_clobbered): Global variables are always call clobbered,
27786         query the call-clobbers bitmap.
27787         (mark_call_clobbered): Ignore global variables.
27788         (clear_call_clobbered): Likewise.
27789         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
27790         virtual operands sanity check.
27791         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
27792         Remove.
27793         (TARGET_MEM_REF): Remove TMR_TAG operand.
27794         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
27795         Remove call-clobber related code.
27796         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
27797         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
27798         partitions or escape reason.
27799         (get_single_def_stmt, get_single_def_stmt_from_phi,
27800         get_single_def_stmt_with_phi): Remove.
27801         (dump_referenced_vars): Tidy.
27802         (get_ref_base_and_extent): Allow bare decls.
27803         (collect_dfa_stats): Adjust.
27804         * graphite.c (rename_variables_in_stmt): Adjust.
27805         (graphite_copy_stmts_from_block): Likewise.
27806         (translate_clast): Likewise.
27807         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
27808         (EXPR_DIES): New.
27809         (translate_vuse_through_block): Use the oracle.
27810         (phi_translate_1): Adjust.
27811         (value_dies_in_block_x): Use the oracle.  Cache the outcome
27812         in EXPR_DIES.
27813         (valid_in_sets): Check if the VUSE for
27814         a REFERENCE is available.
27815         (eliminate): Do not remove stmts during elimination,
27816         instead queue and remove them afterwards.
27817         (do_pre): Do not rebuild alias info.
27818         (pass_pre): Run TODO_rebuild_alias before PRE.
27819         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
27820         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
27821         (mark_all_v_defs_stmt): Remove.
27822         (mark_all_v_defs_seq): Adjust.
27823         (sra_replace): Likewise.
27824         (scalarize_use): Likewise.
27825         (scalarize_copy): Likewise.
27826         (scalarize_init): Likewise.
27827         (scalarize_ldst): Likewise.
27828         (todoflags): Remove.
27829         (tree_sra): Do not rebuild alias info.
27830         (tree_sra_early): Adjust.
27831         (pass_sra): Run TODO_update_address_taken before SRA.
27832         * tree-predcom.c (set_alias_info): Remove.
27833         (prepare_initializers_chain): Do not call it.
27834         (mark_virtual_ops_for_renaming): Adjust.
27835         (mark_virtual_ops_for_renaming_list): Remove.
27836         (initialize_root_vars): Adjust.
27837         (initialize_root_vars_lm): Likewise.
27838         (prepare_initializers_chain): Likewise.
27839         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
27840         (may_propagate_copy_into_stmt): Likewise.
27841         (merge_alias_info): Do nothing for now.
27842         (propagate_tree_value_into_stmt): Adjust.
27843         (stmt_may_generate_copy): Likewise.
27844         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
27845         not mark symbols for renaming.
27846         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
27847         with the same statement, make sure to update the new pointed-to one.
27848         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
27849         call statements, do not mark symbols for renaming.
27850         (mark_operand_necessary): Dump something.
27851         (ref_may_be_aliased): New function.
27852         (mark_aliased_reaching_defs_necessary_1): New helper function.
27853         (mark_aliased_reaching_defs_necessary): Likewise.
27854         (mark_all_reaching_defs_necessary_1): Likewise.
27855         (mark_all_reaching_defs_necessary): Likewise.
27856         (propagate_necessity): Do not process virtual PHIs.  For
27857         non-aliased loads mark all reaching definitions as necessary.
27858         For aliased loads and stores mark the immediate dominating
27859         aliased clobbers as necessary.
27860         (visited): New global static.
27861         (perform_tree_ssa_dce): Free visited bitmap after propagating
27862         necessity.
27863         (remove_dead_phis): Perform simple dead virtual PHI removal.
27864         (remove_dead_stmt): Properly unlink virtual operands when
27865         removing stores.
27866         (eliminate_unnecessary_stmts): Schedule PHI removal after
27867         stmt removal.
27868         * tree-ssa-ter.c (is_replaceable_p): Adjust.
27869         (process_replaceable): Likewise.
27870         (find_replaceable_in_bb): Likewise.
27871         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
27872         based on the single gimple vop.
27873         (verify_flow_insensitive_alias_info): Remove.
27874         (verify_flow_sensitive_alias_info): Likewise.
27875         (verify_call_clobbering): Likewise.
27876         (verify_memory_partitions): Likewise.
27877         (verify_alias_info): Likewise.
27878         (verify_ssa): Adjust..
27879         (execute_update_addresses_taken): Export.  Update SSA
27880         manually.  Optimize only when optimizing.  Use a local bitmap.
27881         (pass_update_address_taken): Remove TODO_update_ssa, add
27882         TODO_dump_func.
27883         (pass_update_address_taken): Just use TODO_update_address_taken.
27884         (init_tree_ssa): Do not initialize addressable_vars.
27885         (verify_ssa): Verify new VUSE / VDEF properties.
27886         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
27887         Do not call verify_alias_info.
27888         (delete_tree_ssa): Clear the VUSE, VDEF operands.
27889         Do not free the loaded and stored syms bitmaps.  Reset the escaped
27890         and callused solutions.  Do not free addressable_vars.
27891         Remove memory-tag related code.
27892         (warn_uninitialized_var): Aliases are always available.
27893         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
27894         * lambda-code.c (can_put_in_inner_loop): Adjust.
27895         (can_put_after_inner_loop): Likewise.
27896         (perfect_nestify): Likewise.
27897         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
27898         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
27899         (vectorizable_conversion): Do not mark symbols for renaming.
27900         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
27901         (expand_call_inline): Unlink the calls virtual operands before
27902         replacing it.
27903         (tree_function_versioning): Do not call update_ssa if we are not
27904         updating clones.  Simplify.
27905         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
27906         (propagate_with_phi): Likewise..
27907         * tree-outof-ssa.c (create_temp): Remove memory tag and call
27908         clobber code.  Assert we are not aliased or global.
27909         * tree-flow.h: Include tree-ssa-alias.h
27910         (enum escape_type): Remove.
27911         (struct mem_sym_stats_d): Likewise.
27912         (struct mem_ref_stats_d): Likewise.
27913         (struct gimple_df): Add vop member.  Remove global_var,
27914         call_clobbered_vars, call_used_vars, addressable_vars,
27915         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
27916         escaped and callused members.
27917         (struct ptr_info_def): Remove all members, add points-to solution
27918         member pt.
27919         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
27920         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
27921         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
27922         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
27923         (tree-ssa-alias.o): Likewise.
27924         (toplev.o): Add tree-ssa-alias.h
27925         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
27926         * gimple.c (gimple_set_bb): Fix off-by-one error.
27927         (is_gimple_reg): Do not handle memory tags.
27928         (gimple_copy): Also copy virtual operands.
27929         Delay updating the statement.  Do not reset loaded and stored syms.
27930         (gimple_set_stored_syms): Remove.
27931         (gimple_set_loaded_syms): Likewise.
27932         (gimple_call_copy_skip_args): Copy the virtual operands
27933         and mark the new statement modified.
27934         * tree-ssa-structalias.c (may_alias_p): Remove.
27935         (set_uids_in_ptset): Take the alias set to prune with as
27936         parameter.  Fold in the alias test of may_alias_p.
27937         (compute_points_to_sets): Compute whether a ptr is dereferenced
27938         in a local sbitmap.
27939         (process_constraint): Deal with &ANYTHING on the lhs, reject all
27940         other ADDRESSOF constraints on the lhs.
27941         (get_constraint_for_component_ref): Assert that we don't get
27942         ADDRESSOF constraints from the base of the reference.
27943         Properly generate UNKNOWN_OFFSET for DEREF if needed.
27944         (struct variable_info): Remove collapsed_to member.
27945         (get_varinfo_fc): Remove.
27946         (new_var_info): Do not set collapsed_to.
27947         (dump_constraint): Do not follow cycles.
27948         (dump_constraint_graph): Likewise.
27949         (build_pred_graph): Likewise.
27950         (build_succ_graph): Likewise.
27951         (rewrite_constraints): Likewise.
27952         (do_simple_structure_copy): Remove.
27953         (do_rhs_deref_structure_copy): Remove.
27954         (do_lhs_deref_structure_copy): Remove.
27955         (collapse_rest_of_var): Remove.
27956         (do_structure_copy): Re-implement.
27957         (pta_stats): New global variable.
27958         (dump_pta_stats): New function.
27959         (struct constraint_expr): Make offset signed.
27960         (UNKNOWN_OFFSET): Define special value.
27961         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
27962         (solution_set_expand): New helper function split out from ...
27963         (do_sd_constraint): ... here.
27964         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
27965         (do_ds_constraint): Likewise.
27966         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
27967         and CALLUSED = *CALLUSED.
27968         (set_union_with_increment): Make inc argument signed.
27969         (type_safe): Remove.
27970         (get_constraint_for_ptr_offset): Handle unknown and negative
27971         constant offsets.
27972         (first_vi_for_offset): Handle offsets before start.  Bail
27973         out early for offsets beyond the variable extent.
27974         (first_or_preceding_vi_for_offset): New function.
27975         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
27976         Together with ESCAPED = *ESCAPED this properly computes reachability.
27977         (find_what_var_points_to): New function.
27978         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
27979         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
27980         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
27981         pt_solutions_intersect): New functions.
27982         (compute_call_used_vars): Remove.
27983         (compute_may_aliases): New main entry into PTA computation.
27984         * gimple.h (gimple_p): New typedef.
27985         (struct gimple_statement_base): Remove references_memory_p.
27986         (struct gimple_statement_with_memory_ops_base): Remove
27987         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
27988         members.
27989         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
27990         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
27991         gimple_set_references_memory): Remove.
27992         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
27993         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
27994         New functions.
27995         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
27996         (verify_expr): Allow RESULT_DECL.
27997         (gimple_duplicate_bb): Do not copy virtual operands.
27998         (gimple_duplicate_sese_region): Adjust.
27999         (gimple_duplicate_sese_tail): Likewise.
28000         (mark_virtual_ops_in_region): Remove.
28001         (move_sese_region_to_fn): Do not call it.
28002         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
28003         and pass_simple_dse.
28004         (execute_function_todo): Handle TODO_update_address_taken,
28005         call execute_update_addresses_taken for TODO_rebuild_alias.
28006         (execute_todo): Adjust.
28007         (execute_one_pass): Init dump files early.
28008         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
28009         call-clobbered.
28010         (create_general_new_stmt): Clear vops.
28011         * tree-ssa-reassoc.c (get_rank): Adjust.
28012         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
28013         symbols for renaming.
28014         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
28015         (PARAM_AVG_ALIASED_VOPS): Likewise.
28016         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
28017         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
28018         * tree-ssa-operands.c: Simplify for new virtual operand representation.
28019         (operand_build_cmp, copy_virtual_operands,
28020         create_ssa_artificial_load_stmt, add_to_addressable_set,
28021         gimple_add_to_addresses_taken): Remove public functions.
28022         (unlink_stmt_vdef): New function.
28023
28024 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
28025
28026         * config.gcc (powerpc-*-linux*): Merge variants.
28027
28028 2009-04-02  Chao-ying Fu  <fu@mips.com>
28029             James Grosbach  <james.grosbach@microchip.com>
28030
28031         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
28032         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
28033         cop0_sp_offset.
28034         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
28035         keep_interrupts_masked_p, use_debug_exception_return_p.
28036         (mips_attribute_table): Add interrupt, use_shadow_register_set,
28037         keep_interrupts_masked, use_debug_exception_return.
28038         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
28039         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
28040         New functions.
28041         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
28042         (mips_print_operand): Process COP0 registers to print $0 .. $31
28043         correctly for GAS to process.
28044         (mips_interrupt_extra_call_saved_reg_p): New function.
28045         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
28046         extra registers.
28047         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
28048         (mips_compute_frame_info): Add supports for interrupt context that
28049         includes doubleword accumulators and COP0 registers.
28050         (mips_for_each_saved_acc): New function.
28051         (mips_for_each_saved_gpr_and_fpr): Change the function name from
28052         mips_for_each_saved_reg.
28053         (mips_save_reg): Save accumulators.
28054         (mips_kernel_reg_p): A new for_each_rtx callback.
28055         (mips_expand_prologue): Support interrupt handlers.
28056         (mips_restore_reg): Restore accumulators.
28057         (mips_expand_epilogue): Support interrupt handlers.
28058         (mips_can_use_return_insn): Return false for interrupt handlers.
28059         (mips_epilogue_uses): New function.
28060         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
28061         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
28062         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
28063         cop0_move): New instructions.
28064         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
28065         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
28066         defines.
28067         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
28068         New defines.
28069         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
28070         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
28071         interrupt handlers, we use K0 as the temporary register.
28072         (EPILOGUE_USES): Change to a function call.
28073         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
28074         handlers, we use K0 as the temporary register.
28075
28076         * doc/extend.texi (Function Attributes): Document interrupt,
28077         use_shadow_register_set, keep_interrupts_masked,
28078         use_debug_exception_return for MIPS attributes.
28079
28080 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
28081
28082         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
28083         Remove a number of t-files from tmake_file.
28084         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
28085         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
28086         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
28087         target_prototype, not TARGET_PROTOTYPE.
28088         (LINK_OS_GNU_SPEC): Define.
28089         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
28090         and darwin-ldoubdle.c.
28091
28092 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
28093
28094         PR driver/39293
28095         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
28096         (cpp_options): Ditto.
28097         (default_compilers): Ditto.
28098         (display_help): Ditto.
28099         (process_command): Ditto.
28100         (do_spec_1): Ditto.
28101         (set_input): Use lbasename instead of duplicate code.
28102         (save_temps_prefix): New static for -save-temps=obj.
28103         (save_temps_length): Ditto.
28104
28105         * doc/invoke.texi (-save-temps=obj): Document new variant to
28106         -save-temps switch.
28107
28108 2009-04-02  Jeff Law  <law@redhat.com>
28109
28110         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
28111         variable.
28112
28113 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
28114
28115         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
28116         * configure: Regenerated.
28117
28118 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28119
28120         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
28121         share the argument list.
28122
28123 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28124
28125         Merge
28126
28127         2009-02-12  Diego Novillo  <dnovillo@google.com>
28128
28129         * varpool.c (debug_varpool): New.
28130         * cgraph.h (debug_varpool): Declare.
28131
28132 2009-04-02  Jan Hubicka  <jh@suse.cz>
28133
28134         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
28135         pass.
28136
28137 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
28138
28139         * config/i386/i386.c (ix86_abi): Move initialization to ...
28140         (override_options): Here.
28141
28142 2009-04-02  Christian Bruel  <christian.bruel@st.com>
28143
28144         * config/sh/sh.c (sh_dwarf_register_span): New function.
28145         (TARGET_DWARF_REGISTER_SPAN): Define.
28146         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
28147
28148 2009-04-02  Ira Rosen  <irar@il.ibm.com>
28149
28150         PR tree-optimization/39595
28151         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
28152         interleaved loads group is not  greater than the SLP group size.
28153
28154 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28155
28156         * builtins.c (is_builtin_name): New.
28157         (called_as_built_in): Use is_builtin_name.
28158         * tree.h (is_builtin_name): New.
28159         * varasm.c (incorporeal_function_p): Use is_builtin_name
28160
28161 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
28162
28163         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
28164
28165 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
28166
28167         PR c++/26693
28168         * c-decl.c (clone_underlying_type): Move this ...
28169         * c-common.c (set_underlying_type): ... here.
28170         Also, make sure the function properly sets TYPE_STUB_DECL() on
28171         the newly created typedef variant type.
28172         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
28173         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
28174         points.
28175
28176 2009-04-02  Richard Guenther  <rguenther@suse.de>
28177
28178         PR tree-optimization/37221
28179         * tree-flow.h (degenerate_phi_result): Declare.
28180         * tree-ssa-dom.c (degenerate_phi_result): Export.
28181         * tree-scalar-evolution.c (analyze_initial_condition): If
28182         the initial condition is defined by a degenerate PHI node
28183         use the degenerate value.
28184
28185 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
28186
28187         PR rtl-optimization/39588
28188         * combine.c (merge_outer_ops): Do not set the constant when this
28189         is not necessary.
28190         (simplify_shift_const_1): Do not modify it either in this case.
28191
28192 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
28193
28194         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
28195         tuning is deprecated if -mtune value is set to an Itanium1 variant.
28196
28197 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
28198
28199         PR c/29027
28200         * c-lex.c (interpret_float): Default (no suffix) is double.
28201
28202 2009-04-1  Xinliang David Li  <davidxl@google.com>
28203
28204         * config/i386/i386.c (legitimate_constant_p): Recognize
28205         all one vector constant.
28206
28207 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28208
28209         * config/vax/vax.c: Add #includes to silence warnings.
28210         Change #include order to silence two warnings.
28211
28212 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28213
28214         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
28215         (ASM_SPEC): Pass -k to the assembler for PIC code.
28216
28217 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28218
28219         * config.gcc: Add vax-*-linux* to the switch.
28220         * config/vax/linux.h: New file. (TARGET_VERSION,
28221         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
28222
28223 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28224
28225         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
28226         Use predicate macros instead of GET_CODE() == foo.
28227         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
28228         ashlsi3, rotrsi3, <unnamed>): Likewise.
28229
28230 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28231
28232         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
28233         jbbccihi, jbbccisi): Remova trailing whitespace.
28234         * config/vax/constraints.md: Likewise.
28235         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
28236         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
28237         * config/vax/predicates.md: Likewise.
28238         * config/vax/vax.c (print_operand_address, vax_output_int_move,
28239         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
28240         * config/vax/vax.h: Likewise.
28241         * config/vax/vax.md (nonlocal_goto): Likewise.
28242
28243 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28244
28245         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
28246         (indirectable_address_p, adjacent_operands_p): Add spaces around
28247         braces.
28248         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
28249
28250 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28251
28252         * config/vax/vax.c (legitimate_constant_address_p,
28253         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
28254         index_term_p, reg_plus_index_p, legitimate_address_p,
28255         vax_mode_dependent_address_p): Update comments to match functions
28256         modified by the recent int->bool conversion.
28257
28258 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28259
28260         * config/vax/builtins.md: Update copyright message.
28261         * config/vax/constraints.md: Likewise.
28262         * config/vax/netbsd-elf.h: Likewise.
28263         * config/vax/predicates.md: Likewise.
28264         * config/vax/vax-protos.h: Likewise.
28265         * config/vax/vax.c: Likewise.
28266         * config/vax/vax.h: Likewise.
28267         * config/vax/vax.md: Likewise.
28268         * config/vax/vax.opt: Likewise.
28269
28270 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28271
28272         * config/vax/builtins.md (ffssi2, ffssi2_internal,
28273         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
28274         * config/vax/constraints.md (B, R): Likewise.
28275         * config/vax/predicates.md (external_memory_operand,
28276         nonimmediate_addsub_di_operand): Likewise.
28277         * config/vax/vax.c (vax_output_int_add): Likewise.
28278         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
28279         untyped_call): Likewise.
28280
28281 2009-04-01  Matt Thomas  <matt@3am-software.com>
28282
28283         * config/vax/predicates.md: New file.
28284         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
28285         external_const_operand, nonsymbolic_operand, external_memory_operand,
28286         indirect_memory_operand, indexed_memory_operand,
28287         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
28288         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
28289         predicate.
28290         * config/vax/constraints.md: New file.
28291         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
28292         New constraint.
28293         * config/vax/builtins.md: New file.
28294         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
28295         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
28296         jbbccisi): Define.
28297         * config/vax/vax.opt (mqmath): Add option.
28298         * config/vax/vax.md (isfx): Extend with DI.
28299         (VAXintQH, VAXintQHSD): Define.
28300         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
28301         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
28302         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
28303         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
28304         (movdi): Update constraints and use vax_output_int_move().
28305         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
28306         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
28307         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
28308         nonlocal_goto): New.
28309         (mov<mode>): Extend accepted operand types.
28310         (subdi3_old): Rename from subdi3, change update constraints and use
28311         a new implementation.
28312         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
28313         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
28314         MOVE_RATIO, CLEAR_RATIO): Define.
28315         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
28316         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
28317         (PRINT_OPERAND): Redefine using a function instead of inlined code.
28318         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
28319         (split_quadword_operands): Make static and really allow variable
28320         splitting.
28321         (print_operand_address): Update for PIC generation.
28322         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
28323         indexable_address_p, fixup_mathdi_operand,
28324         vax_expand_addsub_di_operands, adjacent_operands_p): New.
28325         (vax_float_literal, legitimate_constant_p,
28326         indirectable_constant_address_p, index_term_p,
28327         reg_plus_index_p): Return bool instead of int.
28328         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
28329         where needed.
28330         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
28331         generation.
28332         (vax_output_conditional_branch): Indent.
28333         (legitimate_constant_address_p, indirectable_constant_address_p,
28334         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
28335         vax_mode_dependent_address_p): Return bool instead of int, update for
28336         PIC generation.
28337         * config/vax/vax-protos.h (legitimate_constant_address_p,
28338         legitimate_constant_p, legitimate_address_p,
28339         vax_mode_dependent_address_p): Change declaration to bool.
28340         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
28341         vax_expand_addsub_di_operands, vax_output_int_subtract,
28342         vax_output_movmemsi): Declare.
28343         (split_quadword_operands, vax_float_literal): Delete declaration.
28344         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
28345         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
28346         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
28347         ASM_OUTPUT_DWARF_PCREL): Define.
28348         (ASM_SPEC): Change definition to allow PIC generation.
28349
28350 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
28351
28352         * doc/sourcebuild.texi: Update front-end requirements.
28353
28354 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28355
28356         PR target/39226
28357         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
28358         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
28359         (booldi3_internal3): Use boolean_or_operator instead of
28360         boolean_operator.
28361
28362 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
28363
28364         PR c/39605
28365         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
28366         declarator whose size is not an integer constant expression but
28367         folds to an integer constant, then treat it as a constant
28368         subsequently.
28369
28370 2009-04-01  Richard Guenther  <rguenther@suse.de>
28371
28372         * fold-const.c (fold_plusminus_mult_expr): Do not fold
28373         i * 4 + 2 to (i * 2 + 1) * 2.
28374
28375 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28376
28377         PR c/37772
28378         * c-parser.c (c_parser_asm_statement): Skip until close paren and
28379         return if c_parser_asm_string_literal returned NULL.
28380
28381 2009-04-01  Nick Clifton  <nickc@redhat.com>
28382
28383         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
28384         already defined.
28385         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
28386         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
28387         other typedefs to avoid conflicts with libgcc2.c.  Define labels
28388         to gain 16-bit bit-manipulation functions from libgcc2.c and then
28389         include it.
28390         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
28391         to gain 16-bit trapping arithmetic functions from libgcc2.c and
28392         then include it.
28393
28394 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
28395
28396         * varasm.c (default_function_rodata_section): Declare DOT as
28397         const char*.
28398
28399 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
28400             Andrey Galkin  <agalkin@hypercom.com>
28401
28402         PR/39492
28403         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
28404         Make object_name unique for each process.
28405
28406 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28407
28408         PR other/39591
28409         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
28410         addressable variables in the parallel that could go out of scope while
28411         running queued tasks.
28412
28413 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
28414
28415         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
28416         (CASE_VALUES_THRESHOLD): Redefine.
28417         * config/avr/avr.c (avr_override_options): Remove initialization of
28418         avr_case_values_threshold variable.
28419         (avr_case_values_threshold): Remove variable. Add new function.
28420         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
28421         * config/avr/avr.opt (mno-tablejump): Remove option.
28422         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
28423
28424 2009-04-01  DJ Delorie  <dj@redhat.com>
28425
28426         * varasm.c (default_function_rodata_section): Don't assume
28427         anything about where the first '.' in the section name is.
28428
28429 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
28430
28431         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
28432         rs6000_emit_stack_tie.
28433
28434 2009-03-31  Ian Lance Taylor  <iant@google.com>
28435
28436         * tree-eh.c (tree_remove_unreachable_handlers): Compare
28437         gimple_code with GIMPLE_RESX, not RESX.
28438
28439 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28440
28441         * c-common.c (c_get_ident): New.
28442         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
28443
28444 2009-04-01  Ben Elliston  <bje@au.ibm.com>
28445
28446         * config/rs6000/sysv4.opt (msdata): Improve option description.
28447
28448 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
28449
28450         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
28451         (divdf3_internal_lat): Remove.
28452         (divxf3_internal_lat): Remove.
28453         (divxf3_internal_thr): Remove.
28454         (divxf): Use divxf3_internal.
28455         * config/ia64/div.md (divsf3_internal_lat): New.
28456         (divdf3_internal_lat): New.
28457         (divxf3_internal): New.
28458
28459 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28460
28461         PR c/448
28462         * Makefile.in (USE_GCC_STDINT): Define.
28463         (stmp-int-hdrs): Install stdint.h if applicable.
28464         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
28465         if known.
28466         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
28467         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
28468         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
28469         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
28470         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
28471         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
28472         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
28473         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
28474         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
28475         (c_common_nodes_and_builtins): Initialize
28476         underlying_wchar_type_node.  Do not initialize
28477         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
28478         nodes for new types.
28479         (c_stddef_cpp_builtins): Define macros for new types.
28480         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
28481         Remove.
28482         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
28483         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
28484         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
28485         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
28486         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
28487         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
28488         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
28489         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
28490         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
28491         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
28492         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
28493         int16_type_node, int32_type_node, int64_type_node,
28494         uint8_type_node, uint16_type_node, c_uint32_type_node,
28495         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
28496         int_least32_type_node, int_least64_type_node,
28497         uint_least8_type_node, uint_least16_type_node,
28498         uint_least32_type_node, uint_least64_type_node,
28499         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
28500         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
28501         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
28502         uintptr_type_node): Define.
28503         * c-cppbuiltin.c (builtin_define_constants,
28504         builtin_define_type_minmax): New.
28505         (builtin_define_stdint_macros): Define more macros.
28506         (c_cpp_builtins): Define more limit macros.
28507         (type_suffix): New.
28508         (builtin_define_type_max): Define in terms of
28509         builtin_define_type_minmax.  Remove is_long parameter.  All
28510         callers changed.
28511         * config.gcc (use_gcc_stdint): Define.
28512         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
28513         Add newlib-stdint.h for generic targets.
28514         * config/glibc-stdint.h, config/newlib-stdint.h,
28515         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
28516         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
28517         * config/score/score.h (UINTPTR_TYPE): Define.
28518         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
28519         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
28520         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
28521         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
28522         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
28523         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
28524         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
28525         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
28526         * config/spu/spu.h (STDINT_LONG32): Define.
28527         * configure.ac (use_gcc_stdint): Substitute.
28528         * configure: Regenerate.
28529         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
28530         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
28531         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
28532         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
28533         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
28534         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
28535         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
28536         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
28537         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
28538         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
28539         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
28540         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
28541         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
28542         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
28543         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
28544         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
28545         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
28546         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
28547         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
28548         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
28549         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
28550         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
28551         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
28552         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
28553         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
28554         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
28555         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
28556         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
28557         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
28558
28559 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
28560
28561         * loop-iv.c (suitable_set_for_replacement): Renamed from
28562         simplify_using_assignment; changed to return bool and to accept new
28563         args DEST and SRC.  Return true iff we find a source/destination pair
28564         that can be used to make a replacement, and fill SRC and DEST if so.
28565         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
28566         changed.
28567         (simplify_using_initial_values): Deal with altered regs here and track
28568         more precisely the effect they have on the validity of our expression.
28569
28570         * loop-iv.c (simplify_using_condition): A condition of the form
28571         (EQ REG CONST) can be used to simply make a substitution.
28572         (simplify_using_initial_values): Keep track of conditions we have seen
28573         and keep using them to simplify new expressions, while applying the
28574         same substitutions to them as to the expression.
28575
28576         * simplify-rtx.c (simplify_relational_operation_1): Simplify
28577         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
28578         GEU/LTU reversed.
28579
28580         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
28581         changed.  Use this when trying to improve the upper bound.
28582         Generate the comparison by using simplify_gen_relational.
28583
28584         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
28585
28586         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
28587         functions.
28588         (simplify_using_assignment, simplify_using_initial_values): Call
28589         replace_in_expr to make replacements.  Call replace_single_def_regs
28590         once on the initial version of the expression.
28591
28592 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
28593
28594         PR target/27237
28595         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
28596
28597 2009-03-31  Richard Guenther  <rguenther@suse.de>
28598
28599         PR middle-end/31029
28600         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
28601         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
28602
28603 2009-03-31  Richard Guenther  <rguenther@suse.de>
28604
28605         * tree.h (div_if_zero_remainder): Declare.
28606         * fold-const.c (div_if_zero_remainder): Export.
28607         * tree-ssa-forwprop.c
28608         (forward_propagate_addr_into_variable_array_index): Handle
28609         constant array index addition outside of the variable index.
28610
28611 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28612
28613         PR target/39592
28614         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
28615         define_splits, floatunssi<mode>2): Require x87 conversions from
28616         DImode to be permitted.
28617
28618 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28619
28620         PR preprocessor/15638
28621         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
28622
28623 2009-03-31  Richard Guenther  <rguenther@suse.de>
28624
28625         PR middle-end/23401
28626         PR middle-end/27810
28627         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
28628         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
28629         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
28630         a separate statement.
28631         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
28632         (lookup_tmp_var): Likewise.
28633         (is_gimple_formal_tmp_or_call_rhs): Remove.
28634         (is_gimple_reg_or_call_rhs): Rename to ...
28635         (is_gimple_reg_rhs_or_call): ... this.
28636         (is_gimple_mem_or_call_rhs): Rename to ...
28637         (is_gimple_mem_rhs_or_call): ... this.
28638         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
28639         DECL_GIMPLE_REG_P only if is_formal is true.
28640         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
28641         for non-proper post-modify expression gimplification.
28642         (gimplify_self_mod_expr): For post-modify expressions gimplify
28643         the lvalue to a minimal lvalue.
28644         (rhs_predicate_for): Remove formal temp case.
28645         (gimplify_modify_expr_rhs): Likewise.
28646         (gimplify_addr_expr): Use is_gimple_reg.
28647         (gimplify_expr): Remove formal temp cases.
28648         (gimple_regimplify_operands): Likewise.
28649         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
28650         and FILTER_EXPR like constants.
28651         * gimple.c (walk_gimple_op): Fix val_only initialization, use
28652         is_gimple_reg.
28653         (is_gimple_formal_tmp_rhs): Remove.
28654         (is_gimple_reg_rhs): Remove special casing.
28655         (is_gimple_mem_rhs): Fix.
28656         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
28657         (is_gimple_formal_tmp_var): Remove.
28658         (is_gimple_formal_tmp_reg): Likewise.
28659         (is_gimple_min_lval): Allow invariant component ref parts.
28660         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
28661         is_gimple_formal_tmp_reg): Remove declarations.
28662         * tree-cfg.c (verify_expr): Verify that variables with address
28663         taken do not have DECL_GIMPLE_REG_P set.
28664         * tree-mudflap.c (mf_build_check_statement_for): Use
28665         force_gimple_operand instead of gimplify_expr.
28666
28667 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
28668
28669         * modulo-sched.c (sms_schedule_by_order): Pass the actual
28670         schedulable rows to compute_split_row.
28671
28672 2009-03-31  Ben Elliston  <bje@au.ibm.com>
28673
28674         PR target/31635
28675         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
28676         OPT_mvrsave.
28677
28678 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
28679
28680         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
28681         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
28682         * configure: Regenerate.
28683         * config.in: Regenerate.
28684         * config/rs6000/rs6000.opt (mtls-markers): Add.
28685         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
28686         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
28687         (tls_ld_aix, tls_ld_sysv): Likewise.
28688         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
28689         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
28690
28691 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
28692
28693         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
28694
28695 2009-03-30  Jan Hubicka  <jh@suse.cz>
28696
28697         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
28698         out of RESX.
28699         (tree_remove_unreachable_handlers): Cleanup EH predecestor
28700         detection and label handling.
28701
28702 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28703
28704         * ira-int.h (ira_allocno): Rename left_conflicts_num to
28705         left_conflicts_size.
28706         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
28707         ALLOCNO_LEFT_CONFLICTS_SIZE.
28708
28709         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
28710         remove_allocno_from_bucket_and_push,
28711         allocno_spill_priority_compare, push_allocnos_to_stack,
28712         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
28713         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
28714         (setup_allocno_left_conflicts_num): Ditto.  Rename to
28715         setup_allocno_left_conflicts_size.
28716         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
28717         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
28718         setup_allocno_left_conflicts_size instead of
28719         setup_allocno_left_conflicts_num.
28720
28721         * ira-build.c (ira_create_allocno): Use
28722         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
28723         ALLOCNO_LEFT_CONFLICTS_NUM.
28724
28725 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28726
28727         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
28728         instead of DF_LR_OUT.
28729
28730         * ira-lives.c (process_bb_node_lives): Ditto.
28731
28732         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
28733         instead of DF_LR_{OUT,IN}.
28734
28735         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
28736
28737         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
28738
28739 2009-03-30  Jan Hubicka  <jh@suse.cz>
28740
28741         * except.c (label_to_region_map): Fix thinko.
28742
28743 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
28744
28745         PR middle-end/38237
28746         * tree.h (tree_find_value): New declaration.
28747         * tree.c (tree_find_value): New function.
28748         * varasm.c (assemble_external): Avoid duplicate entries on lists.
28749
28750 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
28751
28752         PR debug/39563
28753         * c-decl.c (struct c_binding): Add locus field.
28754         (bind): Add locus argument, set locus field from it.
28755         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
28756         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
28757         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
28758         implicitly_declare, undeclared_variable, lookup_label,
28759         declare_label, c_make_fname_decl, c_builtin_function,
28760         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
28761         bind callers.
28762
28763 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
28764
28765         PR target/38781
28766         * config/i386/i386.c (classify_argument): Check total size of
28767         structure.
28768
28769 2009-03-30  Martin Jambor  <mjambor@suse.cz>
28770
28771         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
28772         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
28773         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
28774         respectively.
28775
28776         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
28777         seen_variable_array_ref while also traversing a union.
28778
28779         * tree-inline.c (optimize_inline_calls): Do not call
28780         cgraph_node_remove_callees.
28781         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
28782         (pass_remove_cgraph_callee_edges): New variable.
28783         * passes.c (init_optimization_passes): Add
28784         pass_remove_cgraph_callee_edges after early inlining and before all
28785         late intraprocedural passes.
28786
28787         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
28788
28789 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28790
28791         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
28792         Fix typos in names.
28793
28794 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28795
28796         * combine.c (simplify_comparison): Use have_insn_for.
28797         * dojump.c (do_jump): Likewise.
28798
28799 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28800
28801         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
28802         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
28803         sparc_compare_op0 like sparc_compare_emitted used to be handled.
28804         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
28805         instead of sparc_compare_emitted.
28806         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
28807         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
28808         instead of sparc_compare_emitted.
28809
28810 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28811
28812         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
28813         enter/exit cfglayout mode.
28814         (pass_partition_block): Require it.
28815         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
28816         (combine_instructions): Track basic blocks instead of labels.
28817         (update_cfg_for_uncondjump): New.
28818         (try_combine): Use it.  Update jumps after rescanning.
28819         (pass_combine): Require PROP_cfglayout.
28820         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
28821
28822 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28823
28824         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
28825         Provide/destroy PROP_cfglayout respectively.
28826         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
28827         * tree-pass.h (PROP_cfglayout): New.
28828
28829 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28830
28831         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
28832         fold_convert_const_fixed_from_fixed,
28833         fold_convert_const_fixed_from_int,
28834         fold_convert_const_fixed_from_real, fold_negate_const): Do not
28835         set TREE_CONSTANT_OVERFLOW.
28836         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
28837         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
28838
28839 2009-03-30  Ira Rosen  <irar@il.ibm.com>
28840
28841         * tree-vect-loop-manip.c: New file.
28842         * tree-vectorizer.c: Update documentation and included files.
28843         (vect_loop_location): Make extern.
28844         (rename_use_op): Move to tree-vect-loop-manip.c
28845         (rename_variables_in_bb, rename_variables_in_loop,
28846         slpeel_update_phis_for_duplicate_loop,
28847         slpeel_update_phi_nodes_for_guard1,
28848         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
28849         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
28850         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
28851         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
28852         find_loop_location): Likewise.
28853         (new_stmt_vec_info): Move to tree-vect-stmts.c.
28854         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
28855         get_vectype_for_scalar_type, vect_is_simple_use,
28856         supportable_widening_operation, supportable_narrowing_operation):
28857         Likewise.
28858         (bb_in_loop_p): Move to tree-vect-loop.c.
28859         (new_loop_vec_info, destroy_loop_vec_info,
28860         reduction_code_for_scalar_code, report_vect_op,
28861         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
28862         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
28863         (vect_supportable_dr_alignment): Likewise.
28864         * tree-vectorizer.h (tree-data-ref.h): Include.
28865         (vect_loop_location): Declare.
28866         Reorganize function declarations according to the new file structure.
28867         * tree-vect-loop.c: New file.
28868         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
28869         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
28870         * tree-vect-data-refs.c: New file.
28871         * tree-vect-patterns.c (timevar.h): Don't include.
28872         * tree-vect-stmts.c: New file.
28873         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
28874         tree-vect-slp.c, tree-vect-loop.c.
28875         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
28876         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
28877         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
28878         (tree-vect-analyze.o): Remove.
28879         (tree-vect-transform.o): Likewise.
28880         (tree-vect-data-refs.o): Add rule.
28881         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
28882         tree-vect-slp.o): Likewise.
28883         (tree-vect-patterns.o): Remove redundant dependencies.
28884         (tree-vectorizer.o): Likewise.
28885         * tree-vect-slp.c: New file.
28886
28887 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28888
28889         * optc-gen.awk: Warn if an option flag has multiple different
28890         help strings.
28891
28892 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
28893
28894         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
28895         -floop-block): Document dependences on PPL, CLooG and Graphite.
28896
28897 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
28898
28899         PR rtl-optimization/323
28900         * c-common.c (c_fully_fold, convert_and_check,
28901         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
28902         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
28903         * c-common.def (EXCESS_PRECISION_EXPR): New.
28904         * c-cppbuiltin.c (builtin_define_float_constants): Define
28905         constants with enough digits for long double.
28906         * c-lex.c (interpret_float): Interpret constant with excess
28907         precision where appropriate.
28908         * c-opts.c (c_common_post_options): Set
28909         flag_excess_precision_cmdline.  Give an error for
28910         -fexcess-precision=standard for C++ for processors where the
28911         option is significant.
28912         * c-parser.c (c_parser_conditional_expression): Handle excess
28913         precision in condition.
28914         * c-typeck.c (convert_arguments): Handle arguments with excess
28915         precision.
28916         (build_unary_op): Move excess precision outside operation.
28917         (build_conditional_expr): Likewise.
28918         (build_compound_expr): Likewise.
28919         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
28920         (build_modify_expr): Handle excess precision in RHS.
28921         (convert_for_assignment): Handle excess precision in converted
28922         value.
28923         (digest_init, output_init_element, process_init_element): Handle
28924         excess precision in initializer.
28925         (c_finish_return): Handle excess precision in return value.
28926         (build_binary_op): Handle excess precision in operands and add
28927         excess precision as needed for operation.
28928         * common.opt (-fexcess-precision=): New option.
28929         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
28930         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
28931         For standard excess precision, output explicit conversion to and
28932         truncation from XFmode.
28933         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
28934         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
28935         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
28936         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
28937         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
28938         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
28939         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
28940         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
28941         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
28942         define_splits, sqrt<mode>2): Disable where appropriate for
28943         standard excess precision.
28944         * convert.c (convert_to_real): Do not shorten arithmetic to type
28945         for which excess precision would be used.
28946         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
28947         * doc/invoke.texi (-fexcess-precision=): Document option.
28948         (-mfpmath=): Correct index entry.
28949         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
28950         flag_excess_precision): New.
28951         * langhooks.c (lhd_post_options): Set
28952         flag_excess_precision_cmdline.
28953         * opts.c (common_handle_option): Handle -fexcess-precision=.
28954         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
28955         init_excess_precision): New.
28956         (lang_dependent_init_target): Call init_excess_precision.
28957         * tree.c (excess_precision_type): New.
28958         * tree.h (excess_precision_type): Declare.
28959
28960 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
28961
28962         PR c/35235
28963         * c-typeck.c (build_component_ref): Do not copy qualifiers from
28964         non-lvalue to component.
28965
28966 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
28967
28968         PR preprocessor/34695
28969         * Makefile.in (c-opts.o): Depend on c-tree.h.
28970         * c-common.c: Move down include of diagnostic.h.
28971         (done_lexing, c_cpp_error): New.
28972         * c-common.h (done_lexing): Declare.
28973         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
28974         (parse_in).
28975         * c-opts.c: Include c-tree.h.
28976         (c_common_init_options): Set preprocessor error callback.
28977         (c_common_handle_option): Do not set preprocessor
28978         inhibit_warnings, warnings_are_errors, warn_system_headers,
28979         pedantic_errors or inhibit_warnings flags.
28980         (c_common_post_options): Do not check cpp_errors (parse_in).
28981         (c_common_finish): Do not output dependencies if there were
28982         errors.  Do not check return value of cpp_finish.
28983         * c-ppoutput.c (pp_file_change): Set input_location.
28984         * c-tree.h (c_cpp_error): Declare.
28985         * diagnostic.c (diagnostic_set_info_translated): Also initialize
28986         override_column.
28987         (diagnostic_build_prefix): Check override_column.
28988         * diagnostic.h (diagnostic_info): Add override_column field.
28989         (diagnostic_override_column): Define.
28990
28991 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
28992
28993         * c-common.c (c_expand_expr, c_staticp): Remove.
28994         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
28995         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
28996         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
28997         * c-gimplify.c (gimplify_compound_literal_expr,
28998         optimize_compound_literals_in_ctor): Remove.
28999         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
29000         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
29001         * c-semantics.c (emit_local_var): Remove.
29002
29003         * langhooks-def.h (lhd_expand_expr): Remove.
29004         * langhooks.c (lhd_expand_expr): Remove.
29005         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
29006
29007         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
29008         handling from c-semantics.c; don't call into langhook.
29009         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
29010         * gimplify.c (gimplify_compound_literal_expr,
29011         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
29012         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
29013         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
29014         as was done in c-gimplify.c.
29015         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
29016         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
29017         Move from c-common.h.
29018         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
29019
29020         * tree.c (staticp): Do not call langhook.
29021         * langhooks.c (lhd_staticp): Delete.
29022         * langhooks-def.h (lhd_staticp): Delete prototype.
29023         (LANG_HOOKS_STATICP): Delete.
29024         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
29025
29026         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
29027         instead of DECL_STMTs.
29028
29029 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
29030
29031         PR c/456
29032         PR c/5675
29033         PR c/19976
29034         PR c/29116
29035         PR c/31871
29036         PR c/35198
29037         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
29038         void_type_node.
29039         (fold_call_expr): Return a NOP_EXPR from folding rather than the
29040         contained expression.
29041         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
29042         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
29043         conditional expressions for C.
29044         (decl_constant_value_for_optimization): Move from
29045         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
29046         whether optimizing and that the expression is a VAR_DECL not of
29047         array type instead of doing such checks in the caller.  Do not
29048         check pedantic.  Call gcc_unreachable for C++.
29049         * c-common.def (C_MAYBE_CONST_EXPR): New.
29050         * c-common.h (c_fully_fold, c_save_expr,
29051         decl_constant_value_for_optimization): New prototypes.
29052         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
29053         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
29054         EXPR_INT_CONST_OPERANDS): Define.
29055         * c-convert.c (convert): Strip nops from expression.
29056         * c-decl.c (groktypename): Take extra parameters expr and
29057         expr_const_operands.  Update call to grokdeclarator.
29058         (start_decl): Update call to grokdeclarator.  Add statement for
29059         expressions used in type of decl.
29060         (grokparm): Update call to grokdeclarator.
29061         (push_parm_decl): Update call to grokdeclarator.
29062         (build_compound_literal): Add parameter non_const and build a
29063         C_MAYBE_COSNT_EXPR if applicable.
29064         (grokdeclarator): Take extra parameters expr and
29065         expr_const_operands.  Track expressions used in declaration
29066         specifiers and declarators.  Fold array sizes and track whether
29067         they are constant expressions and whether they are integer
29068         constant expressions.
29069         (parser_xref_tag): Set expr and expr_const_operands fields in
29070         return value.
29071         (grokfield): Update call to grokdeclarator.
29072         (start_function): Update call to grokdeclarator.
29073         (build_null_declspecs): Set expr and expr_const_operands fields in
29074         return value.
29075         (declspecs_add_type): Handle expressions in typeof specifiers.
29076         * c-parser.c (c_parser_declspecs): Set expr and
29077         expr_const_operands fields for declaration specifiers.
29078         (c_parser_enum_specifier): Likewise.
29079         (c_parser_struct_or_union_specifier): Likewise.
29080         (c_parser_typeof_specifier): Likewise.  Update call to
29081         groktypename.  Fold expression as needed.  Return expressions with
29082         type instead of adding statements.
29083         (c_parser_attributes): Update calls to c_parser_expr_list.
29084         (c_parser_statement_after_labels): Fold expression before passing
29085         to objc_build_throw_stmt.
29086         (c_parser_condition): Fold expression.
29087         (c_parser_asm_operands): Fold expression.
29088         (c_parser_conditional_expression): Use c_save_expr.  Update call
29089         to build_conditional_expr.
29090         (c_parser_alignof_expression): Update call to groktypename.
29091         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
29092         original_code.  Fold expression argument of va_arg.  Create
29093         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
29094         argument to va_arg.  Update calls to groktypename.  Fold array
29095         index for offsetof.  Verify that first argument to
29096         __builtin_choose_expr has integer type.
29097         (c_parser_postfix_expression_after_paren_type): Update calls to
29098         groktypename and build_compound_literal.  Handle expressions with
29099         side effects in type name.
29100         (c_parser_postfix_expression_after_primary): Update call to
29101         c_parser_expr_list.  Set original_code for calls to
29102         __builtin_constant_p.
29103         (c_parser_expr_list): Take extra parameter fold_p.  Fold
29104         expressions if requested.
29105         (c_parser_objc_type_name): Update call to groktypename.
29106         (c_parser_objc_synchronized_statement): Fold expression.
29107         (c_parser_objc_receiver): Fold expression.
29108         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
29109         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
29110         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
29111         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
29112         (struct c_typespec): Add elements expr and expr_const_operands.
29113         (struct c_declspecs): Add elements expr and expr_const_operands.
29114         (groktypename, build_conditional_expr, build_compound_literal):
29115         Update prototypes.
29116         (in_late_binary_op): Declare.
29117         * c-typeck.c (note_integer_operands): New function.
29118         (in_late_binary_op): New variable.
29119         (decl_constant_value_for_broken_optimization): Move to c-common.c
29120         and rename to decl_constant_value_for_optimization.
29121         (default_function_array_conversion): Do not strip nops.
29122         (default_conversion): Do not call
29123         decl_constant_value_for_broken_optimization.
29124         (build_array_ref): Do not fold result.
29125         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
29126         result when operand is a VLA.
29127         (c_expr_sizeof_type): Update call to groktypename.  Handle
29128         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
29129         result when operand names a VLA type.
29130         (build_function_call): Update call to build_compound_literal.
29131         Only fold result for calls to __builtin_* functions.  Strip
29132         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
29133         the function designator.
29134         (convert_arguments): Fold arguments.  Update call to
29135         convert_for_assignment.
29136         (build_unary_op): Handle increment and decrement of
29137         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
29138         decrement earlier.  Fold operand of increment and decrement.
29139         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
29140         built for integer operand.  Wrap returns that are INTEGER_CSTs
29141         without being integer constant expressions or that have integer
29142         constant operands without being INTEGER_CSTs.
29143         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
29144         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
29145         result is an integer constant expression or can be used in
29146         unevaluated parts of one and avoid folding and wrap as
29147         appropriate.  Fold operands before possibly doing -Wsign-compare
29148         warnings.
29149         (build_compound_expr): Wrap result for C99 if operands can be used
29150         in integer constant expressions.
29151         (build_c_cast): Update call to digest_init.  Do not ignore
29152         overflow from casting floating-point constants to integers.  Wrap
29153         results that could be confused with integer constant expressions,
29154         null pointer constants or floating-point constants.
29155         (c_cast_expr): Update call to groktypename.  Handle expressions
29156         included in type name.
29157         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
29158         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
29159         Update calls to convert_for_assignment.
29160         (convert_for_assignment): Take new parameter
29161         null_pointer_constant.  Do not strip nops or call
29162         decl_constant_value_for_broken_optimization.  Set
29163         in_late_binary_op for conversions to boolean.
29164         (store_init_value): Update call to digest_init.
29165         (digest_init): Take new parameter null_pointer_constant.  Do not
29166         call decl_constant_value_for_broken_optimization.  pedwarn for
29167         initializers not constant expressions.  Update calls to
29168         convert_for_assignment.
29169         (constructor_nonconst): New.
29170         (struct constructor_stack): Add nonconst element.
29171         (really_start_incremental_init, push_init_level, pop_init_level):
29172         Handle constructor_nonconst and nonconst element.
29173         (set_init_index): Call constant_expression_warning for array
29174         designators.
29175         (output_init_element): Fold value.  Set constructor_nonconst as
29176         applicable.  pedwarn for initializers not constant expressions.
29177         Update call to digest_init.  Call constant_expression_warning
29178         where constant initializers are required.
29179         (process_init_element): Use c_save_expr.
29180         (c_finish_goto_ptr): Fold expression.
29181         (c_finish_return): Fold return value.  Update call to
29182         convert_for_assignment.
29183         (c_start_case): Fold switch expression.
29184         (c_process_expr_stmt): Fold expression.
29185         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
29186         ensure statement expression is not evaluated in constant expression.
29187         (build_binary_op): Track whether results are integer constant
29188         expressions or may occur in such, disable folding and wrap results
29189         as applicable.  Fold operands for -Wsign-compare warnings unless
29190         in_late_binary_op.
29191         (c_objc_common_truthvalue_conversion): Handle results folded to
29192         integer constants that are not integer constant expressions.
29193         * doc/extend.texi: Document when typeof operands are evaluated,
29194         that condition of __builtin_choose_expr is an integer constant
29195         expression, and more about use of __builtin_constant_p in
29196         initializers.
29197
29198 2009-03-29  Richard Guenther  <rguenther@suse.de>
29199
29200         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
29201         propagate addresses of array references.
29202
29203 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
29204
29205         * regmove.c (perhaps_ends_bb_p): Remove.
29206         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
29207         from INSN and check that the main loop stays within that basic block.
29208         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
29209         (regmove_forward_pass): Split out from regmove_optimize.  Use
29210         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
29211         (regmove_backward_pass): Split out from regmove_optimize.  Use
29212         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
29213         (regmove_optimize): Simplify.
29214
29215 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
29216
29217         PR target/39545
29218         * config/i386/i386.c (classify_argument): Ignore flexible array
29219         member in struct and warn ABI change.
29220
29221 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
29222
29223         * config/i386/i386-protos.h (ix86_agi_dependent): New.
29224
29225         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
29226         (ix86_adjust_cost): Updated.
29227
29228 2009-03-29  Jan Hubicka  <jh@suse.cz>
29229
29230         PR middle-end/28850
29231         * tree-pass.h (pass_cleanup_eh): New function.
29232         (remove_unreachable_regions): Break code handling RTL
29233         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
29234         that can not be reached by runtime.
29235         (can_be_reached_by_runtime): New function.
29236         (label_to_region_map): New function.
29237         (num_eh_regions): New function.
29238         (rtl_remove_unreachable_regions): New function.
29239         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
29240         (remove_eh_region): New function.
29241         * except.h: Include sbitmap and vecprim.
29242         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
29243         num_eh_regions): Declare.
29244         * passes.c (init_optimization_passes): Schedule cleanup_eh.
29245         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
29246         * tree-eh.c (tree_remove_unreachable_handlers): New function.
29247         (tree_empty_eh_handler_p): New function.
29248         (cleanup_empty_eh): New function.
29249         (cleanup_eh): New function.
29250         (pass_cleanup_eh): New function.
29251
29252 2009-03-29  Jan Hubicka  <jh@suse.cz>
29253
29254         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
29255         for removed regions.
29256
29257 2009-03-29  Jan Hubicka  <jh@suse.cz>
29258
29259         * except.c (dump_eh_tree): Dump all datastructures.
29260
29261 2009-03-29  Jan Hubicka  <jh@suse.cz>
29262
29263         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
29264         (duplicate_eh_regions_1): Likewise.
29265         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
29266         vector; call EH verification.
29267         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
29268         Be ready for region being removed.
29269
29270 2009-03-29  Jan Hubicka  <jh@suse.cz>
29271
29272         * bitmap.c (bitmap_last_set_bit): New function.
29273         * bitmap.h (bitmap_last_set_bit): Declare.
29274
29275 2009-03-29  David Ayers  <ayers@fsfe.org>
29276
29277         PR objc/27377
29278         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
29279         by calling objc_compare_types and surpress warnings about
29280         incompatible C pointers that are compatible ObjC pointers.
29281
29282 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
29283
29284         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
29285         call initialize_inline_failed.
29286         (initialize_inline_failed): Move it from here ...
29287         * cgraph.c (initialize_inline_failed): ... to here.
29288         (cgraph_create_edge): Call initialize_inline_failed rather than
29289         setting inline_failed directly.
29290
29291 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29292
29293         PR target/32542
29294         * sysv4.opt (msdata): Improve comment.
29295         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
29296         * sysv4.h (SVR4_ASM_SPEC): Likewise.
29297
29298 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29299
29300         PR target/30451
29301         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
29302         load and store attributes.
29303
29304 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29305
29306         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
29307         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
29308         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
29309         * doc/extend.texi (X86 Built-in Functions): Add index entries for
29310         __builtin_infq and __builtin_huge_valq.
29311
29312 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
29313
29314         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
29315         atmega8m1 devices.
29316         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
29317         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
29318
29319 2009-03-28  Xinliang David Li  <davidxl@google.com>
29320
29321         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
29322         (do_dbg_cnt): New function.
29323
29324 2009-03-28  Jan Hubicka  <jh@suse.cz>
29325
29326         Merge from pretty-ipa:
29327
29328         2009-03-27  Jan Hubicka  <jh@suse.cz>
29329
29330         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
29331         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
29332         * passes.c (function_called_by_processed_nodes_p): New.
29333         * ipa-pure-const.c (check_call): Fix handling of operands.
29334         (analyze_function): Dump debug output for skipped bodies.
29335         (local_pure_const): Use function_called_by_processed_nodes_p.
29336         * dwarf2out.c (reference_to_unused): Use output.
29337         * passes.c (do_per_function_toporder): Likewise.
29338
29339         2008-11-12  Jan Hubicka  <jh@suse.cz>
29340
29341         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
29342         * ipa-pure-const.c (funct_state_d): Add can throw field; make
29343         state_set_in_source enum
29344         (check_decl): Ignore memory tags; do not set fake looping flags;
29345         dump diagnostics.
29346         (check_operand, check_tree, check_rhs_var, check_lhs_var,
29347         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
29348         (check_call, analyze_function): Rewrite.
29349         (check_stmt): New.
29350         (add_new_function): Update call of analyze_function.
29351         (generate_summary): Add call of analyze_function.
29352         (propagate): Propagate can_throw; handle state_set_in_source correctly.
29353         (local_pure_const): New function.
29354         (pass_local_pure_const): New pass.
29355         * ipa-inline.c (inline_transform): Set after_inlining.
29356         * tree-eh.c (stmt_can_throw_external): New.
29357         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
29358         work with aliasing built.
29359         * tree-flow.h (stmt_can_throw_external): New.
29360         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
29361         and local pure/const pass in early and late optimization queue.
29362
29363 2009-03-28  Martin Jambor  <mjambor@suse.cz>
29364
29365         * fold-const.c (get_pointer_modulus_and_residue): New parameter
29366         allow_func_align.
29367         (fold_binary): Allow function decl aligment consideration is the
29368         second argument is integer constant one.
29369         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
29370         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
29371         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
29372
29373 2009-03-28  Jan Hubicka  <jh@suse.cz>
29374
29375         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
29376         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
29377         * function.h (rtl_data): Add nothrow flag.
29378         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
29379         set DECL_NOTHROW for AVAILABLE functions.
29380
29381 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
29382
29383         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
29384         following vector keyword has expansion starting with pixel or bool
29385         keyword, expand vector to __vector and pixel or bool to __pixel or
29386         __bool.
29387
29388         PR c++/39554
29389         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
29390         warn_if_disallowed_function_p): Removed.
29391         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
29392         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
29393         warning_if_disallowed_function_p.
29394         * flags.h (warn_if_disallowed_function_p,
29395         warn_disallowed_functions): Removed.
29396         * common.opt (Wdisallowed-function-list=): Removed.
29397         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
29398
29399 2009-03-28  Richard Guenther  <rguenther@suse.de>
29400
29401         PR tree-optimization/38723
29402         * tree-ssa-pre.c (compute_avail): Add all default definitions to
29403         the entry block.
29404
29405 2009-03-28  Jan Hubicka  <jh@suse.cz>
29406
29407         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
29408         test introduced by my previous patch.
29409
29410 2009-03-28  Richard Guenther  <rguenther@suse.de>
29411
29412         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
29413         the PHIs value undefined.
29414
29415 2009-03-28  Jan Hubicka  <jh@suse.cz>
29416
29417         * tree-pass.h (pass_fixup_cfg): New pass.
29418         * ipa-inline.c (inline_transform): Set
29419         always_inline_functions_inlined/after_inlining.
29420         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
29421         (pass_fixup_cfg): New pass.
29422         * passes.c (init_optimization_passes): Add fixup_cfg.
29423
29424 2009-03-28  Richard Guenther  <rguenther@suse.de>
29425
29426         PR tree-optimization/38458
29427         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
29428         argument use the arguments copy-of value.
29429
29430 2009-03-28  Richard Guenther  <rguenther@suse.de>
29431
29432         PR tree-optimization/38180
29433         * tree-ssa-ccp.c (get_default_value): Simplify.
29434         (likely_value): Likewise.
29435         (surely_varying_stmt_p): Properly handle VOP case.
29436         (ccp_initialize): Likewise.
29437         (ccp_fold): Handle propagating through *&.
29438         (fold_const_aggregate_ref): Also handle decls.
29439
29440 2009-03-28  Jan Hubicka  <jh@suse.cz>
29441
29442         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
29443         * cgraph.h (cgraph_node): Likewise.
29444         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
29445         (cgraph_reset_node): Use process flag.
29446         (cgraph_mark_functions_to_output): Likewise.
29447         (cgraph_expand_function): Likewise.
29448         (cgraph_expand_all_functions): Likewise.
29449         (cgraph_output_in_order): Likewise.
29450         * dwarf2out.c (reference_to_unused): Likewise.
29451         * passes.c do_per_function_toporder): Likewise.
29452
29453 2009-03-28  Jan Hubicka  <jh@suse.cz>
29454
29455         Bring from lto-branch:
29456
29457         2008-09-03  Doug Kwan  <dougkwan@google.com>
29458
29459         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
29460         enums instead of reason strings.
29461         * cgraph.c (cgraph_create_edge): Same.
29462         (cgraph_inline_failed_string): New function.
29463         * cgraph.h (cgraph_inline_failed_t): New enum type.
29464         (cgraph_inline_failed_string): New prototype.
29465         (struct cgraph_edge): Change type of INLINED_FAILED from constant
29466         char pointer to cgraph_inline_failed_t.
29467         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
29468         (cgraph_default_inline_p): Ditto.
29469         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
29470         to cgraph_inline_failed_t pointer.
29471         * cif-code.def: New file.
29472         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
29473         reason string.
29474         (cgraph_check_inline_limits): Change type of REASON to pointer to
29475         cgraph_inline_failed_t.  Replace reason strings with enums.
29476         (cgraph_default_inline_p): Ditto.
29477         (cgraph_recursive_inlining_p): Ditto.
29478         (update_caller_keys): Change type of FAILED_REASON to
29479         cgraph_inline_failed_t.
29480         (cgraph_set_inline_failed): Change type of REASON to pointer to
29481         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
29482         convert enums to strings for text output.
29483         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
29484         to be of type cgraph_inline_failed_t.  Replace reason strings with
29485         enums.  Call cgraph_inline_failed_string to covert enums
29486         to strings for text output.
29487         (cgraph_decide_inlining): Replace reason strings with enums.
29488         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
29489         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
29490         for text output.
29491         * tree-inline.c (expand_call_inline): Change type of REASON
29492         to cgraph_inline_failed_t.  Replace reason strings with enums.
29493         Call cgraph_inline_failed_string for text output.
29494         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
29495         (cgraph.o): Ditto.
29496
29497 2009-03-28  Jan Hubicka  <jh@suse.cz>
29498
29499         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
29500         cgraph_clone_node): Remove master clone handling.
29501         (cgraph_is_master_clone, cgraph_master_clone): Remove.
29502         * cgraph.h (master_clone): Remove.
29503         (cgraph_is_master_clone, cgraph_master_clone): Remove.
29504         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
29505         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
29506
29507 2009-03-28  Jan Hubicka  <jh@suse.cz>
29508
29509         * cgraph.c (cgraph_function_body_availability): Functions declared
29510         inline are always safe to assume that it is not going to be replaced.
29511
29512 2009-03-28  Richard Guenther  <rguenther@suse.de>
29513
29514         PR tree-optimization/38513
29515         * tree-ssa-pre.c (eliminate): Remove redundant stores.
29516         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
29517         EXC_PTR_EXPR and FILTER_EXPR.
29518         (get_ref_from_reference_ops): Likewise.
29519
29520 2009-03-28  Richard Guenther  <rguenther@suse.de>
29521
29522         PR tree-optimization/38968
29523         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
29524         Use FLOOR_MOD_EXPR to compute misalignment.
29525
29526 2009-03-28  Richard Guenther  <rguenther@suse.de>
29527
29528         PR tree-optimization/37795
29529         * tree.h (combine_comparisons): Declare.
29530         * fold-const.c (combine_comparisons): Export.
29531         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
29532         comparisons.
29533         (ifcombine_iforif): Use combine_comparisons.
29534
29535 2009-03-28  Jan Hubicka  <jh@suse.cz>
29536
29537         * tree-eh.c (inlinable_call_p): New function.
29538         (make_eh_edges): Use it.
29539         (verify_eh_edges): Use it.
29540         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
29541         * except.c (reachable_next_level): Add inlinable_function argument
29542         (sjlj_find_directly_reachable_regions): Update.
29543         (add_reachable_handler): Do not set saw_any_handlers.
29544         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
29545         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
29546         Add new inlinable call parameter.
29547         (can_throw_internal, can_throw_external): Update.
29548         * except.h (can_throw_internal_1, can_throw_external_1,
29549         foreach_reachable_handler): Update declaration.
29550
29551 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
29552
29553         * config/arm/t-arm-coff, config/h8300/coff.h,
29554         config/i386/i386-aout.h, config/i386/i386-coff.h,
29555         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
29556         config/pdp11/2bsd.h, config/rs6000/aix41.h,
29557         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
29558         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
29559         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
29560         sys-types.h: Remove.
29561         * Makefile.in: Remove protoize and fixproto support and references
29562         in comments.
29563         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
29564         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
29565         Remove.
29566         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
29567         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
29568         unprotoize$(exeext).
29569         (rest.encap): Don't depend on $(STMP_FIXPROTO)
29570         (.PHONY): Don't depend on proto.
29571         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
29572         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
29573         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
29574         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
29575         build/gen-protos.o, build/scan.o, xsys-protos.h,
29576         build/fix-header$(build_exeext), build/fix-header.o,
29577         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
29578         stmp-install-fixproto): Remove.
29579         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
29580         SYSCALLS.c or fixproto files.
29581         (install-common): Don't install protoize.
29582         (install-headers-tar, install-headers-cpio, install-headers-cp):
29583         Don't depend on $(STMP_FIXPROTO).
29584         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
29585         install fixproto files or write out fixproto settings.
29586         (uninstall): Don't uninstall protoize.
29587         * config.gcc (use_fixproto): Remove.
29588         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
29589         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
29590         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
29591         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
29592         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
29593         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
29594         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
29595         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
29596         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
29597         * config/t-vxworks (STMP_FIXPROTO): Remove.
29598         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
29599         STMP_FIXPROTO): Remove.
29600         * config.in, configure: Regenerate.
29601         * crtstuff.c (gid_t, uid_t): Don't undefine.
29602         * doc/install.texi: Change m68k-coff to m68k-elf in example.
29603         (arm-*-coff, arm-*-aout: Remove target entries.
29604         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
29605         Remove mention of AIX 4.1.
29606         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
29607         * doc/invoke.texi (Running Protoize): Remove.
29608         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
29609         (Protoize Caveats): Remove.
29610         * tsystem.h: Update comments on headers assumed to exist.
29611
29612 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
29613
29614         * genautomata.c: Add a new year to the copyright.  Add a new
29615         reference.
29616         (struct insn_reserv_decl): Add comments for member bypass_list.
29617         (find_bypass): Remove.
29618         (insert_bypass): New.
29619         (process_decls): Use insert_bypass.
29620         (output_internal_insn_latency_func): Output all bypasses with the
29621         same input insn in one switch case.
29622
29623         * rtl.def (define_bypass): Describe bypass choice.
29624         * doc/md.texi (define_bypass): Ditto.
29625
29626 2009-03-27  Richard Guenther  <rguenther@suse.de>
29627
29628         * gimplify.c (mark_addressable): Export.
29629         * tree-flow.h (mark_addressable): Declare.
29630         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
29631         * tree-ssa.c (verify_phi_args): Verify that address taken
29632         variables have TREE_ADDRESSABLE set.
29633
29634 2009-03-27  Richard Guenther  <rguenther@suse.de>
29635
29636         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
29637         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
29638         Do not mark decls TREE_ADDRESSABLE.
29639         (build_fold_addr_expr): Adjust.
29640         (fold_addr_expr): Remove.
29641         (fold_unary): Use build_fold_addr_expr.
29642         (fold_comparison): Likewise.
29643         (split_address_to_core_and_offset): Likewise.
29644         * coverage.c (tree_coverage_counter_addr): Mark the array decl
29645         TREE_ADDRESSABLE.
29646         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
29647         (gimplify_modify_expr_to_memcpy): Mark source and destination
29648         addressable.
29649         * omp-low.c (create_omp_child_function): Mark the object decl
29650         TREE_ADDRESSABLE.
29651         (lower_rec_input_clauses): Mark the var we take the address of
29652         TREE_ADDRESSABLE.
29653         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
29654
29655 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29656
29657         PR middle-end/39315
29658         * cfgexpand.c (expand_one_stack_var_at): Change alignment
29659         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
29660
29661 2009-03-27  Richard Guenther  <rguenther@suse.de>
29662
29663         PR tree-optimization/39120
29664         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
29665         constraints.
29666         (handle_lhs_call): Process return constraints.  Add escape
29667         constraints if necessary.
29668         (handle_const_call): Fill out return constraints.  Make nested
29669         case more precise.  Avoid consttmp if possible.
29670         (handle_pure_call): Fill out return constraints.  Avoid
29671         callused if possible.
29672         (find_func_aliases): Simplify call handling.
29673
29674 2009-03-27  Richard Guenther  <rguenther@suse.de>
29675
29676         PR tree-optimization/39120
29677         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
29678         as a representative.
29679         (solve_graph): Do propagate CALLUSED.
29680         (handle_pure_call): Use a scalar constraint from CALLUSED for
29681         the return value.
29682         (find_what_p_points_to): CALLUSED shall not appear in poins-to
29683         solutions.
29684
29685 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29686
29687         PR c/39323
29688         * c-common.c (handle_aligned_attribute): Properly check alignment
29689         overflow.  Use (1U << i) instead of (1 << i).
29690
29691         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
29692
29693         * expr.h (get_mem_align_offset): Updated.
29694
29695         * tree.h (tree_decl_common): Change align to "unsigned int" and
29696         move it before pointer_alias_set.
29697
29698 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29699             Jakub Jelinek  <jakub@redhat.com>
29700
29701         PR target/38034
29702         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
29703         gr_register_operand with gr_reg_or_0_operand.
29704         (cmpxchg_rel_di): Likewise.
29705         (sync_lock_test_and_set<mode>): Likewise.
29706
29707 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29708
29709         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
29710         (true_regnum): Likewise.
29711
29712         * rtlanal.c (subreg_info): Moved to ...
29713         * rtl.h (subreg_info): Here.  New.
29714         (subreg_get_info): New.
29715
29716         * rtlanal.c (subreg_get_info): Make it extern.
29717
29718 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29719
29720         PR target/39472
29721         * config/i386/i386.c (ix86_abi): New.
29722         (override_options): Handle -mabi=.
29723         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
29724         (ix86_call_abi_override): Likewise.
29725         (init_cumulative_args): Likewise.
29726         (function_arg_advance): Likewise.
29727         (function_arg_64): Likewise.
29728         (function_arg): Likewise.
29729         (ix86_pass_by_reference): Likewise.
29730         (ix86_function_value_regno_p): Likewise.
29731         (ix86_build_builtin_va_list_abi): Likewise.
29732         (setup_incoming_varargs_64): Likewise.
29733         (is_va_list_char_pointer): Likewise.
29734         (ix86_init_machine_status): Likewise.
29735         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
29736         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
29737         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
29738         (ix86_function_abi): Make it static and return enum calling_abi.
29739         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
29740         with ix86_abi.
29741         (ix86_fn_abi_va_list): Updated.
29742
29743         * config/i386/i386.h (ix86_abi): New.
29744         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
29745         (CONDITIONAL_REGISTER_USAGE): Likewise.
29746         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
29747         (machine_function): Likewise.
29748
29749         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
29750         with ix86_abi.
29751         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
29752         (STACK_BOUNDARY): Likewise.
29753         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
29754
29755         * config/i386/i386.opt (mabi=): New.
29756
29757         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
29758         return enum calling_abi.
29759         (ix86_function_type_abi): Likewise.
29760         (ix86_function_abi): Removed.
29761
29762         * doc/invoke.texi: Document -mabi= option for x86.
29763
29764 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29765
29766         * builtins.c (real_dconstp): Delete.
29767         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
29768
29769 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
29770             Jakub Jelinek  <jakub@redhat.com>
29771
29772         PR debug/37959
29773         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
29774         (gen_subprogram_die): When a function is explicit, generate the
29775         DW_AT_explicit attribute.
29776         * langhooks.h (struct lang_hooks_for_decls): Add
29777         function_decl_explicit_p langhook.
29778         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
29779         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
29780
29781 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
29782
29783         * builtins.c (fold_builtin_memory_op): Optimize memmove
29784         into memcpy if we can prove source and destination don't overlap.
29785
29786         * tree-inline.c: Include gt-tree-inline.h.
29787         (clone_fn_id_num): New variable.
29788         (clone_function_name): New function.
29789         (tree_function_versioning): Use it.
29790         * Makefile.in (GTFILES): Add tree-inline.c.
29791
29792 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
29793
29794         * BASE-VER: Change to 4.5.0.
29795
29796 2009-03-27  Xinliang David Li  <davidxl@google.com>
29797
29798         PR tree-optimization/39557
29799         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
29800
29801 2009-03-27  Xinliang David Li  <davidxl@google.com>
29802
29803         PR tree-optimization/39548
29804         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
29805         candidate check.
29806
29807 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29808
29809         * c-common.c (pointer_int_sum): Use %wd on return from
29810         tree_low_cst.
29811
29812 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29813
29814         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
29815         on return from tree_low_cst.
29816
29817 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
29818
29819         PR c++/36799
29820         * ginclude/stdarg.h (va_copy): Define also for
29821         __GXX_EXPERIMENTAL_CXX0X__.
29822
29823 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29824
29825         PR c++/35652
29826         * builtins.h (c_strlen): Do not warn here.
29827         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
29828         * c-common.c (pointer_int_sum): Take an explicit location.
29829         Warn about offsets out of bounds.
29830         * c-common.h (pointer_int_sum): Adjust declaration.
29831
29832 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29833
29834         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
29835         markup glitch.
29836
29837 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
29838
29839         PR c++/39554
29840         * opts.c (warn_if_disallowed_function_p): Don't assume
29841         get_callee_fndecl must return non-NULL.
29842
29843 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
29844
29845         PR rtl-optimization/39522
29846         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
29847         when reg_reloaded_valid is set.
29848
29849 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29850
29851         * config/spu/divv2df3.c: New file.
29852         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
29853         (DPBIT_FUNCS): Filter out _div_df.
29854
29855 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
29856
29857         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
29858         a jump insn, count that jump in the distance to the loop start.
29859
29860 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
29861
29862         PR target/39523
29863         * config/sh/sh.c (calc_live_regs): Fix condition for global
29864         registers except PIC_OFFSET_TABLE_REGNUM.
29865
29866 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
29867
29868         PR/39518
29869         * doc/invoke.texi (-mconsole): New.
29870         (-mcygwin): New.
29871         (-mno-cygwin): New.
29872         (-mdll): New.
29873         (-mnop-fun-dllimport): New.
29874         (-mthread): New.
29875         (-mwin32): New.
29876         (-mwindows): New.
29877         (sub section "i386 and x86-64 Windows Options"): New.
29878
29879 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
29880
29881         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
29882         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
29883
29884 2009-03-25  Richard Guenther  <rguenther@suse.de>
29885
29886         PR middle-end/39497
29887         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
29888         of -Wno-error.
29889
29890 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
29891
29892         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
29893         neither of haifa/selective schedulers are working.
29894
29895 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29896
29897         * doc/invoke.texi (Debugging Options): Fix description of
29898         -fno-merge-debug-strings.
29899
29900 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
29901
29902         * config/cris/libgcc.ver: New version-script.
29903         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
29904
29905         * configure.ac <GAS features, nop mnemonic>: Add pattern
29906         crisv32-*-* for "nop".
29907         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
29908         * configure: Regenerate.
29909
29910 2009-03-24  Ira Rosen  <irar@il.ibm.com>
29911
29912         PR tree-optimization/39529
29913         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
29914         mark_sym_for_renaming for the tag copied to the new vector
29915         pointer.
29916
29917 2009-03-24  Arthur Loiret  <aloiret@debian.org>
29918
29919         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
29920         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
29921         EXTRA_SPEC_FUNCTIONS.
29922         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
29923         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
29924         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
29925         -march and -mtune options.
29926
29927 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
29928
29929         * config/m68k/t-rtems: Add m5329 multilib.
29930
29931 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
29932             Jakub Jelinek  <jakub@redhat.com>
29933
29934         PR debug/39524
29935         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
29936         nodes.
29937
29938 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
29939
29940         PR c/39495
29941         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
29942         instead of c_parser_expression_conv, if original_code isn't one of the
29943         4 allowed comparison codes, fail.
29944
29945 2009-03-23  Richard Guenther  <rguenther@suse.de>
29946
29947         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
29948         * tree.h (struct tree_type): Likewise.
29949         * reload.h (struct insn_chain): Likewise.
29950         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
29951         * function.h (struct function): Likewise.
29952         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
29953
29954 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
29955
29956         PR tree-optimization/39516
29957         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
29958
29959 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
29960
29961         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
29962         should be set true if BITS_PER_WORD of target is bigger than 32
29963
29964 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
29965
29966         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
29967         Translate -B-options to -rpath-link.  Correct existing
29968         rpath-link and conditionalize on !nostdlib.
29969
29970 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29971
29972         * doc/extend.texi (Function Attributes, Variable Attributes):
29973         Fix typos.
29974         * doc/invoke.texi (Debugging Options, Optimize Options)
29975         (i386 and x86-64 Options, MCore Options): Likewise.
29976
29977 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
29978
29979         PR debug/37890
29980         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
29981         it for block local namespace aliases.
29982         (gen_decl_die): Pass context_die to gen_namespace_die.
29983
29984 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
29985
29986         PR c/39495
29987         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
29988         minimum or maximum value.
29989
29990 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
29991
29992         * reginfo.c (globalize_reg): Recompute derived reg sets.
29993
29994 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
29995
29996         PR target/39063
29997         * libgcc2.c (mprotect): Do not use signed arguments for
29998         VirtualProtect, use DWORD arguments.  Also fix the 'may
29999         be used uninitialized' warning for the np variable.
30000
30001 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
30002
30003         PR target/39496
30004         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
30005         functions using regparm calling conventions when not optimizing.
30006         (ix86_function_sseregparm): Similarly for sseregparm calling
30007         conventions.
30008
30009 2009-03-19  Li Feng  <nemokingdom@gmail.com>
30010
30011         PR middle-end/39500
30012         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
30013         dependence if the first conflict is after niter iterations.
30014
30015 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
30016
30017         PR middle-end/38609
30018         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
30019         functions with dynamic stack-pointer adjustments.
30020
30021 2009-03-19  Ben Elliston  <bje@au.ibm.com>
30022
30023         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
30024         option; change to -msdata=data.
30025
30026 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30027
30028         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
30029         and -fopenmp.
30030
30031 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
30032
30033         PR target/35180
30034         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
30035
30036 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
30037
30038         * doc/invoke.texi (Code Gen Options): Expand discussion of
30039         -fno-common.
30040
30041 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
30042
30043         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
30044         * matrix-reorg.c (struct matrix_info): Likewise.
30045         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
30046         * rtl.h (struct mem_attrs): Likewise.
30047         * df.h (struct df): Likewise.
30048         * tree-data-ref.h (struct data_dependence_relation): Likewise.
30049         * ira-int.h (struct ira_allocno): Likewise.
30050         * df-scan.c (struct df_collection_rec): Likewise.
30051         * ira.c (struct equivalence): Likewise.
30052         * function.c (struct temp_slot): Likewise.
30053         * cfgloop.h (struct loop): Likewise.
30054
30055         PR debug/39485
30056         * function.c (use_register_for_decl): When not optimizing, disregard
30057         register keyword for variables with types containing methods.
30058
30059 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
30060
30061         PR middle-end/39447
30062         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
30063         (is_simple_operand): Call contains_component_ref_p before calling data
30064         reference analysis that would fail on COMPONENT_REFs.
30065
30066         * tree-vrp.c (search_for_addr_array): Fix formatting.
30067
30068 2009-03-18  Richard Guenther  <rguenther@suse.de>
30069
30070         * tree-vect-transform.c (vect_loop_versioning): Fold the
30071         generated comparisons.
30072         * tree-vectorizer.c (set_prologue_iterations): Likewise.
30073         (slpeel_tree_peel_loop_to_edge): Likewise.
30074
30075 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30076
30077         PR middle-end/37805
30078         * opts.c (print_specific_help): In addition to `undocumented',
30079         accept `separate' and `joined' flags if passed alone.  Describe
30080         output by the first matched one of those.
30081         (common_handle_option): Skip over empty strings.
30082         * gcc.c (display_help): Fix help string for `--help='.
30083         * doc/invoke.texi (Option Summary, Overall Options): With
30084         `--help=', classes and qualifiers can both be repeated, but
30085         only the latter can be negated.  One should not pass only
30086         negated qualifiers.  Fix markup and examples.
30087
30088         Revert
30089         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
30090         PR middle-end/37805
30091         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
30092         and -fhelp=separate.
30093
30094 2009-03-17  Jing Yu  <jingyu@google.com>
30095
30096         PR middle-end/39378
30097         * function.h (struct rtl_data): Move is_thunk from here...
30098         (struct function): ...to here.
30099         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
30100         * varasm.c (assemble_start_function): Change is_thunk from crtl to
30101         cfun.
30102         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
30103         cfun.
30104         (alpha_does_function_need_gp, alpha_start_function): Likewise.
30105         (alpha_output_function_end_prologue): Likewise.
30106         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
30107         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
30108         (rs6000_output_function_epilogue): Likewise.
30109         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
30110
30111 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
30112
30113         PR target/39482
30114         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
30115         from different units in a single alternative.
30116         (*truncdfsf_i387): Ditto.
30117         (*truncxfsf2_mixed): Ditto.
30118         (*truncxfdf2_mixed): Ditto.
30119
30120 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
30121
30122         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
30123         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
30124
30125         PR debug/39474
30126         * tree-ssa-live.c (remove_unused_locals): Don't remove local
30127         unused non-artificial variables when not optimizing.
30128
30129         PR debug/39471
30130         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
30131         DW_TAG_imported_module even if decl is IMPORTED_DECL with
30132         NAMESPACE_DECL in its DECL_INITIAL.
30133
30134         PR middle-end/39443
30135         * optabs.c (set_user_assembler_libfunc): New function.
30136         * expr.h (set_user_assembler_libfunc): New prototype.
30137         * c-common.c: Include libfuncs.h.
30138         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
30139         for memcmp, memset, memcpy, memmove and abort.
30140         * Makefile.in (c-common.o): Depend on libfuncs.h.
30141
30142         PR debug/39412
30143         * dwarf2out.c (gen_inlined_enumeration_type_die,
30144         gen_inlined_structure_type_die, gen_inlined_union_type_die,
30145         gen_tagged_type_instantiation_die): Removed.
30146         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
30147         do nothing.
30148
30149 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
30150
30151         PR testsuite/38526
30152         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
30153         its use.
30154         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
30155         (check-parallel-%): Ditto.
30156         (check-consistency): Ditto.
30157
30158 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
30159
30160         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
30161         local variable rhs by NULL_TREE.
30162
30163 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30164
30165         PR target/39477
30166         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
30167
30168 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30169
30170         PR target/39476
30171         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
30172
30173 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30174
30175         PR target/39473
30176         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
30177         for ms->sysv ABI calls only in 64bit mode.
30178
30179         * config/i386/i386.md (untyped_call): Support 32bit.
30180
30181 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
30182
30183         * doc/extend.texi: Replace x86_65 with x86_64.
30184
30185 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
30186
30187         PR tree-optimization/39455
30188         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
30189         mismatches for POINTER_TYPE_P (type).
30190         (number_of_iterations_le): Likewise.
30191
30192 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
30193
30194         * config/picochip/picochip.c: Removed profiling support.
30195         * config/picochip/picochip.md: Removed profiling instruction.
30196         * config/picochip/picochip.h: Removed profiling builtin.
30197
30198 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
30199
30200         * doc/install.texi (--with-host-libstdcxx): Document.
30201
30202 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
30203
30204         PR target/34299
30205         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
30206         generate a warning if the function name does not begin with
30207         "__vector" and the function has either the 'signal' or 'interrupt'
30208         attribute, from here to ...
30209         (avr_declare_function_name): ...here. New function.
30210         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
30211         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
30212
30213 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
30214
30215         PR bootstrap/39454
30216         * cse.c (fold_rtx): Don't modify original const_arg1 when
30217         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
30218         separate variable instead.
30219         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
30220         from out of range shift counts.
30221         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
30222
30223 2009-03-13  Catherine Moore  <clm@codesourcery.com>
30224
30225         * config/i386/x-mingw32 (host-mingw32.o): Replace
30226         diagnostic.h with $(DIAGNOSTIC_H).
30227
30228 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
30229
30230         PR target/39431
30231         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
30232         predicate.
30233         * config/i386/sync.md (sync_compare_and_swap<mode>,
30234         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
30235         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
30236         into a register.
30237         (sync_double_compare_and_swapdi_pic,
30238         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
30239         cmpxchg8b_pic_memory_operand instead of just memory_operand.
30240
30241 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30242
30243         PR target/39445
30244         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
30245
30246 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30247
30248         PR target/39327
30249         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
30250         (avx_addsubv4df3): Likewise.
30251         (*avx_addsubv4sf3): Likewise.
30252         (sse3_addsubv4sf3): Likewise.
30253
30254 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30255
30256         PR target/38824
30257         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
30258
30259 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
30260
30261         PR debug/39432
30262         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
30263         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
30264         registers for allocnos created from user-defined variables.
30265
30266 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30267
30268         PR target/39181
30269         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
30270         of non-integer mode as well.
30271
30272 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
30273
30274         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
30275         for functions for which the parameter types are unknown.
30276
30277 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
30278
30279         PR target/39137
30280         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
30281         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
30282         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
30283         * config/i386/i386.c (ix86_local_alignment): For
30284         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
30285         long long variables on the stack to avoid dynamic realignment.
30286         Allow the first argument to be a decl rather than type.
30287         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
30288
30289 2009-03-11  Nick Clifton  <nickc@redhat.com>
30290
30291         PR target/5362
30292         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
30293         options.
30294         Add description to mno-lsim option.
30295         * config/mcore/mcore.h: Remove comment about deprecated m4align
30296         option.
30297         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
30298         * doc/invoke.texi: Add description of mno-lsim and
30299         mstack-increment options.
30300
30301         * config/fr30/fr30.opt: Document the -mno-lsim option.
30302         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
30303         and -mno-lsim options.
30304
30305 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30306
30307         * fold-const.c (fold_comparison): Only call fold_inf_compare
30308         if the mode supports infinities.
30309
30310 2009-03-11  Jason Merrill  <jason@redhat.com>
30311
30312         PR debug/39086
30313         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
30314         end already did.  Notice GIMPLE_CALL modifications of the result.
30315         Don't copy debug information from an ignored decl or a decl from
30316         another function.
30317
30318 2009-03-10  Richard Guenther  <rguenther@suse.de>
30319             Nathan Froyd  <froydnj@codesourcery.com>
30320
30321         PR middle-end/37850
30322         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
30323         (__divMODE3): Likewise.
30324
30325 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
30326
30327         PR tree-optimization/39394
30328         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
30329         DECL_SIZE_UNIT of variable length FIELD_DECLs.
30330
30331 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
30332
30333         * recog.c (verfiy_changes): Disallow renaming of hard regs in
30334         inline asms for register asm ("") declarations.
30335
30336 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
30337
30338         * fold-const.c (fold_unary): Fix comment.
30339
30340 2009-03-07  Jan Hubicka  <jh@suse.cz>
30341
30342         PR target/39361
30343         * tree-inline.c (setup_one_parameter): Do replacement of const
30344         argument by constant in SSA form.
30345
30346 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30347
30348         PR middle-end/38028
30349         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
30350         determine alignment passed to assign_stack_local.
30351         (assign_parms_unsplit_complex): Likewise.
30352         * except.c (sjlj_build_landing_pads): Likewise.
30353
30354 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
30355
30356         PR middle-end/39360
30357         * tree-flow.h (add_referenced_var): Return bool instead of void.
30358         * tree-dfa.c (add_referenced_var): Return result of
30359         referenced_var_check_and_insert call.
30360         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
30361         of referenced_var_check_and_insert.
30362
30363         PR debug/39372
30364         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
30365         (gen_variable_die): Emit DW_AT_location on abstract static variable's
30366         DIE, don't emit it if abstract origin already has it.
30367         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
30368         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
30369
30370 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
30371
30372         * genpreds.c (needs_variable): Fix parentheses at variable name
30373         detection.
30374         (write_tm_constrs_h): Indent generated code.
30375
30376 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
30377
30378         * doc/extend.texi (Function Attributes): Add documentation
30379         for isr attributes.
30380
30381 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
30382
30383         PR debug/39387
30384         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
30385         take locus from its DECL_SOURCE_LOCATION instead of input_location.
30386
30387 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
30388
30389         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
30390         the loop as bad.
30391
30392 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
30393
30394         PR debug/39379
30395         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
30396         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
30397
30398 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
30399
30400         * config/i386/i386.md (R8_REG, R9_REG): New constants.
30401         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
30402         constants instead of magic numbers.
30403         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
30404         (QI_REG_P): Ditto.
30405         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
30406         (x86_64_ms_abi_int_parameter_registers): Ditto.
30407         (x86_64_int_return_registers): Ditto.
30408         (ix86_maybe_switch_abi): Ditto.
30409         (ix86_expand_call): Ditto for clobbered_registers array.
30410         (ix86_hard_regno_mode_ok): Ditto.
30411         (x86_extended_QIreg_mentioned_p): Ditto.
30412
30413 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
30414
30415         PR tree-optimization/39349
30416         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
30417
30418         * combine.c (gen_lowpart_for_combine): Use omode when generating
30419         clobber.
30420
30421 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
30422
30423         PR rtl-optimization/39235
30424         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
30425
30426 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
30427
30428         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
30429
30430 2009-03-04  Richard Guenther  <rguenther@suse.de>
30431
30432         PR tree-optimization/39362
30433         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
30434         that occur in abnormal PHIs should be varying.
30435
30436 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
30437
30438         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
30439         Extend comments.
30440         (simple_iv):  Take loop as an argument instead of statement.
30441         * tree-scalar-evolution.h (simple_iv): Declaration changed.
30442         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
30443         to simple_iv.
30444         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
30445         Ditto.
30446         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
30447         * matrix-reorg.c (analyze_transpose): Ditto.
30448         * tree-data-ref.c (dr_analyze_innermost): Ditto.
30449         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
30450         * tree-predcom.c (ref_at_iteration): Ditto.
30451         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
30452
30453 2009-03-04  Richard Guenther  <rguenther@suse.de>
30454
30455         PR tree-optimization/39358
30456         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
30457         escaped_id and callused_id.
30458         (solve_graph): Likewise.
30459
30460 2009-03-04  Richard Guenther  <rguenther@suse.de>
30461
30462         PR tree-optimization/39339
30463         * tree-sra.c (try_instantiate_multiple_fields): Make it
30464         no longer ICE on the above.
30465
30466 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
30467
30468         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
30469         that fits within Pmode.
30470
30471 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
30472
30473         PR middle-end/10109
30474         * tm.texi (LIBCALL_VALUE): Update description.
30475
30476 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
30477
30478         PR middle-end/34443
30479         * doc/extend.texi (section): Update description.
30480
30481 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
30482
30483         PR middle-end/39345
30484         * tree-inline.c (remapped_type): New.
30485         (can_be_nonlocal): Call remapped_type instead of remap_type.
30486
30487 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
30488
30489         PR fortran/39354
30490         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
30491         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
30492
30493 2009-03-03  Richard Guenther  <rguenther@suse.de>
30494
30495         PR middle-end/39272
30496         * tree.c (tree_nonartificial_location): New function.
30497         * tree.h (tree_nonartificial_location): Declare.
30498         * builtins.c (expand_builtin_memory_chk): Provide location
30499         of the call location for artificial function pieces.
30500         (maybe_emit_chk_warning): Likewise.
30501         (maybe_emit_sprintf_chk_warning): Likewise.
30502         (maybe_emit_free_warning): Likewise.
30503         * expr.c (expand_expr_real_1): Likewise.
30504
30505 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
30506
30507         PR tree-optimization/39343
30508         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
30509         COMPONENT_REF t has ARRAY_TYPE.
30510
30511 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
30512
30513         PR middle-end/39335
30514         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
30515         when the type precision of the induction variable should be
30516         larger than the type precision of nit.
30517         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
30518         * graphite.c (graphite_loop_normal_form): Same.
30519         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
30520
30521 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
30522
30523         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
30524         (*call_1_rex64_ms_sysv): Use named constants instead of magic
30525         numbers to describe clobbered registers.
30526         (*call_value_0_rex64_ms_sysv): Ditto.
30527         * config/i386/mmx.md (mmx_emms): Ditto.
30528         (mmx_femms): Ditto.
30529
30530 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
30531
30532         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
30533         of ABI_64.
30534
30535 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30536
30537         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
30538         (spu_section_type_flags): New function.
30539
30540 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
30541
30542         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
30543         reg_class_contents of FLOAT_REGS into a temporary.
30544
30545 2009-03-02  Richard Guenther  <rguenther@suse.de>
30546             Ira Rosen  <irar@il.ibm.com>
30547
30548         PR tree-optimization/39318
30549         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
30550         information to the vectorized statement.
30551
30552 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
30553
30554         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
30555         variable.  Use defined names instead of magic constants for REX SSE
30556         registers.
30557
30558 2009-03-01  Richard Guenther  <rguenther@suse.de>
30559
30560         PR tree-optimization/39331
30561         * omp-low.c (lower_send_shared_vars): Do not receive new
30562         values for the reference of DECL_BY_REFERENCE parms or results.
30563
30564 2009-03-01  Jan Hubicka  <jh@suse.cz>
30565
30566         PR debug/39267
30567         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
30568         BLOCK_NONLOCALIZED_VAR): New macros.
30569         (tree_block): Add nonlocalized_vars.
30570         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
30571         gen_decl_die): Add origin argument.  Allow generation of die with
30572         origin at hand only.
30573         (gen_member_die, gen_type_die_with_usage, force_decl_die,
30574         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
30575         of gen_*.
30576         (gen_block_die): Fix checking for unused blocks.
30577         (process_scope_var): Break out from .... ; work with origins only.
30578         (decls_for_scope) ... here; process nonlocalized list.
30579         (dwarf2out_ignore_block): Look for nonlocalized vars.
30580         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
30581         vars.
30582         (dump_scope_block): Dump them.
30583         * tree-inline.c (remap_decls): Handle nonlocalized vars.
30584         (remap_block): Likewise.
30585         (can_be_nonlocal): New predicate.
30586         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
30587
30588 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30589
30590         * configure: Regenerate.
30591
30592 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30593
30594         * optc-gen.awk: No need to duplicate option flags twice.
30595         Reuse help texts for duplicate options which do not have any.
30596
30597         * gcc.c (display_help): Document --version.
30598
30599         * gcc.c (main): If print_help_list and verbose_flag, ensure
30600         driver output comes before subprocess output.
30601
30602         * optc-gen.awk: Assign all remaining fields to help string,
30603         space-separated, for multi-line help in *.opt.
30604
30605         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
30606         -Wno-pedantic-ms-format is for MinGW targets only.
30607
30608         * doc/options.texi (Option file format): Fix bad indentation,
30609         restoring dropped sentence.
30610
30611 2009-02-28  Jan Hubicka  <jh@suse.cz>
30612
30613         * tree-inline.c (tree_function_versioning): Output debug info.
30614
30615 2009-02-28  Jan Hubicka  <jh@suse.cz>
30616
30617         PR debug/39267
30618         * tree-inline.c (setup_one_parameter): Do not copy propagate
30619         arguments when not optimizing.
30620
30621 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
30622
30623         PR target/39327
30624         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
30625         (avx_addsubv4df3): Likewise.
30626         (*avx_addsubv4sf3): Likewise.
30627         (sse3_addsubv4sf3): Likewise.
30628         (*avx_addsubv2df3): Likewise.
30629         (sse3_addsubv2df3): Likewise.
30630         (avx_unpckhps256): Correct item selectors.
30631         (avx_unpcklps256): Likewise.
30632         (avx_unpckhpd256): Likewise.
30633         (avx_unpcklpd256): Likewise.
30634
30635 2009-02-28  Jan Hubicka  <jh@suse.cz>
30636
30637         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
30638         static vars.
30639         (copy_arguments_for_versioning): If var is declared don't declare it.
30640         (tree_function_versioning): First setup substitutions and then copy
30641         args.
30642
30643 2009-02-27  Jan Hubicka  <jh@suse.cz>
30644
30645         PR debug/39267
30646         * cgraph.h (varpool_output_debug_info): Remove.
30647         * cgraphunit.c (varpool_output_debug_info): Remove.
30648         * dwarf2out.c (deferred_locations_struct): New struct
30649         (deferred_locations): New type.
30650         (deferred_locations_list): New static var.
30651         (deffer_location): New function.
30652         (gen_variable_die): Use it.
30653         (decls_for_scope): Output info on local static vars.
30654         (dwarf2out_finish): Process deferred locations.
30655         * varpool.c (varpool_output_debug_info): Remove.
30656
30657 2009-02-27  Jan Hubicka  <jh@suse.cz>
30658
30659         PR debug/39267
30660         * tree.h (TREE_PROTECTED): Fix comment.
30661         (BLOCK_HANDLER_BLOCK): Remove.
30662         (struct tree_block): Remove handler_block add body_block.
30663         (inlined_function_outer_scope_p): New.
30664         (is_body_block): Remove.
30665         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
30666         * dwarf2out.c (is_inlined_entry_point): Remove.
30667         (add_high_low_attributes): Use inlined_function_outer_scope_p.
30668         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
30669         code.
30670         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
30671         * gimplify.c (gimplify_expr): Gimplify body blocks.
30672         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
30673         block with multiple subblocks.
30674         (dump_scope_block): Prettier output; dump more flags and info.
30675         (dump_scope_blocks): New.
30676         (remove_unused_locals): Use dump_scope_blocks.
30677         * tree-flow.h (dump_scope_blocks): Declare.
30678         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
30679         * stmt.c (is_body_block): Remove.
30680         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
30681         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
30682
30683 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
30684
30685         PR middle-end/39308
30686         * graphite.c (graphite_loop_normal_form): Do not call
30687         number_of_iterations_exit from a gcc_assert.
30688
30689 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
30690
30691         * config/s390/s390.c (s390_swap_cmp): Look for conditional
30692         jumps if COND is NULL.
30693         (find_cond_jump): New function.
30694         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
30695         * config/s390/s390.md: Remove z10_cobra attribute value.
30696
30697 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
30698
30699         * config/alpha/alpha.h (alpha_expand_mov): Return false if
30700         force_const_mem returns NULL_RTX.
30701
30702 2009-02-26  Jan Hubicka  <jh@suse.cz>
30703
30704         PR debug/39267
30705         * cgraph.h (varpool_output_debug_info): Remove.
30706         * cgraphunit.c (varpool_output_debug_info): Remove.
30707         * dwarf2out.c (deferred_locations_struct): New struct
30708         (deferred_locations): New type.
30709         (deferred_locations_list): New static var.
30710         (deffer_location): New function.
30711         (gen_variable_die): Use it.
30712         (decls_for_scope): Output info on local static vars.
30713         (dwarf2out_finish): Process deferred locations.
30714         * varpool.c (varpool_output_debug_info): Remove.
30715
30716 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
30717
30718         PR rtl-optimization/39241
30719         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
30720         to subreg_offset_representable_p.
30721
30722 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
30723
30724         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
30725         execute function prototype.  Get f and nregs from max_reg_num
30726         and get_insns.  Remove the first backward pass as it's dead,
30727         guard the forward pass by flag_expensive_optimizations.
30728         (rest_of_handle_regmove): Delete.
30729         (pass_regmove): Replace it with regmove_optimize.
30730
30731 2009-02-25  Martin Jambor  <mjambor@suse.cz>
30732
30733         PR tree-optimization/39259
30734         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
30735         calls_alloca function flags.
30736         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
30737         calls are detected.
30738
30739 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
30740
30741         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
30742         flags_set_1_rtx, flags_set_1_set): Delete.
30743         (regmove_optimize): Do not call mark_flags_life_zones.
30744
30745 2009-02-24  Julian Brown  <julian@codesourcery.com>
30746
30747         PR target/35965
30748         * config/arm/arm.c (require_pic_register): Only set
30749         cfun->machine->pic_reg once per function.
30750
30751 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
30752
30753         * doc/invoke.texi (Link Options): Document an easier way to pass
30754         options that take arguments to the GNU linker using -Xlinker and -Wl.
30755
30756 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
30757
30758         PR target/33785
30759         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
30760
30761 2009-02-24  Richard Guenther  <rguenther@suse.de>
30762
30763         PR debug/39285
30764         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
30765
30766 2009-02-24  Richard Guenther  <rguenther@suse.de>
30767             Zdenek Dvorak  <ook@ucw.cz>
30768
30769         PR tree-optimization/39233
30770         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
30771         from converting them to a generic type.
30772
30773 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
30774
30775         PR tree-optimization/39260
30776         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
30777         contains a condition with a real type.
30778         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
30779
30780 2009-02-23  Jason Merrill  <jason@redhat.com>
30781
30782         PR c++/38880
30783         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
30784         narrowing_initializer_constant_valid_p.
30785         (narrowing_initializer_constant_valid_p): Don't return
30786         null_pointer_node for adding a pointer to itself.
30787
30788 2009-02-23  Jan Hubicka  <jh@suse.cz>
30789
30790         PR c/12245
30791         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
30792         resizing.
30793
30794 2009-02-23  Jan Hubicka  <jh@suse.cz>
30795
30796         PR tree-optimization/37709
30797         * tree.c (block_ultimate_origin): Move here from dwarf2out.
30798         * tree.h (block_ultimate_origin): Declare.
30799         * dwarf2out.c (block_ultimate_origin): Move to tree.c
30800         * tree-ssa-live.c (remove_unused_scope_block_p):
30801         Eliminate blocks containig no instructions nor live variables nor
30802         nested blocks.
30803         (dump_scope_block): New function.
30804         (remove_unused_locals): Enable removal of dead blocks by default;
30805         enable dumping at TDF_DETAILS.
30806
30807 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30808
30809         * config/i386/i386.c (classify_argument): Don't allow COImode
30810         and OImode.
30811         (function_arg_advance_32): Don't allow OImode.
30812         (function_arg_32): Likewise.
30813         (function_value_32): Likewise.
30814         (return_in_memory_32): Likewise.
30815         (function_arg_64): Remove OImode comment.
30816
30817 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30818
30819         PR target/39261
30820         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
30821         ix86_expand_vector_set for V4DImode in 64bit mode only.
30822         (ix86_expand_vector_init_one_var): Likewise.
30823
30824 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
30825
30826         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
30827
30828 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
30829
30830         PR bootstrap/39257
30831         * loop-iv.c: Revert last change.
30832         * emit-rtl.c: Likewise.
30833
30834 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30835
30836         PR target/39256
30837         * config/i386/i386.c (type_natural_mode): Remove an extra
30838         space in the warning message.
30839         (function_value_32): Handle 32-byte vector modes.
30840         (return_in_memory_32): Likewise.
30841
30842 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
30843
30844         * loop-iv.c (truncate_value): New function.
30845         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
30846         of lowpart_subreg.
30847         (lowpart_subreg): Move to...
30848         * emit-rtl.c: ...here.
30849
30850 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
30851
30852         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
30853         accidental and undocumented change at revision 140860.
30854
30855 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
30856
30857         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
30858         take gimple_seq * arguments.
30859         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
30860         types_compatible_p langhook.
30861
30862 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
30863             Joseph Myers  <joseph@codesourcery.com>
30864
30865         * config/arm/arm.c (arm_builtin_va_list): New function.
30866         (arm_expand_builtin_va_start): Likewise.
30867         (arm_gimplify_va_arg_expr): Likewise.
30868         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
30869         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
30870         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
30871         (va_list_type): New variable.
30872         (arm_mangle_type): Mangle va_list_type appropriately.
30873
30874 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
30875
30876         PR middle-end/39157
30877         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
30878         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
30879         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
30880         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
30881         parameter to 1000 for -O1 by default.
30882         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
30883         parameter.
30884         * loop-invariant.c: Include params.h.
30885         (move_loop_invariants): Don't call move_single_loop_invariants on
30886         very large loops.
30887
30888 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
30889
30890         * calls.c (emit_library_call_value_1): Use slot_offset instead of
30891         offset when calculating bounds for indexing stack_usage_map.  Fixes
30892         a buffer overflow with certain target setups.
30893
30894 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
30895
30896         PR target/39240
30897         * calls.c (expand_call): Clear try_tail_call if caller and callee
30898         disagree in promotion of function return value.
30899
30900 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
30901
30902         PR target/39175
30903         * c-common.c (c_determine_visibility): If visibility changed and
30904         DECL_RTL has been already set, call make_decl_rtl to update symbol
30905         flags.
30906
30907 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
30908
30909         PR c++/39188
30910         * varasm.c (assemble_variable): Don't check DECL_NAME when
30911         globalizing a variable.
30912
30913 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
30914
30915         PR c/38483
30916         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
30917         expression before any __builtin_trap call.
30918         * c-typeck.c (build_function_call): Convert and check function
30919         arguments before generating a call to a trap.  Evaluate the
30920         function arguments before the trap.
30921
30922 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
30923
30924         PR target/39228
30925         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
30926         (UNSPEC_FXAM_MEM): New unspec.
30927         (fxam<mode>2_i387_with_temp): New insn and split pattern.
30928         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
30929         memory using fxam<mode>2_i387_with_temp to remove excess precision.
30930
30931 2009-02-19  Richard Guenther  <rguenther@suse.de>
30932
30933         PR tree-optimization/39207
30934         PR tree-optimization/39074
30935         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
30936         storedanything_tree): New.
30937         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
30938         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
30939         (build_succ_graph): Add edges from STOREDANYTHING to all
30940         non-direct nodes.
30941         (init_base_vars): Initialize STOREDANYTHING.
30942         (compute_points_to_sets): Free substitution info after
30943         building the succ graph.
30944         (ipa_pta_execute): Likewise.
30945
30946         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
30947         field.
30948         (do_ds_constraint): Do not add to special var or non-pointer
30949         field solutions.
30950         (type_could_have_pointers): Split out from ...
30951         (could_have_pointers): ... here.  For arrays use the element type.
30952         (create_variable_info_for): Initialize may_have_pointers.
30953         (new_var_info): Likewise.
30954         (handle_lhs_call): Make the HEAP variable unknown-sized.
30955         (intra_create_variable_infos): Use a type with pointers for
30956         PARM_NOALIAS, make it unknown-sized.
30957
30958 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
30959
30960         PR target/39224
30961         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
30962
30963 2009-02-18  Jason Merrill  <jason@redhat.com>
30964
30965         PR target/39179
30966         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
30967         value if DECL_EXTERNAL.
30968         * tree-sra.c (sra_walk_gimple_assign): Likewise.
30969         * target.h (gcc_target::binds_local_p): Clarify "module".
30970         * tree.h (TREE_PUBLIC): Clarify "module".
30971
30972 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
30973
30974         PR target/38891
30975         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
30976         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
30977
30978 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
30979
30980         PR target/39082
30981         * c.opt (Wabi): Support C and ObjC.
30982         (Wpsabi): New.
30983
30984         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
30985
30986         * config/i386/i386.c (classify_argument): Warn once about the ABI
30987         change when passing union with long double.
30988
30989         * doc/invoke.texi: Update -Wabi for warning psABI changes.
30990
30991 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
30992
30993         PR c/35447
30994         * c-parser.c (c_parser_compound_statement): Always enter and leave
30995         a scope.
30996
30997 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30998
30999         PR target/34587
31000         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
31001
31002 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
31003
31004         PR tree-optimization/36922
31005         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
31006         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
31007         Likewise.
31008
31009 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31010
31011         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
31012         to 0 for EABI64.
31013
31014 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31015
31016         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
31017
31018 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31019
31020         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
31021         tree sharing.
31022
31023 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
31024             Richard Sandiford  <rdsandiford@googlemail.com>
31025
31026         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
31027         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
31028         (loongson_biadd): ...this.
31029
31030 2009-02-17  Richard Guenther  <rguenther@suse.de>
31031
31032         PR tree-optimization/39202
31033         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
31034         a var make sure to follow existing collapses.
31035
31036 2009-02-17  Richard Guenther  <rguenther@suse.de>
31037
31038         PR middle-end/39214
31039         * langhooks.c (lhd_print_error_function): Check for NULL block.
31040
31041 2009-02-17  Richard Guenther  <rguenther@suse.de>
31042
31043         PR tree-optimization/39204
31044         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
31045         of the PHI arg.
31046
31047 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
31048
31049         * config/soft-fp/double.h: Update from glibc CVS.
31050
31051 2009-02-17  Richard Guenther  <rguenther@suse.de>
31052
31053         PR tree-optimization/39207
31054         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
31055         strict-aliasing warnings for pointers pointing to NULL.
31056
31057 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
31058
31059         PR c/35446
31060         * c-parser.c (c_parser_braced_init): Call pop_init_level when
31061         skipping until next close brace.
31062
31063 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
31064
31065         PR target/37049
31066         * config/i386/i386.c (ix86_expand_push): Set memory alignment
31067         to function argument boundary.
31068
31069 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31070
31071         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
31072         in the lea_add. Reload eventually constraints it properly.
31073         * config/picochip/constraints.md: Remove the target constraint
31074         "b", since it is not needed anymore.
31075
31076 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
31077
31078         * gthr-dce.h: Uglify function parameter and local variable names.
31079         * gthr-gnat.h: Likewise.
31080         * gthr-mipssde.h: Likewise.
31081         * gthr-nks.h: Likewise.
31082         * gthr-posix95.h: Likewise.
31083         * gthr-posix.h: Likewise.
31084         * gthr-rtems.h: Likewise.
31085         * gthr-single.h: Likewise.
31086         * gthr-solaris.h: Likewise.
31087         * gthr-tpf.h: Likewise.
31088         * gthr-vxworks.h: Likewise.
31089         * gthr-win32.h: Likewise.
31090
31091 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
31092
31093         PR target/39196
31094         * config/i386/i386.md: Restrict the new peephole2 to move
31095         between MMX/SSE registers.
31096
31097 2009-02-15  Richard Guenther  <rguenther@suse.de>
31098
31099         Revert
31100         2009-02-13  Richard Guenther  <rguenther@suse.de>
31101
31102         * configure.ac: Enable LFS.
31103         * configure: Re-generate.
31104         * config.in: Likewise.
31105
31106 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31107
31108         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
31109         spu_srqwbyte, spu_srqwbytebc): Define.
31110         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
31111         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
31112         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
31113         "shrqby_<mode>"): New insn-and-split patterns.
31114         * config/spu/spu.c (expand_builtin_args): Determine and return
31115         number of operands using spu_builtin_description data.
31116         (spu_expand_builtin_1): Use it.
31117
31118 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
31119
31120         PR target/38056
31121         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
31122         TARGET_CONST_GP.
31123
31124 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31125
31126         PR target/39149
31127         * config/i386/i386.c (override_options): Correct warning
31128         messages for -malign-loops, -malign-jumps and -malign-functions.
31129
31130 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31131
31132         PR target/39152
31133         * config/i386/i386.md: Restrict the new peephole2 to move
31134         between the general purpose registers.
31135
31136 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31137
31138         PR target/39162
31139         * config/i386/i386.c (type_natural_mode): Add a new argument.
31140         Return the original mode and warn ABI change if vector size is 32byte.
31141         (function_arg_advance): Updated.
31142         (function_arg): Likewise.
31143         (ix86_function_value): Likewise.
31144         (ix86_return_in_memory): Likewise.
31145         (ix86_sol10_return_in_memory): Likewise.
31146         (ix86_gimplify_va_arg): Likewise.
31147         (function_arg_32): Don't warn ABX ABI change here.
31148         (function_arg_64): Likewise.
31149
31150 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
31151
31152         * loop-iv.c (implies_p): In the final case, test that operands 0
31153         of the two comparisons match.
31154
31155         * config/bfin/bfin.c (find_prev_insn_start): New function.
31156         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
31157         (find_next_insn_start): Move.
31158
31159 2009-02-13  Richard Guenther  <rguenther@suse.de>
31160
31161         * configure.ac: Enable LFS.
31162         * configure: Re-generate.
31163         * config.in: Likewise.
31164
31165 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
31166
31167         PR c/35444
31168         * c-parser.c (c_parser_parms_list_declarator): Discard pending
31169         sizes on syntax error after some arguments have been parsed.
31170
31171 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
31172
31173         * doc/invoke.texi (-fira): Remove.
31174
31175 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31176
31177         * caller-save.c: Replace regclass.c with reginfo.c in comments.
31178         * recog.c: Likewise.
31179         * rtl.h: Likewise.
31180
31181 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
31182
31183         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
31184         (umul_ppmm): Likewise.
31185         (count_leading_zeros): Likewise.
31186         (count_trailing_zeros): Likewise.
31187         (UMUL_TIME): Likewise.
31188
31189 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31190
31191         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
31192         soft-fp/t-softfp to tmake_file.
31193
31194         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
31195         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
31196         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
31197         IA64_BUILTIN_INFQ]: New.
31198         (ia64_init_builtins): Initialize __builtin_infq,
31199         __builtin_fabsq and __builtin_copysignq if not HPUX.
31200         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
31201         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
31202
31203         * config/ia64/lib1funcs.asm (__divtf3): Define only if
31204         SHARED is defined.
31205         (__fixtfti): Likewise.
31206         (__fixunstfti): Likewise.
31207         (__floattitf): Likewise.
31208
31209         * config/ia64/libgcc-glibc.ver: New.
31210         * config/ia64/t-fprules-softfp: Likewise.
31211         * config/ia64/sfp-machine.h: Likewise.
31212
31213         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
31214         (LIBGCC2_TF_CEXT): Likewise.
31215         (TF_SIZE): Likewise.
31216         (TARGET_INIT_LIBFUNCS): Likewise.
31217
31218         * config/ia64/t-glibc (SHLINB_MAPFILES):
31219         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
31220
31221 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31222
31223         * config/i386/i386.c (construct_container): Rewrite processing
31224         BLKmode with X86_64_SSE_CLASS.
31225
31226 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
31227
31228         PR target/39152
31229         * config/i386/i386.md: Replace simplify_replace_rtx with
31230         replace_rtx in the new peephole2.
31231
31232 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
31233
31234         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
31235         loop unrolling do not happen at -O2.
31236
31237 2009-02-12  Michael Matz  <matz@suse.de>
31238
31239         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
31240
31241 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
31242
31243         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
31244         for -g3.
31245
31246 2009-02-12  Ben Elliston  <bje@au.ibm.com>
31247
31248         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
31249         patterns when updating the back chain.  Missed in the 2009-02-10
31250         change.
31251
31252 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
31253
31254         * doc/extend.texi (Decimal Floating Types): Update identifier of
31255         draft TR and list of missing support.
31256
31257 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
31258
31259         PR middle-end/39154
31260         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
31261         bit to variable length decl's flags, add it also to its
31262         pointer replacement variable.
31263
31264 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
31265             Jakub Jelinek  <jakub@redhat.com>
31266
31267         PR target/39118
31268         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
31269         (memory_blockage): New expander.
31270         (*memory_blockage): New insn pattern.
31271         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
31272         instead of general blockage at the end of function prologue when
31273         frame pointer is used to access red zone area.  Do not emit blockage
31274         when profiling, it is emitted in generic code.
31275         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
31276         function epilogue when frame pointer is used to access red zone area.
31277
31278 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
31279
31280         PR target/38824
31281         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
31282         by arithmetic with memory operands.
31283         * config/i386/predicates.md (commutative_operator): New.
31284
31285 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
31286
31287         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
31288         bulleted lists.
31289
31290 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
31291
31292         * alias.h (record_alias_subset): Declare.
31293         * alias.c (record_alias_subset): Make global.
31294
31295 2009-02-10  Nick Clifton  <nickc@redhat.com>
31296
31297         * tree-parloops.c: Change license to GPLv3.
31298         * ipa-struct-reorg.c: Change license to GPLv3.
31299         * ipa-struct-reorg.h: Change license to GPLv3.
31300
31301 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
31302
31303         PR c/39084
31304         * c-decl.c (start_struct): Return NULL on error.
31305
31306 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
31307
31308         PR middle-end/39124
31309         * cfgloopmanip.c (remove_path): Call remove_bbs after
31310         cancel_loop_tree, not before it.
31311
31312         PR target/39139
31313         * function.h (struct function): Add has_local_explicit_reg_vars bit.
31314         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
31315         VAR_DECLs were seen.
31316         * tree-ssa-live.c (remove_unused_locals): Recompute
31317         cfun->has_local_explicit_reg_vars.
31318         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
31319         copies or clearings if cfun->has_local_explicit_reg_vars.
31320
31321 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
31322
31323         PR target/39118
31324         * config/i386/i386.c (expand_prologue): Emit blockage at the end
31325         of function prologue when frame pointer is used to access
31326         red zone area.
31327
31328 2009-02-10  Richard Guenther  <rguenther@suse.de>
31329
31330         PR middle-end/39127
31331         * gimplify.c (gimple_regimplify_operands): Always look if
31332         we need to create a temporary.
31333
31334 2009-02-10  Richard Guenther  <rguenther@suse.de>
31335
31336         PR tree-optimization/39132
31337         * tree-loop-distribution.c (todo): New global var.
31338         (generate_memset_zero): Trigger TODO_rebuild_alias.
31339         (tree_loop_distribution): Return todo.
31340
31341 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
31342
31343         PR target/39119
31344         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
31345         (x86_64_reg_class_name): Removed.
31346         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
31347         first one isn't X86_64_SSE_CLASS or any other ones aren't
31348         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
31349         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
31350         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
31351         and 3 X86_64_SSEUP_CLASS.
31352         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
31353         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
31354
31355 2009-02-10  Ben Elliston  <bje@au.ibm.com>
31356
31357         * config/rs6000/rs6000.md (allocate_stack): Always use an update
31358         form instruction to update the stack back chain word, even if the
31359         user has disabled the generation of update instructions.
31360         (movdi_<mode>_update_stack): New.
31361         (movsi_update_stack): Likewise.
31362         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
31363         always use an update form instruction to update the stack back
31364         chain word.
31365
31366 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
31367
31368         PR middle-end/38953
31369         * graphite.c (if_region_set_false_region): After moving a region in
31370         the false branch of a condition, remove the empty dummy basic block.
31371         (gloog): Remove wrong fix for PR38953.
31372
31373 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31374
31375         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
31376         generation due to implicit sign extension.
31377
31378 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
31379
31380         PR middle-end/38981
31381         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
31382         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
31383
31384 2009-02-09  Richard Guenther  <rguenther@suse.de>
31385
31386         PR middle-end/35202
31387         * convert.c (convert_to_real): Disable (float)fn((double)x)
31388         to fnf(x) conversion if errno differences may occur and
31389         -fmath-errno is set.
31390
31391 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
31392
31393         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
31394         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
31395         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
31396
31397 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
31398
31399         PR c/35434
31400         * c-common.c (handle_alias_attribute): Disallow attribute for
31401         anything not a FUNCTION_DECL or VAR_DECL.
31402
31403 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
31404
31405         PR c/39035
31406         * real.c (do_compare): Special-case compare of zero against
31407         decimal float value.
31408
31409 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
31410
31411         PR c/36432
31412         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
31413         as indicating flexible array members unless the field itself is
31414         being declarared as the incomplete array.
31415
31416 2009-02-06  Jan Hubicka  <jh@suse.cz>
31417
31418         PR tree-optimization/38844
31419         * ipa-inline.c (try_inline): Stop inlining recursion when edge
31420         is already inlined.
31421
31422 2009-02-06  Richard Guenther  <rguenther@suse.de>
31423
31424         PR middle-end/38977
31425         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
31426         fork because we may expand it as __gcov_fork.
31427
31428 2009-02-06  Nick Clifton  <nickc@redhat.com>
31429
31430         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
31431
31432 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
31433
31434         PR tree-optimization/35659
31435         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
31436         vn_phi_eq): Shortcut if hashcode does not match.
31437         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
31438         NULL operands.
31439         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
31440         and avoid iterative_hash_expr.
31441         (FOR_EACH_VALUE_ID_IN_SET): New.
31442         (value_id_compare): Remove.
31443         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
31444         sort expressions by value id.
31445
31446 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
31447
31448         PR target/38991
31449         * config/sh/predicates.md (general_movsrc_operand): Don't check
31450         the subreg of system registers here.
31451
31452 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
31453
31454         PR c++/39106
31455         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
31456         on the copied decl.
31457
31458 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
31459
31460         PR rtl-optimization/39110
31461         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
31462         addresses, not aligned ones.
31463
31464 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
31465             Richard Guenther  <rguenther@suse.de>
31466
31467         PR tree-optimization/39100
31468         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
31469         comment says and add edges.
31470
31471 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
31472
31473         PR c/35435
31474         * c-common.c (handle_tls_model_attribute): Ignore attribute for
31475         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
31476
31477 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
31478
31479         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
31480         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
31481         register_bb_in_sese, new_sese, free_sese): Moved.
31482         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
31483         outermost_loop_in_scop, build_scop_iteration_domain,
31484         expand_scalar_variables_ssa_name, get_vdef_before_scop,
31485         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
31486         Use loop_in_sese_p instead of loop_in_scop_p.
31487         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
31488         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
31489         (scopdet_basic_block_info): Fix bug in scop detection.
31490         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
31491         eq_loop_to_cloog_loop): Remove.
31492         (nb_loops_around_loop_in_scop, nb_loop
31493         ref_nb_loops): Moved here...
31494         * graphite.h (ref_nb_loops): ... from here.
31495         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
31496         (loop_domain_dim, loop_iteration_vector_dim): Remove.
31497         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
31498
31499 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
31500             Hans-Peter Nilsson  <hp@axis.com>
31501
31502         PR rtl-optimization/37889
31503         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
31504         Move offset handling from PLUS to before the switch.  Use new
31505         arguments when considering SYMBOL_REFs too.
31506         (rtx_addr_can_trap_p): Pass dummy offset and size.
31507         (enum may_trap_p_flags): Remove.
31508         (may_trap_p_1): Pass size from MEM_SIZE.
31509
31510         PR rtl-optimization/38921
31511         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
31512         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
31513         * rtlanal.c (may_trap_after_code_motion_p): Delete.
31514         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
31515
31516 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
31517
31518         AVX Programming Reference (January, 2009)
31519         * config/i386/sse.md (*vpclmulqdq): New.
31520
31521 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
31522
31523         PR tree-optimization/38977
31524         PR gcov-profile/38292
31525         * calls.c (special_function_p): Disregard __builtin_ prefix.
31526
31527 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
31528
31529         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
31530         non-indexable addresses even before reload.
31531
31532 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
31533
31534         PR c/29129
31535         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
31536         as having variable size.  Do not give an error for unnamed
31537         parameters with [*] declarators.  Give a warning for type names
31538         with [*] declarators and mark them as variable size.
31539         * c-parser.c (c_parser_sizeof_expression): Do not give an error
31540         for sizeof applied to [*] type names.
31541
31542 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31543
31544         PR C++/36607
31545         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
31546
31547 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
31548
31549         * gcc.c (process_command): Update copyright notice dates.
31550         * gcov.c (print_version): Likewise.
31551         * gcov-dump.c (print_version): Likewise.
31552         * mips-tfile.c (main): Likewise.
31553         * mips-tdump.c (main): Likewise.
31554
31555 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
31556
31557         PR c/35433
31558         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
31559         for composite type involving a zero-length array type.
31560
31561 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
31562
31563         PR target/35318
31564         * function.c (match_asm_constraints_1): Skip over
31565         initial optional % in the constraint.
31566
31567         PR inline-asm/39059
31568         * c-parser.c (c_parser_postfix_expression): If fixed point is not
31569         supported, don't accept FIXED_CSTs.
31570         * c-decl.c (finish_declspecs): Error if fixed point is not supported
31571         and _Sat is used without _Fract/_Accum.  Set specs->type to
31572         integer_type_node for cts_fract/cts_accum if fixed point is not
31573         supported.
31574
31575 2009-02-02  Catherine Moore  <clm@codesourcery.com>
31576
31577         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
31578
31579 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
31580
31581         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
31582         (ABI_HAS_64BIT_SYMBOLS): Use it.
31583         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
31584
31585 2009-02-02  Paul Brook  <paul@codesourcery.com>
31586
31587         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
31588
31589 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
31590
31591         PR inline-asm/39058
31592         * recog.h (asm_operand_ok): Add constraints argument.
31593         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
31594         recurse on matching constraint.
31595         (check_asm_operands): Pass constraints as 3rd argument to
31596         asm_operand_ok.  Don't look up matching constraint here.
31597         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
31598         to asm_operand_ok.
31599
31600 2009-02-02  Ben Elliston  <bje@au.ibm.com>
31601
31602         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
31603         TARGET_NARROW_VOLATILE_BITFIELD macro names.
31604
31605 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31606
31607         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
31608         information.  Remove some obsolete information.  Reorganize.
31609
31610         * config/pa/fptr.c: Revert license to GPL 2.
31611         * config/pa/milli64.S: Likewise.
31612
31613 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
31614
31615         PR target/38904
31616         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
31617         LIBRARY name in, instead of hard-coding it.
31618         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
31619         extra target make frag to tmake_files according to EH model.
31620         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
31621         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
31622         frags that define makefile variable EH_MODEL appropriately.
31623         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
31624         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
31625         to "-sjlj" according to type of EH configured.
31626         (LIBGCC_SONAME):  Concatenate it to shared library base name.
31627         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
31628         to "_sjlj" according to type of EH configured.
31629         (LIBGCC_SONAME):  Concatenate it to shared library base name.
31630         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
31631         (SHLIB_LINK):  Add missing semicolon to if-else construct.
31632         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
31633         string value of "pe_dll" command-line option.
31634         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
31635         (SHLIB_SONAME):  Use it when overriding t-cygming default.
31636         (SHLIB_IMPLIB):  Override t-cygming default.
31637         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
31638         string value of "pe_dll" command-line option.
31639
31640 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
31641
31642         PR target/38952
31643         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
31644         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
31645
31646 2009-01-31  Richard Guenther  <rguenther@suse.de>
31647
31648         PR tree-optimization/38937
31649         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
31650         computing the transitive closure.
31651
31652 2009-01-30  Richard Guenther  <rguenther@suse.de>
31653
31654         PR tree-optimization/39041
31655         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
31656         Propagate variable indices only if the types match for this stmt.
31657
31658 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
31659
31660         PR target/39013
31661         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
31662         inline but never defined.
31663
31664 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
31665
31666         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
31667         (*insv_h_di_reg_extimm): New insn.
31668         (*insv_l<mode>_reg_extimm): New insn.
31669
31670 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
31671
31672         * config/picochip/picochip.c (flag_conserve_stack): set
31673         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
31674         fconserve-stack. Reduce call-overhead used by inliner.
31675
31676 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
31677
31678         PR/38157
31679         * common.opt (flag_conserve_stack): Initialised to zero.
31680
31681 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
31682
31683         PR/39002
31684         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
31685         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
31686         method.
31687
31688 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
31689
31690         * ira-color.c (allocno_reload_assign): Update comments.
31691         * regmove.c (regmove_optimize): Likewise.
31692
31693         * ra.h: Removed.
31694
31695 2009-01-29  Robert Millan  <rmh@aybabtu.com>
31696
31697         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
31698         * config/i386/kopensolaris-gnu.h: New file.  Undefine
31699         `MD_UNWIND_SUPPORT'.
31700         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
31701
31702 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
31703
31704         PR tree-optimization/39007
31705         * tree-loop-distribution.c (generate_builtin): Use
31706         recompute_dominator to compute the immediate dominator of the
31707         basic block just after the loop.
31708
31709 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
31710
31711         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
31712         (ASM_OUTPUT_DWARF_PCREL): Define.
31713
31714 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
31715
31716         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
31717         * doc/passes.texi: Remove entries about regclass, local-alloc, and
31718         global.  Modify entries about regmove and IRA.
31719
31720         * ra-conflict.c: Remove the file.
31721
31722         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
31723
31724         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
31725         (pass_regclass_init): Rename to pass_reginfo_init.
31726
31727         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
31728
31729         * toplev.h (flag_ira): Remove.
31730
31731         * caller-save.c (setup_save_areas): Remove flag_ira.
31732
31733         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
31734
31735         * global.c: Remove the file.
31736
31737         * opts.c (decode_options): Remove flag_ira.
31738
31739         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
31740
31741         * regmove.c: Modify file description.
31742         (find_use_as_address, try_auto_increment): Define them only if
31743         AUTO_INC_DEC is defined.
31744         (replacement_quality, replace_in_call_usage, fixup_match_1,
31745         stable_and_no_regs_but_for_p): Remove.
31746         (reg_set_in_bb): Make it static.
31747         (regmove_optimize): Remove flag_ira and code which worked for
31748         !flag_ira.
31749
31750         * local-alloc.c: Remove the file.
31751
31752         * common.opt (fira): Remove.
31753
31754         * ira.c: Include except.h.
31755         (eliminable_regset): Move from global.c.
31756         (mark_elimination): Ditto.  Remove flag_ira.
31757         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
31758         equiv_mem_modified, validate_equiv_mem_from_store,
31759         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
31760         contains_replace_regs, memref_referenced_p, memref_used_between_p,
31761         no_equiv, recorded_label_ref): Move from local-alloc.c.
31762         (update_equiv_regs): Ditto.  Make it static.
31763         (print_insn_chain, print_insn_chains): Move it from global.c.
31764         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
31765         (build_insn_chain): Ditto.  Make it static.
31766         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
31767         Rename to init_live_subregs.
31768         (gate_ira): Remove flag_ira.
31769
31770         * regclass.c: Rename reginfo.c.  Change file description.
31771         (FORBIDDEN_INC_DEC_CLASSES): Remove.
31772         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
31773         (init_reg_sets_1): Remove code for evaluation of
31774         reg_class_superclasses and losing_caller_save_reg_set.
31775         (init_regs): Remove init_reg_autoinc.
31776         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
31777         ok_for_base_p_nonstrict): Remove.
31778         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
31779         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
31780         corresponding entries.
31781         (dump_regclass, record_operand_costs, scan_one_insn,
31782         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
31783         record_address_regs, auto_inc_dec_reg_p): Remove.
31784         (gt-regclass.h): Rename to gt-reginfo.h.
31785
31786         * rtl.h (dump_global_regs, retry_global_alloc,
31787         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
31788
31789         * Makefile.in (RA_H): Remove.
31790         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
31791         Rename regclass.o to reginfo.o.
31792         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
31793         gt-reginfo.h.
31794         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
31795         (GTFILES): Rename regclass.c to reginfo.c.
31796
31797         * passes.c (init_optimization_passes): Remove pass_local_alloc and
31798         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
31799
31800         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
31801         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
31802         Remove flag_ira.
31803         (finish_spills): Ditto.  Remove code for !flag_ira.
31804
31805 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
31806
31807         PR middle-end/35854
31808         * doc/invoke.texi (rtl debug options): Complete rewrite.
31809         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
31810         to auto_inc_dec".
31811         * mode-switching.c (pass_mode_switching): Rename pass from
31812         "mode-sw" to "mode_sw".
31813         * except.c (pass_convert_to_eh_ranges): Rename pass from
31814         "eh-ranges" to "eh_ranges".
31815         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
31816         to "subreg1".
31817
31818
31819 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
31820             Alexander Monakov  <amonakov@ispras.ru>
31821
31822         PR middle-end/38857
31823         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
31824         register.
31825         (move_exprs_to_boundary): Change return type and pass through
31826         should_move from move_op.  Relax assert.  Update usage ...
31827         (schedule_expr_on_boundary): ... here.  Use should_move instead of
31828         cant_move.
31829         (move_op_orig_expr_found): Indicate that insn was disconnected from
31830         stream.
31831         (code_motion_process_successors): Do not call after_merge_succs
31832         callback if original expression was not found when traversing any of
31833         the branches.
31834         (code_motion_path_driver): Change return type.  Update prototype.
31835         (move_op): Update comment.  Add a new parameter (should_move).  Update
31836         prototype.  Set *should_move based on indication provided by
31837         move_op_orig_expr_found.
31838
31839 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
31840
31841         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
31842         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
31843         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
31844         * config/rs6000/rs6000.c (rs6000_override_options): Default
31845         avoid-indexed-addresses on for Power6, off for everything else.
31846         (avoiding_indexed_address_p): New function.
31847         (rs6000_legitimize_address): Use it.
31848         (rs6000_legitimate_address): Likewise.
31849         * config/rs6000/rs6000.md (movXX_updateX): Likewise
31850
31851 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
31852
31853         PR tree-optimization/38997
31854         * tree-loop-distribution.c (generate_memset_zero): Use
31855         POINTER_PLUS_EXPR for a pointer addition.
31856
31857 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
31858
31859         * config/s390/s390.md (bswap<mode>2): New pattern added.
31860
31861 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31862
31863         * config/s390/s390.md (*tls_load_31): Added type attribute.
31864
31865 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31866
31867         * config/s390/s390.md: Fix a few comments.
31868
31869 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31870
31871         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
31872         (*tm<mode>_full): Fixed z10prop attribute.
31873         (*tst<mode>_extimm): Fixed z10prop attribute.
31874         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
31875         (*tstqiCCT_cconly): Fixed z10prop attribute.
31876         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
31877         (*movsi_larl): Fixed z10prop attribute.
31878         (*movsi_zarch): Fixed z10prop attribute.
31879         (*movsi_eas): Fixed z10prop attribute.
31880         (*movhi): Fixed z10prop attribute.
31881         (*movqi): Fixed z10prop attribute.
31882         (*movstrictqi): Fixed z10prop attribute.
31883         (*mov<mode>): Fixed z10prop attribute.
31884         (*movcc): Fixed z10prop attribute.
31885         (*sethighpartdi_64): Fixed z10prop attribute.
31886         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
31887         (*negdi2_sign_cc): Fixed z10prop attribute.
31888         (*negdi2_sign): Fixed z10prop attribute.
31889         (*absdi2_sign_cc): Fixed z10prop attribute.
31890         (*absdi2_sign): Fixed z10prop attribute.
31891         (*negabsdi2_sign_cc): Fixed z10prop attribute.
31892         (*negabsdi2_sign): Fixed z10prop attribute.
31893         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
31894         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
31895         (doloop_si64): Fixed z10prop attribute.
31896         (doloop_si31): Fixed z10prop attribute.
31897         (doloop_long): Fixed z10prop attribute.
31898         (indirect_jump): Fixed z10prop attribute.
31899         (nop): Fixed z10prop attribute.
31900         (main_base_64): Fixed z10prop attribute.
31901         (reload_base_64): Fixed z10prop attribute.
31902
31903 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
31904
31905         PR rtl-optimization/38740
31906         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
31907         if !optimize.
31908         * config/mips/mips.c (mips_reorg): Likewise.
31909
31910 2009-01-28  Richard Guenther  <rguenther@suse.de>
31911
31912         PR tree-optimization/38926
31913         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
31914         with the correct value id to a value.
31915         (do_regular_insertion): Use the value number of edoubleprime
31916         for the value number of the expr.
31917
31918         Revert
31919         2008-08-21  Richard Guenther  <rguenther@suse.de>
31920
31921         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
31922         a PHI ask VN if it is already available.
31923         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
31924         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
31925
31926 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
31927
31928         PR middle-end/38934
31929         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
31930         set to varying whenever max has TREE_OVERFLOW set, similarly
31931         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
31932
31933 2009-01-28  Richard Guenther  <rguenther@suse.de>
31934
31935         PR middle-end/38908
31936         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
31937         uninitialized aggregate uses in call arguments.
31938
31939 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
31940
31941         PR tree-optimization/38984
31942         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
31943         the nothing_id variable if -fno-delete-null-pointer-checks.
31944
31945 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
31946
31947         PR target/38988
31948         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
31949         (set_got_offset_rex64): Ditto.
31950
31951 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
31952
31953         PR target/38941
31954         * doc/extend.texi: Improve local variable with asm reg.
31955
31956 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
31957
31958         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
31959         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
31960         was not supplied then set warn_packed_bitfield_compat to the
31961         default value of 1.
31962         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
31963         against 1.
31964
31965 2009-01-27  Richard Guenther  <rguenther@suse.de>
31966
31967         PR tree-optimization/38503
31968         * cfgexpand.c (expand_gimple_basic_block): Ignore
31969         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
31970         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
31971         variables that cannot have TBAA applied.
31972         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
31973         statements.
31974
31975 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
31976
31977         PR middle-end/38969
31978         * calls.c (initialize_argument_information): Do not wrap complex
31979         arguments in SAVE_EXPR.
31980
31981 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
31982
31983         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
31984         (INSTALL_LIBGCC): Revert typo commit.
31985
31986 2009-01-26  Richard Guenther  <rguenther@suse.de>
31987
31988         PR tree-optimization/38745
31989         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
31990         from special handling.
31991
31992 2009-01-26  Richard Guenther  <rguenther@suse.de>
31993
31994         PR tree-optimization/38745
31995         * tree-ssa.c (execute_update_addresses_taken): Do not include
31996         variables that cannot possibly be a register in not_reg_needs.
31997         Do not clear TREE_ADDRESSABLE on vars that may not become
31998         registers.
31999         * tree-ssa.c (update_alias_info_1): Include those in the set
32000         of addressable vars.
32001
32002 2009-01-26  Richard Guenther  <rguenther@suse.de>
32003
32004         PR middle-end/38851
32005         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
32006         * tree-ssa-dse.c: Include langhooks.h
32007         (execute_simple_dse): Remove stores with zero size.
32008
32009 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
32010
32011         PR c/38957
32012         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
32013         as PLUS_EXPR.
32014
32015 2009-01-24  Julian Brown  <julian@codesourcery.com>
32016
32017         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
32018         config/arm/linux-atomic.c.
32019         * config/arm/linux-atomic.c: New.
32020
32021 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
32022
32023         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
32024         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
32025         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
32026
32027 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
32028
32029         PR c/38938
32030         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
32031         properly.
32032
32033 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
32034
32035         PR tree-optimization/38953
32036         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
32037         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
32038         (gloog): Split the exit of the scop when the scop exit is a loop exit.
32039         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
32040         changed the CFG.
32041
32042 2009-01-24  Paul Brook  <paul@codesourcery.com>
32043
32044         * config/arm/neon.md (neon_type): Move to arm.md.
32045         (neon_mov<VSTRUCT>): Add neon_type attribute.
32046         * config/arm/arm.md (neon_type): Move to here.
32047         (conds): Add "unconditioal" and use as default for NEON insns.
32048
32049 2009-01-24  Ben Elliston  <bje@au.ibm.com>
32050
32051         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
32052         void *' warning from -Wc++-compat.
32053         * Makefile.in (dominance.o-warn): Remove.
32054
32055 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
32056
32057         PR tree-optimization/38932
32058         * fold-const.c (fold_unary_ignore_overflow): New.
32059         * tree.h (fold_unary_ignore_overflow): Declare.
32060         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
32061         * tree-ssa-sccvn.c (visit_reference_op_load,
32062         simplify_unary_expression): Likewise.
32063
32064 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
32065
32066         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
32067         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
32068         regardless of their type.
32069         * c-common.c (handle_packed_attribute): Don't ignore packed on
32070         bitfields.
32071         * c.opt (Wpacked-bitfield-compat): New warning option.
32072         * stor-layout.c (place_field): Warn if offset of a field changed.
32073         * doc/extend.texi (packed): Mention the ABI change.
32074         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
32075         (Warning Options): Add it to the list.
32076
32077 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
32078
32079         * c-opts.c (c_common_post_options): Fix a typo in comments.
32080
32081 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
32082
32083         PR middle-end/38615
32084         * gimplify.c (gimplify_init_constructor): Fix promotion of const
32085         variables to static.
32086         * doc/invoke.texi (-fmerge-all-constants): Update description.
32087
32088 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
32089
32090         PR target/38931
32091         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
32092         (*movdi_1_rex64): Use type "mmx" for alternative 5.
32093
32094 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
32095
32096         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
32097         a word boundary.
32098         (LOCAL_ALIGNMENT): Similarly.
32099
32100 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
32101             Joseph Myers  <joseph@codesourcery.com>
32102
32103         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
32104         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
32105         * config/arm/arm-tune.md: Regenerate.
32106         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
32107         -march=iwmmxt2.
32108
32109 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
32110
32111         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
32112         version number to five.
32113
32114 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
32115
32116         PR c++/38930
32117         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
32118         * c-common.c (set_underlying_type): Likewise.
32119         (is_typedef_decl ): Likewise
32120         * tree.h: Likewise
32121         (set_underlying_type): Likewise.
32122         (is_typedef_type): Likewise.
32123
32124 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
32125
32126         PR middle-end/38587
32127         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
32128         crossing setjmps.
32129
32130 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
32131
32132         PR bootstrap/37660
32133         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
32134         (LIBGCC_SPEC):  Don't define.
32135         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
32136
32137 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
32138
32139         PR rtl-optimization/38879
32140         * alias.c (base_alias_check): Unaligned access via AND address can
32141         alias all surrounding object types except those with sizes equal
32142         or wider than the size of unaligned access.
32143
32144 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
32145
32146         PR c++/26693
32147         * c-decl.c (clone_underlying_type): Move this ...
32148         * c-common.c (set_underlying_type): ... here.
32149         Also, make sure the function properly sets TYPE_STUB_DECL() on
32150         the newly created typedef variant type.
32151         (is_typedef_decl ): New entry point.
32152         * tree.h: Added a new member member_types_needing_access_check to
32153         struct tree_decl_non_common.
32154         (set_underlying_type): New entry point.
32155         (is_typedef_type): Likewise.
32156
32157 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
32158
32159         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
32160         Check whether two instructions have memory references that
32161         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
32162         are helper functions for traversing.
32163         * alias.h (insn_alias_sets_confilict_p): New prototypes.
32164         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
32165         not to draw dependency edge for instructions with non-conflicting
32166         alias sets.
32167
32168 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
32169
32170         PR other/38758
32171         * longlong.h: Update copyright years.  Use soft-fp license notice.
32172         Sync __clz_tab declaration with glibc.
32173
32174 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
32175
32176         PR target/30687
32177         * doc/extend.texi (syscall_linkage): New.
32178         (version_id): Modify.
32179
32180 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32181             Richard Guenther  <rguenther@suse.de>
32182
32183         PR tree-optimization/38747
32184         PR tree-optimization/38748
32185         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
32186         conversion if the base address is an indirect reference and the
32187         aliasing sets could cause issues.
32188
32189 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
32190
32191         * common.opt (fgraphite, fgraphite-identity): Add comment for
32192         explaining why these options are not documented.
32193
32194 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
32195
32196         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
32197         gimple_call_lhs is NULL.
32198
32199 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
32200
32201         PR target/38868
32202         * emit-rtl.c (adjust_address_1): Make sure memref is never
32203         overwritten.
32204
32205 2009-01-20  Ben Elliston  <bje@au.ibm.com>
32206
32207         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
32208         const qualifier from arg parameter. Remove unnecessary cast to char *.
32209         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
32210         const qualifier from arg 2.
32211
32212 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
32213
32214         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
32215
32216 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
32217
32218         PR c/38869
32219         * rtl.h (reinit_regs): New prototype.
32220         * regclass.c: Include ira.h.
32221         (reinit_regs): New.
32222         * Makefile.in (regclass.o): Add ira.h.
32223         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
32224
32225 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
32226
32227         PR target/38736
32228         * c-common.c (handle_aligned_attribute): Use
32229         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
32230         default alignment value.
32231
32232         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
32233
32234         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
32235         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
32236
32237         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
32238         __BIGGEST_ALIGNMENT__.
32239
32240         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
32241
32242 2009-01-18  Richard Guenther  <rguenther@suse.de>
32243
32244         PR tree-optimization/38819
32245         * tree-flow.h (operation_could_trap_helper_p): Declare.
32246         * tree-eh.c (operation_could_trap_helper_p): Export.
32247         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
32248         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
32249         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
32250         are about to insert a possibly trapping instruction and fail
32251         in this case.
32252
32253 2009-01-18  Andreas Schwab  <schwab@suse.de>
32254
32255         * doc/install.texi (Configuration): Remove obsolete paragraph
32256         about use of --with-gnu-ld with --with-gnu-as.
32257
32258 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
32259
32260         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
32261         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
32262         Follow spelling conventions.
32263
32264 2009-01-18  Ben Elliston  <bje@au.ibm.com>
32265
32266         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
32267         C++ warning about implicit conversion from void * to struct
32268         bitmap_head_def *.
32269         (bitmap_obstack_free): Likewise for bitmap_element *.
32270         * Makefile.in (bitmap.o-warn): Remove.
32271
32272 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
32273
32274         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
32275
32276 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
32277             Tobias Grosser  <tobi.grosser@amd.com>
32278
32279         * graphite.c (graphite_trans_scop_block): Do not block single
32280         nested loops.
32281
32282 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
32283
32284         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
32285         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
32286         test with assertion.
32287
32288 2009-01-16  Richard Guenther  <rguenther@suse.de>
32289
32290         PR tree-optimization/38835
32291         PR middle-end/36227
32292         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
32293         and INT + PTR -> (INT)(PTR p+ INT) folding.
32294         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
32295
32296 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
32297
32298         PR target/38554
32299         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
32300         the subreg from a lowpart subreg if it is also casting the value.
32301
32302 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
32303             Tobias Grosser  <tobi.grosser@amd.com>
32304
32305         * graphite.c (compare_prefix_loops): New.
32306         (build_scop_canonical_schedules): Rewritten.
32307         (graphite_transform_loops): Move build_scop_canonical_schedules
32308         after build_scop_iteration_domain.
32309
32310 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
32311             Tobias Grosser  <tobi.grosser@amd.com>
32312
32313         * graphite.c (add_conditions_to_domain): Add the loops to
32314         the dimension of the iteration domain.  Do copy the domain
32315         only when it exists.
32316         (build_scop_conditions_1): Do not call add_conditions_to_domain.
32317         (add_conditions_to_constraints): New.
32318         (can_generate_code_stmt, can_generate_code): Removed.
32319         (gloog): Do not call can_generate_code.
32320         (graphite_transform_loops): Call add_conditions_to_constraints
32321         after building the iteration domain.
32322
32323 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
32324
32325         PR tree-optimization/38789
32326         * tree-ssa-threadedge.c
32327         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
32328         __builtin_constant_p.
32329
32330 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
32331
32332         * dce.c (delete_unmarked_insns): Reversed the order that insns are
32333         examined before deleting them.
32334
32335 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
32336
32337         * function.c (aggregate_value_p): Correctly extract the function
32338         type from CALL_EXPR_FN lookup.
32339
32340 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
32341
32342         * config/picochip/picochip.c (picochip_override_options): Revert
32343         CFI asm flag disable commited previously.
32344
32345 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
32346             Tobias Grosser  <tobi.grosser@amd.com>
32347             Jan Sjodin  <jan.sjodin@amd.com>
32348
32349         * graphite.c (scan_tree_for_params): On substractions negate
32350         all the coefficients of the term.
32351         (clast_to_gcc_expression_red): New.  Handle reduction expressions
32352         of more than two operands.
32353         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
32354         (get_vdef_before_scop): Handle also the case of default definitions.
32355
32356 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
32357
32358         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
32359         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
32360         Also use them when walking CALL_INSN_FUNCTION_USAGE.
32361
32362 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
32363             Joey Ye  <joey.ye@intel.com>
32364
32365         PR middle-end/37843
32366         * cfgexpand.c (expand_stack_alignment): Don't update stack
32367         boundary nor check incoming stack boundary here.
32368         (gimple_expand_cfg): Update stack boundary and check incoming
32369         stack boundary here.
32370
32371 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
32372
32373         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
32374
32375 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
32376
32377         PR rtl-optimization/38245
32378         * calls.c (expand_call): Add stack arguments to
32379         CALL_INSN_FUNCTION_USAGE even for pure calls (when
32380         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
32381         in regs and partially in memory or BLKmode arguments.
32382         (emit_library_call_value_1): Add stack arguments to
32383         CALL_INSN_FUNCTION_USAGE even for pure calls (when
32384         ACCUMULATE_OUTGOING_ARGS).
32385         * dce.c: Include tm_p.h.
32386         (find_call_stack_args): New function.
32387         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
32388         argument.
32389         (mark_insn): Call find_call_stack_args for CALL_Ps.
32390         (prescan_insns_for_dce): Walk insns backwards in bb rather than
32391         forwards.  Allocate and free arg_stores bitmap if needed, pass it
32392         down to deletable_insn_p, don't mark stores set in arg_stores
32393         bitmap, clear the bitmap at the beginning of each bb.
32394         * Makefile.in (dce.o): Depend on $(TM_P_H).
32395
32396 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
32397
32398         PR target/22599
32399         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
32400         to make sure the insn is a conditional test (bug 22599).  Reformat a
32401         few long lines.
32402
32403 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
32404
32405         PR middle-end/38431
32406         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
32407         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
32408         (gloog): Do not call cleanup_tree_cfg.
32409         (graphite_transform_loops): Call cleanup_tree_cfg after all
32410         scops have been code generated.
32411
32412 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
32413         * doc/gty.texi (Invoking the garbage collector): Added new node
32414         and section documenting ggc_collect.
32415
32416 2009-01-14  Richard Guenther  <rguenther@suse.de>
32417
32418         PR tree-optimization/38826
32419         PR middle-end/38477
32420         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
32421         initialization notes only if we actually emitted a warning.
32422         (intra_create_variable_infos): Add constraints for a result decl
32423         that is passed by hidden reference.
32424         (build_pred_graph): Mark all related variables non-direct on
32425         address-taking.
32426
32427 2009-01-14  Nick Clifton  <nickc@redhat.com>
32428
32429         * ira-conflicts.c: Include addresses.h for the definition of
32430         base_reg_class.
32431         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
32432         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
32433
32434 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
32435
32436         PR target/38811
32437         * Makefile.in (ira-lives.o): Add except.h.
32438
32439         * ira-lives.c: Include except.h.
32440         (process_bb_node_lives): Process can_throw_internal.
32441
32442 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
32443
32444         PR rtl-optimization/38774
32445         * combine.c (simplify_set): When undoing cc_use change, don't do
32446         PUT_CODE on the newly created comparison, but instead put back the
32447         old comparison.
32448
32449 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
32450
32451         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
32452         values.  Remove duplicate arm8 entry.
32453
32454 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
32455
32456         PR tree-optimization/38786
32457         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
32458         the SSA_NAME case of expand_scalar_variables_expr.
32459         Set the type of an expression to the type of its assign statement.
32460         (expand_scalar_variables_expr): Also gather the scalar computation
32461         used to index the memory access.  Do not pass loop_p.
32462         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
32463         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
32464         the gimple_stmt_iterator where it inserts new code.
32465         Do not pass loop_p.
32466         (copy_bb_and_scalar_dependences): Do not pass loop_p.
32467         (translate_clast): Update call to copy_bb_and_scalar_dependences.
32468
32469 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
32470
32471         * graphite.h (debug_value): Removed.
32472         * graphite.c (debug_value): Removed.
32473
32474 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
32475
32476         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
32477         ldrd/strd with two 32-bit instructions.
32478
32479 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
32480
32481         * config/arm/arm.c (struct processors): Pass for speed down into
32482         cost helper functions.
32483         (const_ok_for_op): Handle COMPARE and inequality nodes.
32484         (arm_rtx_costs_1): Rewrite.
32485         (arm_size_rtx_costs): Update prototype.
32486         (arm_rtx_costs): Pass speed down to helper functions.
32487         (arm_slowmul_rtx_costs): Rework cost calculations.
32488         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
32489         (arm_9e_rtx_costs): Likewise.
32490
32491 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
32492
32493         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
32494         relocations of local symbols wider than UNITS_PER_WORD are not valid.
32495         (alpha_legitimize_address): Do not split local symbols wider than
32496         UNITS_PER_WORD into HIGH/LO_SUM parts.
32497
32498 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
32499
32500         PR bootstrap/38580
32501         * gcc.c (process_command): Replace call to execvp with calls
32502         to pex_one and exit.
32503
32504 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
32505
32506         PR target/29141
32507         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
32508         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
32509         variant for devices with 3-byte PC.
32510         (__tablejump_elpm__): New.
32511
32512 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
32513
32514         PR c/32041
32515         * c-parser.c (c_parser_postfix_expression): Allow `->' in
32516         offsetof member-designator, handle it as `[0].'.
32517
32518 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32519
32520         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
32521         function when not using named sections on targets with named sections
32522         if branch distance is less than 262132.
32523
32524 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
32525
32526         * combine.c (combine_instructions):  Recompute
32527         optimize_this_for_speed_p  for each BB in the main combine loop.
32528
32529 2009-01-12  Tomas Bily  <tbily@suse.cz>
32530
32531         PR middlend/38385
32532         * tree-loop-distribution.c (prop_phis): New function.
32533         (generate_builtin): Call prop_phis.
32534
32535 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
32536
32537         PR tree-optimization/38807
32538         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
32539         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
32540
32541 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
32542
32543         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
32544         subreg of op0 to the original op0.
32545
32546 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
32547
32548         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
32549
32550 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
32551
32552         PR debug/7055
32553         * mips-tfile.c (parse_def): Fix parsing of def strings
32554         starting with digits.
32555
32556 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
32557
32558         PR target/38695
32559         * config/arm/arm.c (arm_is_long_call_p): Don't call
32560         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
32561
32562 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
32563
32564         * regrename.c (regrename_optimize): Fix dumping.
32565         (find_oldest_value_reg): Preserve REG_POINTER.
32566         (copy_hardreg_forward_1): Likewise.
32567
32568 2009-01-09  Diego Novillo  <dnovillo@google.com>
32569
32570         * gimple.h (struct gimple_statement_base) <uid>: Document
32571         the restrictions on its use.
32572         (gimple_uid): Tidy.
32573         (gimple_set_uid): Tidy.
32574
32575 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
32576
32577         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
32578         zero guard even if align_bytes != 0 and count is smaller than
32579         size_needed.
32580
32581 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
32582
32583         PR rtl-optimization/38495
32584         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
32585         (add_range_and_copies_from_move_list): Print all added ranges.
32586         Add ranges to memory optimized destination.
32587
32588 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
32589
32590         PR target/38686
32591         PR target/38708
32592         * config/i386/i386.c (override_options): Reject
32593         -mstringop-strategy=rep_8byte with -m32.
32594         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
32595         to 1.  Do count comparison against epilogue_size_needed at compile
32596         time even when count_exp was constant forced into register.  For
32597         size_needed don't jump to epilogue, instead just avoid aligning
32598         and invoke the body algorithm.  If need_zero_guard, add zero guard
32599         even if count is non-zero, but smaller than size_needed + number of
32600         bytes that could be stored for alignment.
32601         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
32602         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
32603         but smaller than size_needed + number of bytes that could be stored
32604         for alignment.  Compare size_needed with epilogue_size_needed instead
32605         of desired_align - align, don't adjust size_needed, pass
32606         epilogue_size_needed to the epilogue expanders.
32607
32608         PR c/35742
32609         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
32610
32611 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32612
32613         * pa.c (last_address): Change to unsigned.
32614         (update_total_code_bytes): Change argument to unsigned.  Don't
32615         check if insn addresses are set.
32616         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
32617         addresses are not set.
32618         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
32619
32620 2009-01-09  Nick Clifton  <nickc@redhat.com>
32621
32622         * config/sh/symbian.c: Replace uses of DECL_INLINE with
32623         DECL_DECLARED_INLINE_P.
32624
32625 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
32626
32627         PR middle-end/38347
32628         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
32629         GET_MODE (op0) in operand_subword_force calls.
32630
32631         PR middle-end/38771
32632         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
32633         fold_convert arg0 operands to TREE_TYPE (op0) first.
32634
32635 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
32636
32637         * params.def (ira-max-conflict-table-size): Decrease default value
32638         to 1000.
32639
32640 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
32641
32642         PR tree-optimization/37031
32643         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
32644         on parameter_set.
32645         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
32646         allocate it using gc instead of heap, use VEC_quick_push instead of
32647         VEC_safe_push.
32648         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
32649         instead of heap, use VEC_quick_push instead of VEC_safe_push.
32650         * tree-data-ref.h (struct access_matrix): Change matrix to gc
32651         allocated vector from heap allocated.
32652         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
32653         * tree-loop-linear.c (linear_transform_loops): Allocate nest
32654         vector only after perfect_loop_nest_depth call.
32655
32656 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
32657             Jan Sjodin  <jan.sjodin@amd.com>
32658
32659         PR tree-optimization/38559
32660         * graphite.c (debug_value, copy_constraint,
32661         swap_constraint_variables, scale_constraint_variable, ): New.
32662         (get_lower_bound, get_upper_bound): Removed.
32663         (graphite_trans_bb_strip_mine): Clean up this code that works
32664         only for constant number of iterations.  Fully copy upper and
32665         lower bound constraints, not only the constant part of them.
32666         * graphite.h (debug_value): Declared.
32667
32668 2009-01-08  Ira Rosen  <irar@il.ibm.com>
32669
32670         PR tree-optimization/37194
32671         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
32672         Don't add the cost of cost model guard in prologue to scalar
32673         outside cost in case of known number of iterations.
32674
32675 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
32676             Alan Modra  <amodra@bigpond.net.au>
32677
32678         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
32679         non-word-aligned REG+CONST addressing.
32680
32681 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
32682
32683         PR target/38706
32684         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
32685         free_after_compilation when outputting a thunk.
32686         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
32687         Do not call free_after_compilation here.
32688
32689 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
32690
32691         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
32692         (ix86_valid_target_attribute_inner_p): Ditto.
32693
32694 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
32695
32696         PR tree-optimization/38492
32697         PR tree-optimization/38498
32698         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
32699         * tree-chrec.h (scev_is_linear_expression): Declared.
32700         * graphite.c (graphite_cannot_represent_loop_niter): New.
32701         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
32702         (graphite_loop_normal_form): Use gcc_assert.
32703         (scan_tree_for_params): Use CASE_CONVERT.
32704         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
32705         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
32706         Use gcc_assert.  Discard scops that contain unhandled cases.
32707         (build_scop_conditions): Return a boolean status for unhandled cases.
32708         (strip_mine_profitable_p): Print the loop number, not its depth.
32709         (is_interchange_valid): Pass the depth of the loop nest, don't
32710         recompute it wrongly.
32711         (graphite_trans_bb_block): Same.
32712         (graphite_trans_bb_block): Print tentative of loop blocking.
32713         (graphite_trans_scop_block): Do not print that the loop has been
32714         blocked.
32715         (graphite_transform_loops): Do not handle scops that contain condition
32716         scalar phi nodes.
32717
32718 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
32719
32720         AVX Programming Reference (December, 2008)
32721         * config/i386/avxintrin.h (_mm256_stream_si256): New.
32722         (_mm256_stream_pd): Likewise.
32723         (_mm256_stream_ps): Likewise.
32724
32725         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
32726         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
32727         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
32728         (bdesc_special_args): Add __builtin_ia32_movntdq256,
32729         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
32730         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
32731         (ix86_expand_special_args_builtin): Likewise.
32732
32733         * config/i386/sse.md (AVXMODEDI): New.
32734         (avx_movnt<mode>): Likewise.
32735         (avx_movnt<mode>): Likewise.
32736         (<sse>_movnt<mode>): Remove AVX support.
32737         (sse2_movntv2di): Likewise.
32738
32739 2009-01-07  Richard Guenther  <rguenther@suse.de>
32740
32741         PR middle-end/38751
32742         * fold-const.c (extract_muldiv): Remove obsolete comment.
32743         (fold_plusminus_mult_expr): Undo MINUS_EXPR
32744         to PLUS_EXPR canonicalization for the canonicalization.
32745
32746 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
32747
32748         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
32749         hosted cross-compilers generating less efficient code.
32750
32751 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
32752
32753         * function.h (rtl_data): Add a dbr_scheduled_p field.
32754         * reorg.c (dbr_schedule): Set it.
32755         (gate_handle_delay_slots): Check it.
32756         * config/mips/mips.c (mips_base_delayed_branch): Delete.
32757         (mips_reorg): Check flag_delayed_branch instead of
32758         mips_base_delayed_branch.
32759         (mips_override_options): Don't set mips_base_delayed_branch
32760         or flag_delayed_branch.
32761
32762 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
32763
32764         PR rtl-optimization/38426.
32765         * ira.c (ira): Set current_function_is_leaf earlier.
32766
32767 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
32768
32769         PR rtl-optimization/38722
32770         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
32771         too early, only set a flag and modify after last possible
32772         undo_all point.
32773
32774 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
32775
32776         PR c/34252
32777         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
32778         * real.c (decimal_single_format): Correct values of emin and emax.
32779         (decimal_double_format): Ditto.
32780         (decimal_quad_format): Ditto.
32781         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
32782         computation of DECnn_MIN and DECnn_MAX for corrected values of
32783         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
32784         __DECnn_MIN__, and adjust its computation for the corrected value
32785         of emin.
32786
32787 2009-01-06  Jan Hubicka  <jh@suse.cz>
32788
32789         PR target/38744
32790         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
32791
32792 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
32793
32794         * doc/contrib.texi (Contributors): Slightly adjust the end note.
32795         Add Robert Clark to the list of testers.
32796
32797 2009-01-06  Jan Hubicka  <jh@suse.cz>
32798             Kai Tietz  <kai.tietz@onevision.com>
32799
32800         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
32801         * config/i386/i386.c (ix86_expand_call): Add clobbers.
32802
32803 2009-01-06  Jan Hubicka  <jh@suse.cz>
32804             Kai Tietz  <kai.tietz@onevision.com>
32805
32806         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
32807         for w64 ABI.
32808         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
32809         (ix86_nsaved_regs): Count only general purpose regs.
32810         (ix86_nsaved_sseregs): New.
32811         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
32812         to 16 for w64; compute padding and size of sse reg save area.
32813         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
32814         general purpose regs.
32815         (ix86_emit_save_sse_regs_using_mov): New.
32816         (ix86_expand_prologue): Save SSE regs if needed.
32817         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
32818         (ix86_emit_restore_sse_regs_using_mov): New.
32819         (ix86_expand_epilogue): Save SSE regs if needed.
32820
32821 2009-01-06  Jan Hubicka  <jh@suse.cz>
32822             Kai Tietz  <kai.tietz@onevision.com>
32823
32824         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
32825         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
32826         functions when accumulate outgoing args is off.
32827
32828 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
32829
32830         PR bootstrap/38742
32831         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
32832         before using pseudos_have_intersected_live_ranges_p.
32833
32834         * ira-int.h (ira_assert): Always define.
32835
32836 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
32837
32838         AVX Programming Reference (December, 2008)
32839         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
32840         (_mm256_permute2_pd): Likewise.
32841         (_mm_permute2_ps): Likewise.
32842         (_mm256_permute2_ps): Likewise.
32843         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
32844         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
32845
32846         * config/i386/i386.c (ix86_builtins): Remove
32847         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
32848         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
32849         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
32850         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
32851         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
32852         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
32853         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
32854         __builtin_ia32_vpermil2ps256.
32855         (ix86_init_mmx_sse_builtins): Updated.
32856         (ix86_expand_args_builtin): Likewise.
32857
32858 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32859
32860         * pa.c (output_call): Relocate non-jump insns in the delay slot of
32861         long absolute calls when generating PA 2.0 code.
32862
32863 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
32864
32865         PR rtl-optimization/38583
32866         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
32867
32868         * params.def (ira-max-conflict-table-size): New.
32869
32870         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
32871
32872         * ira.h (ira_conflicts_p): New external definition.
32873
32874         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
32875         table.  Report this.  Return result of building.
32876         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
32877         building conflict table.
32878
32879         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
32880         (ira_color): Use ira_conflicts_p.
32881
32882         * global.c: Include ira.h.
32883         (pseudo_for_reload_consideration_p, build_insn_chain): Use
32884         ira_conflicts_p.
32885
32886         * Makefile.in (global.o): Add ira.h.
32887
32888         * ira-build.c (mark_all_loops_for_removal,
32889         propagate_some_info_from_allocno): New.
32890         (remove_unnecessary_allocnos): Call
32891         propagate_some_info_from_allocno.
32892         (remove_low_level_allocnos): New.
32893         (remove_unnecessary_regions): Add parameter.  Call
32894         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
32895         parameter to remove_unnecessary_regions.
32896         (ira_build): Remove all regions but root if the conflict table was
32897         not built.  Update conflict hard regs for allocnos crossing calls.
32898
32899         * ira.c (ira_conflicts_p): New global.
32900         (ira): Define and use ira_conflicts_p.
32901
32902         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
32903         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
32904         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
32905
32906 2009-01-06  Ben Elliston  <bje@au.ibm.com>
32907
32908         * gengtype-lex.l (YY_NO_INPUT): Define.
32909
32910 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32911
32912         PR c/34911
32913         * c-common.c (handle_vector_size_attribute): Also reject
32914         BOOLEAN_TYPE types.
32915
32916 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
32917
32918         PR tree-optimization/38492
32919         * graphite.c (rename_map_elt, debug_rename_elt,
32920         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
32921         rename_map_elt_info, eq_rename_map_elts,
32922         get_new_name_from_old_name, bb_in_sese_p): Moved around.
32923         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
32924         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
32925         (sese_build_livein_liveouts): New.
32926         (new_sese, free_sese): New.
32927         (new_scop): Call new_sese.
32928         (free_scop): Call free_sese.
32929         (rename_variables_from_edge, rename_phis_end_scop): Removed.
32930         (register_old_new_names): Renamed register_old_and_new_names.
32931         (register_scop_liveout_renames, add_loop_exit_phis,
32932         insert_loop_close_phis, struct igp,
32933         default_liveout_before_guard, add_guard_exit_phis,
32934         insert_guard_phis, copy_renames): New.
32935         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
32936         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
32937         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
32938         (scop_adjust_phis_for_liveouts): New.
32939         (gloog): Call scop_adjust_phis_for_liveouts.
32940
32941         * graphite.h (struct sese): Documented.  Added fields liveout,
32942         num_ver and livein.
32943         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
32944         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
32945         (struct scop): Added field liveout_renames.
32946         (SCOP_LIVEOUT_RENAMES): New.
32947
32948 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
32949
32950         PR tree-optimization/38510
32951         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
32952         (translate_clast): Call recompute_all_dominators before
32953         graphite_verify.
32954         (gloog): Call recompute_all_dominators before graphite_verify.
32955
32956 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
32957             Jan Sjodin  <jan.sjodin@amd.com>
32958
32959         PR tree-optimization/38500
32960         * graphite.c (create_sese_edges): Call fix_loop_structure after
32961         splitting blocks.
32962
32963 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
32964
32965         * config.gcc: Add m32r*-*-rtems*.
32966         * config/m32r/rtems.h: New file.
32967
32968 2009-01-05  Ben Elliston  <bje@au.ibm.com>
32969
32970         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
32971         (.po.pox): Likewise.
32972         (po/gcc.pot): Likewise.
32973
32974 2009-01-04  David S. Miller  <davem@davemloft.net>
32975
32976         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
32977         (STARTING_FRAME_OFFSET): Always set to zero.
32978
32979 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
32980
32981         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
32982         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
32983         fixed-point types, and vectors of the same.
32984
32985 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
32986
32987         * config/mips/sync.md (*mb_barrier): Rename to...
32988         (*memory_barrier): ...this.
32989
32990 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
32991
32992         * doc/extend.texi (Function Attributes): Move @cindex after @item
32993         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
32994         and put in alphabetical order. Fix 'target' name and put in order.
32995         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
32996         typos.
32997
32998 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
32999
33000         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
33001         (memory_barrier): Expand as unspec instead of unspec_volatile.
33002         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33003         (*memory_barrier): Define as unspec instead of unspec_volatile.
33004         Use (match_dup 0) as input operand.
33005
33006         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
33007         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
33008         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
33009         scratch register.  Remove operand 1.
33010         (*stbar): Define as unspec instead of unspec_volatile.
33011         Use (match_dup 0) as input operand, remove (const_int 8).
33012         (*membar): Define as unspec instead of unspec_volatile.
33013         Use (match_dup 0) as input operand, remove input operand 2.
33014
33015         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
33016         (memory_barrier): Expand as unspec instead of unspec_volatile.
33017         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33018         (*memory_barrier): Define as unspec instead of unspec_volatile.
33019         Use (match_dup 0) as input operand.
33020
33021         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
33022         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33023         Set volatile flag on operand 0.
33024         (*memory_barrier): New insn pattern.
33025
33026         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
33027         insn operands.
33028         (*memory_barrier): Use (match_dup 0) as input operand.
33029
33030         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
33031         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33032         Set volatile flag on operand 0.
33033         (*mb_internal): New insn pattern.
33034
33035         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
33036
33037 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
33038
33039         PR middle-end/38586
33040         * function.c (struct temp_slot): Move to the section of the file
33041         that deals with temp slots.  Remove field 'address'.
33042         (temp_slot_address_table): New hash table of address -> temp slot.
33043         (struct temp_slot_address_entry): New struct, items for the table.
33044         (temp_slot_address_compute_hash, temp_slot_address_hash,
33045         temp_slot_address_eq, insert_temp_slot_address): Support functions
33046         for the new table.
33047         (find_temp_slot_from_address): Rewrite to use the new hash table.
33048         (remove_unused_temp_slot_addresses): Remove addresses of temp
33049         slots that have been made available.
33050         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
33051         worker function for remove_unused_temp_slot_addresses.
33052         (assign_stack_temp_for_type): Don't clear the temp slot address list.
33053         Add the temp slot address to the address -> temp slot map.
33054         (update_temp_slot_address): Update via insert_temp_slot_address.
33055         (free_temp_slots): Call remove_unused_temp_slot_addresses.
33056         (pop_temp_slots): Likewise.
33057         (init_temp_slots): Allocate the address -> temp slot map, or empty
33058         the map if it is already allocated.
33059         (prepare_function_start): Initialize temp slot processing.
33060
33061 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
33062
33063         PR middle-end/38584
33064         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
33065         Calculate the size of all stack vars assuming no packing of stack
33066         vars will happen, replacing a quadratic algorithm with a linear one.
33067
33068 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
33069
33070         PR target/38707
33071         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
33072         can't be used.
33073
33074 2009-01-03  Diego Novillo  <dnovillo@google.com>
33075
33076         * doc/contrib.texi: Update contributions.
33077
33078 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
33079
33080         PR c++/38705
33081         * builtins.c (fold_builtin_memory_op): Give up if either operand
33082         is volatile.  Set srctype or desttype to non-qualified version
33083         of the other type.
33084
33085         PR c/38700
33086         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
33087         and FUNCTION_DECLs.
33088
33089 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
33090
33091         PR rtl-optimization/35805
33092         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
33093         problem if fast dce is able to remove any instructions.
33094         * dce.c (dce_process_block): Fix dump message.
33095
33096 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
33097
33098         PR 33649
33099         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
33100
33101 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
33102
33103         PR middle-end/38690
33104         * tree-flow.h (op_code_prio, op_prio): New prototypes.
33105         * tree-pretty-print.c (op_code_prio): New function.
33106         (op_prio): No longer static.  Use op_code_prio.
33107         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
33108         Use op_prio and op_code_prio to determine if () should be
33109         printed around operand(s) or not.
33110
33111         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
33112         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
33113         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
33114         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
33115         pp_character instead of pp_string for single letter printing.
33116
33117 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
33118
33119         * doc/extend.texi: Fix '#pragma GCC option' typo.
33120
33121 2009-01-02  Richard Guenther  <rguenther@suse.de>
33122
33123         * doc/install.texi (--enable-checking): Mention different
33124         default for stage1.
33125         (--enable-stage1-checking): Document.
33126
33127 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
33128
33129         PR middle-end/30142
33130         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
33131         case to be an error.
33132
33133 2009-01-02  Ben Elliston  <bje@au.ibm.com>
33134
33135         * config/fp-bit.h (pack_d): Constify argument.
33136         * config/fp-bit.c (makenan): Constify return type. Remove casts.
33137         (isnan): Constify argument.
33138         (isinf): Likewise.
33139         (iszero): Likewise.
33140         (pack_d): Likewise.
33141         (_fpadd_parts): Constify return type.
33142         (_fpmul_parts): Likewise.
33143         (_fpdiv_parts): Likewise.
33144
33145 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
33146
33147         PR c/36489
33148         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
33149         warn about overwriting initializer with side-effects or
33150         -Woverride-init if !IMPLICIT.
33151         (output_init_element): Likewise.  Pass IMPLICIT down to
33152         add_pending_init.
33153         (process_init_element): Add IMPLICIT argument.  Pass it down
33154         to output_init_element.
33155         (push_init_element, pop_init_level, set_designator): Adjust
33156         process_init_element callers.
33157         (set_nonincremental_init, set_nonincremental_init_from_string):
33158         Adjust add_pending_init callers.
33159         (output_pending_init_elements): Adjust output_init_element callers.
33160         * c-tree.h (process_init_element): Adjust prototype.
33161         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
33162         process_init_element callers.
33163
33164 \f
33165 Copyright (C) 2009 Free Software Foundation, Inc.
33166
33167 Copying and distribution of this file, with or without modification,
33168 are permitted in any medium without royalty provided the copyright
33169 notice and this notice are preserved.